additional improvements for freebsd mostly
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / file.C
index 07cddec4961fc9faf60fc0b36d3cab6622073e2b..2a1330059cd468069f5e248f6343846445776e8f 100644 (file)
@@ -387,8 +387,12 @@ const char *File::default_probes[] = {
        "PNG",
        "PPM",
        "JPEG",
+#ifdef HAVE_GIFLIB
        "GIF",
+#endif
+#ifdef HAVE_LIBDPX
        "DPX",
+#endif
 #ifdef HAVE_OPENEXR
        "EXR",
 #endif
@@ -400,7 +404,9 @@ const char *File::default_probes[] = {
        "OGG",
        "Vorbis",
 #endif
+#ifdef HAVE_LIBZMPEG
        "MPEG",
+#endif
        "EDL",
        "FFMPEG_Late",
 }; 
@@ -465,6 +471,7 @@ int File::probe()
                        file = new FileJPEG(this->asset, this);
                        return FILE_OK;
                }
+#ifdef HAVE_GIFLIB
                if( !strcmp(pref->name,"GIF") ) { // GIF file
                        if( FileGIFList::check_sig(this->asset) )
                                file = new FileGIFList(this->asset, this);
@@ -473,6 +480,7 @@ int File::probe()
                        else continue;
                        return FILE_OK;
                }
+#endif
 #ifdef HAVE_LIBDPX
                if( !strcmp(pref->name,"DPX") ) { // DPX file
                        if( !FileDPX::check_sig(this->asset, data) ) continue;
@@ -599,13 +607,14 @@ int File::open_file(Preferences *preferences,
        case FILE_JPEG_LIST:
                file = new FileJPEG(this->asset, this);
                break;
-
+#ifdef HAVE_GIFLIB
        case FILE_GIF:
                file = new FileGIF(this->asset, this);
                break;
        case FILE_GIF_LIST:
                file = new FileGIFList(this->asset, this);
                break;
+#endif
 #ifdef HAVE_LIBDPX
        case FILE_DPX:
        case FILE_DPX_LIST:
@@ -1657,7 +1666,14 @@ int File::record_fd()
 void File::get_exe_path(char *result, char *bnp)
 {
 // Get executable path, basename
+#if !defined(__FreeBSD__)
        int len = readlink("/proc/self/exe", result, BCTEXTLEN-1);
+#else
+       char exe_path[BCTEXTLEN];
+       sprintf(exe_path,"/proc/%d/file",getpid());
+       int len = readlink(exe_path, result, BCTEXTLEN-1);
+#endif
+
        if( len >= 0 ) {
                result[len] = 0;
                char *ptr = strrchr(result, '/');