merge in Tracks-derived session-end-is-N-seconds beyond last region end, but define...
[ardour.git] / libs / pbd / mountpoint.cc
index c1bcb375f3a67f84d1a4d4cc8febb827f6a84de7..ba4243979d8ebb7cab3eb78c38dede512a0310e6 100644 (file)
 
     $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 {
@@ -88,6 +94,19 @@ mountpoint (string path)
        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>
@@ -104,8 +123,13 @@ mountpoint (string path)
        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";
        }
 
@@ -129,7 +153,6 @@ mountpoint (string path)
 
                if (cpath[matchlen] == '\0') {
                        snprintf(best, sizeof(best), "%s", mntbufp[i].f_mntonname);
-                       free(mntbufp);
                        return best;
 
                } else {
@@ -140,8 +163,6 @@ mountpoint (string path)
                        }
                }
        }
-
-       free(mntbufp);
        
        return best;
 }
@@ -156,3 +177,7 @@ main (int argc, char *argv[])
 }
 
 #endif // TEST_MOUNTPOINT
+
+#else  // COMPILER_MSVC
+       const char* pbd_mountpoint = "pbd/msvc/mountpoint.cc takes precedence over this file";
+#endif // COMPILER_MSVC