Skip to content

Commit f40f3f9

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "arguments are not locale decoded into Unicode"
2 parents 19bea1c + 756d2fa commit f40f3f9

1 file changed

Lines changed: 13 additions & 2 deletions

File tree

openstackclient/shell.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818

1919
import argparse
2020
import getpass
21+
import locale
2122
import logging
23+
import six
2224
import sys
2325
import traceback
2426

@@ -474,8 +476,17 @@ def clean_up(self, cmd, result, err):
474476
tcmd.run(targs)
475477

476478

477-
def main(argv=sys.argv[1:]):
479+
def main(argv=None):
480+
if argv is None:
481+
argv = sys.argv[1:]
482+
if six.PY2:
483+
# Emulate Py3, decode argv into Unicode based on locale so that
484+
# commands always see arguments as text instead of binary data
485+
encoding = locale.getpreferredencoding()
486+
if encoding:
487+
argv = map(lambda arg: arg.decode(encoding), argv)
488+
478489
return OpenStackShell().run(argv)
479490

480491
if __name__ == "__main__":
481-
sys.exit(main(sys.argv[1:]))
492+
sys.exit(main())

0 commit comments

Comments
 (0)