diff options
Diffstat (limited to 'DeDRM_plugin/argv_utils.py')
-rw-r--r-- | DeDRM_plugin/argv_utils.py | 59 |
1 files changed, 10 insertions, 49 deletions
diff --git a/DeDRM_plugin/argv_utils.py b/DeDRM_plugin/argv_utils.py index 37bfb89..2ca4776 100644 --- a/DeDRM_plugin/argv_utils.py +++ b/DeDRM_plugin/argv_utils.py @@ -1,14 +1,17 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -import sys, os -import locale -import codecs -import importlib +import sys # get sys.argv arguments and encode them into utf-8 -def unicode_argv(): - if sys.platform.startswith('win'): +def unicode_argv(default_name): + + try: + from calibre.constants import iswindows + except: + iswindows = sys.platform.startswith('win') + + if iswindows: # Uses shell32.GetCommandLineArgvW to get sys.argv as a list of Unicode # strings. @@ -38,50 +41,8 @@ def unicode_argv(): range(start, argc.value)] # if we don't have any arguments at all, just pass back script name # this should never happen - return ["DeDRM.py"] + return [ default_name ] else: argvencoding = sys.stdin.encoding or "utf-8" return [arg if (isinstance(arg, str) or isinstance(arg,unicode)) else str(arg, argvencoding) for arg in sys.argv] - -def add_cp65001_codec(): - try: - codecs.lookup('cp65001') - except LookupError: - codecs.register( - lambda name: name == 'cp65001' and codecs.lookup('utf-8') or None) - return - - -def set_utf8_default_encoding(): - if sys.getdefaultencoding() == 'utf-8': - return - - # Regenerate setdefaultencoding. - importlib.reload(sys) - sys.setdefaultencoding('utf-8') - - for attr in dir(locale): - if attr[0:3] != 'LC_': - continue - aref = getattr(locale, attr) - try: - locale.setlocale(aref, '') - except locale.Error: - continue - try: - lang = locale.getlocale(aref)[0] - except (TypeError, ValueError): - continue - if lang: - try: - locale.setlocale(aref, (lang, 'UTF-8')) - except locale.Error: - os.environ[attr] = lang + '.UTF-8' - try: - locale.setlocale(locale.LC_ALL, '') - except locale.Error: - pass - return - - |