Browse code

Fixes error reporting for import error and utf8 characters as cmdline arguments

+ Potential fix for the error reporting of #884.

Florent Viard authored on 2018/03/01 02:29:13
Showing 1 changed files
... ...
@@ -3020,12 +3020,19 @@ def report_exception(e, msg=u''):
3020 3020
         try:
3021 3021
             s = u' '.join([unicodise(a) for a in sys.argv])
3022 3022
         except NameError:
3023
-            s = u' '.join([(a) for a in sys.argv])
3023
+            # Error happened before Utils module was yet imported to provide unicodise
3024
+            try:
3025
+                s = u' '.join([(a) for a in sys.argv])
3026
+            except UnicodeDecodeError:
3027
+                s = u'[encoding safe] ' + u' '.join([('%r'%a) for a in sys.argv])
3024 3028
         sys.stderr.write(u"Invoked as: %s\n" % s)
3025 3029
 
3026 3030
         e_class = str(e.__class__)
3027 3031
         e_class = e_class[e_class.rfind(".")+1 : -2]
3028
-        sys.stderr.write(u"Problem: %s: %s\n" % (e_class, e))
3032
+        try:
3033
+            sys.stderr.write(u"Problem: %s: %s\n" % (e_class, e))
3034
+        except UnicodeDecodeError:
3035
+            sys.stderr.write(u"Problem: [encoding safe] %r: %r\n" % (e_class, e))
3029 3036
         try:
3030 3037
             sys.stderr.write(u"S3cmd:   %s\n" % PkgInfo.version)
3031 3038
         except NameError: