--- a/infinitychan.py
+++ b/infinitychan.py
@@ -301,11 +301,18 @@
                 else:
                     name = file['tim']
                 if mode == 'unix_original':
-                    name += '_' + file['filename']
+                    if len(''.join([name, '_', file['filename'],
+                                    file['ext']]).encode('utf-8')) \
+                       <= os.statvfs(os.getcwd()).f_namemax:
+                        name += '_' + file['filename']
             elif mode == 'plain':
                 name = file['tim']
             elif mode == 'original':
-                name = file['filename']
+                if len((file['filename'] + file['ext']).encode('utf-8')) \
+                   <= os.statvfs(os.getcwd()).f_namemax:
+                    name = file['filename']
+                else:
+                    name = file['tim']
             else:
                 raise RuntimeError("Unknown mode {}".format(mode))
             name += file['ext']
