]> git.lyx.org Git - lyx.git/blobdiff - src/Format.cpp
GuiTabular.cpp: fix bug #8084
[lyx.git] / src / Format.cpp
index c20ac9ed43fbb7896aae91156cc7e9dbee3ac7ee..f031b6806d42562838a242e422e0fecb905ba1e8 100644 (file)
@@ -375,32 +375,34 @@ string Formats::getFormatFromFile(FileName const & filename) const
                return string();
 
 #ifdef HAVE_MAGIC_H
-       magic_t magic_cookie = magic_open(MAGIC_MIME);
-       if (magic_cookie) {
-               string format;
-               if (magic_load(magic_cookie, NULL) != 0) {
-                       LYXERR(Debug::GRAPHICS, "Formats::getFormatFromFile\n"
-                               << "\tCouldn't load magic database - "
-                               << magic_error(magic_cookie));
-               } else {
-                       string mime = magic_file(magic_cookie,
-                               filename.toFilesystemEncoding().c_str());
-                       mime = token(mime, ';', 0);
-                       // we need our own ps/eps detection
-                       if (mime != "application/postscript") {
-                               Formats::const_iterator cit =
-                                       find_if(formatlist.begin(), formatlist.end(),
-                                               FormatMimeEqual(mime));
-                               if (cit != formats.end()) {
-                                       LYXERR(Debug::GRAPHICS, "\tgot format from MIME type: "
-                                               << mime << " -> " << cit->name());
-                                       format = cit->name();
+       if (filename.exists()) {
+               magic_t magic_cookie = magic_open(MAGIC_MIME);
+               if (magic_cookie) {
+                       string format;
+                       if (magic_load(magic_cookie, NULL) != 0) {
+                               LYXERR(Debug::GRAPHICS, "Formats::getFormatFromFile\n"
+                                       << "\tCouldn't load magic database - "
+                                       << magic_error(magic_cookie));
+                       } else {
+                               string mime = magic_file(magic_cookie,
+                                       filename.toFilesystemEncoding().c_str());
+                               mime = token(mime, ';', 0);
+                               // we need our own ps/eps detection
+                               if ((mime != "application/postscript") && (mime != "text/plain")) {
+                                       Formats::const_iterator cit =
+                                               find_if(formatlist.begin(), formatlist.end(),
+                                                       FormatMimeEqual(mime));
+                                       if (cit != formats.end()) {
+                                               LYXERR(Debug::GRAPHICS, "\tgot format from MIME type: "
+                                                       << mime << " -> " << cit->name());
+                                               format = cit->name();
+                                       }
                                }
                        }
+                       magic_close(magic_cookie);
+                       if (!format.empty())
+                               return format;
                }
-               magic_close(magic_cookie);
-               if (!format.empty())
-                       return format;
        }
 #endif