Anonymous avatar Anonymous committed c67e15e

Add detector to change application/octet-stream to
text/plain sometimes.

Comments (0)

Files changed (1)


+# On file creation, if the file is application/octet-stream,
+# yet the file content looks like text, change the type to
+# text/plain.
+def audit_application_octetstream(db, cl, nodeid, newvalues):
+    if newvalues.has_key('type') and newvalues['type'] == 'application/octet-stream':
+        # check whether this might be a text file
+        try:
+            text = newvalues['content'].decode('utf-8')
+        except UnicodeError:
+            return
+        # check that there aren't funny control characters in there
+        for c in text:
+            if ord(c) >= 32:
+                continue
+            if c not in u' \f\t\r\n':
+                return
+        newvalues['type'] = 'text/plain'
+def init(db):
+    db.file.audit('create', audit_application_octetstream)
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.