/*
- Copyright (C) 2002 Paul Davis
+ Copyright (C) 2002 Paul Davis
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
$Id$
*/
-
+#ifndef COMPILER_MSVC
#include <cstdio>
#include <cstring>
#include <string>
#include <cstring>
#include <limits.h>
-#include <pbd/mountpoint.h>
+#include "pbd/mountpoint.h"
using std::string;
-#if HAVE_GETMNTENT
+#ifdef WAF_BUILD
+#include "libpbd-config.h"
+#endif
+
+#ifdef HAVE_GETMNTENT
#include <mntent.h>
struct mntent_sorter {
unsigned int matchlen;
const char *cpath = path.c_str();
char best[PATH_MAX+1];
-
+
if ((mntf = setmntent ("/etc/mtab", "r")) == 0) {
return "";
}
n = 0;
matchlen = 0;
- /* note: strcmp's semantics are not
+ /* note: strcmp's semantics are not
strict enough to use for this.
*/
return best;
}
+#elif defined(PLATFORM_WINDOWS)
+#include <assert.h>
+string
+mountpoint (string path)
+{
+ /* this function is currently only called from 'old_peak_path()'
+ * via find_broken_peakfile() - only relevant for loading pre
+ * libsndfile Ardour 2.0 sessions.
+ */
+ assert(0);
+ return ""; // TODO ... if needed
+}
+
#else // !HAVE_GETMNTENT
#include <sys/param.h>
unsigned int matchlen;
const char *cpath = path.c_str();
char best[PATH_MAX+1];
-
+
+ /* From the manpage, under "BUGS" : "The memory allocated by getmntinfo() cannot be free(3)'d by the
+ application."
+
+ Thus: we do NOT try to free memory allocated by getmntinfo()
+ */
+
if ((count = getmntinfo(&mntbufp, MNT_NOWAIT)) == 0) {
- free(mntbufp);
return "\0";
}
unsigned int n = 0;
matchlen = 0;
- /* note: strcmp's semantics are not
+ /* note: strcmp's semantics are not
strict enough to use for this.
*/
if (cpath[matchlen] == '\0') {
snprintf(best, sizeof(best), "%s", mntbufp[i].f_mntonname);
- free(mntbufp);
return best;
} else {
}
}
- free(mntbufp);
-
return best;
}
#endif // HAVE_GETMNTENT
#ifdef TEST_MOUNTPOINT
-
+
main (int argc, char *argv[])
{
printf ("mp of %s = %s\n", argv[1], mountpoint (argv[1]).c_str());
}
#endif // TEST_MOUNTPOINT
+
+#else // COMPILER_MSVC
+ const char* pbd_mountpoint = "pbd/msvc/mountpoint.cc takes precedence over this file";
+#endif // COMPILER_MSVC