Salome HOME
Merge branch 'master' into V9_dev
authorGilles DAVID <gilles-g.david@edf.fr>
Fri, 22 Sep 2017 16:20:32 +0000 (18:20 +0200)
committerGilles DAVID <gilles-g.david@edf.fr>
Fri, 22 Sep 2017 16:20:32 +0000 (18:20 +0200)
copyright/insert_copyright

index 50f63b5f1a59bd7e63f5ec53e6b814d2607951bb..e91ec3ada20b4d2e58c6537b2102e94dc846e6d3 100755 (executable)
@@ -246,14 +246,31 @@ def autodetect_format(filename):
         'shell': ('sh', 'bash', 'csh', 'cmake', 'txt', 'cfg', 'ini', 'm4'),
         'python': ('py',),
         }
+    rev_extensions = {e: k for k, exts in extensions.items() for e in exts}
     if filename and os.path.isfile(filename):
         extension = os.path.splitext(filename)[1][1:].lower()
         if extension in ('in',):
             name = os.path.splitext(filename)[0]
             extension = os.path.splitext(name)[1][1:].lower()
-        for file_format in extensions:
-            if extension in extensions[file_format]:
-                return format
+        if extension in rev_extensions:
+            return rev_extensions[extension]
+
+    try:
+        import magic
+        m = magic.open(magic.MAGIC_MIME_TYPE)
+        m.load()
+        file_formats = {
+            'cpp': ('text/x-c', 'text/x-c++'),
+            'shell': ('text/x-shellscript',),
+            'python': ('text/x-python',),
+            }
+        rev_file_formats = {f: k for k, ff in file_formats.items() for f in ff}
+        file_format = m.file(filename)
+        if file_format in rev_file_formats:
+            return rev_file_formats[file_format]
+    except ImportError:
+        pass
+
     return None