[client] On ne crashe pas lamentablement à cause des allemands
La doc de GPG prétend que --with-colons output de l'UTF-8 regardless of any --display-charset. Eh bah c'est faux. Je provide même un working example : gpg --list-key --with-colons 095D9EC8C995AB203DC260FEECAA37C45C7E48CE
This commit is contained in:
parent
3b5c765dd3
commit
64e40a0a80
1 changed files with 11 additions and 1 deletions
10
client.py
10
client.py
|
@ -92,6 +92,8 @@ def gpg(options, command, args=None):
|
||||||
else:
|
else:
|
||||||
stderr = subprocess.PIPE
|
stderr = subprocess.PIPE
|
||||||
full_command.extend(['--debug-level=1'])
|
full_command.extend(['--debug-level=1'])
|
||||||
|
if options.verbose:
|
||||||
|
print(" ".join(full_command))
|
||||||
proc = subprocess.Popen(full_command,
|
proc = subprocess.Popen(full_command,
|
||||||
stdin = subprocess.PIPE,
|
stdin = subprocess.PIPE,
|
||||||
stdout = subprocess.PIPE,
|
stdout = subprocess.PIPE,
|
||||||
|
@ -171,7 +173,15 @@ def parse_keys(gpgout, debug=False):
|
||||||
current_sub = init_value
|
current_sub = init_value
|
||||||
for line in iter(gpgout.readline, ''):
|
for line in iter(gpgout.readline, ''):
|
||||||
# La doc dit que l'output est en UTF-8 «regardless of any --display-charset setting»
|
# La doc dit que l'output est en UTF-8 «regardless of any --display-charset setting»
|
||||||
|
try:
|
||||||
line = line.decode("utf-8")
|
line = line.decode("utf-8")
|
||||||
|
except UnicodeDecodeError:
|
||||||
|
try:
|
||||||
|
line = line.decode("iso8859-1")
|
||||||
|
except UnicodeDecodeError:
|
||||||
|
line = line.decode("iso8859-1", "ignore")
|
||||||
|
if not options.quiet:
|
||||||
|
print("gpg raconte de la merde, c'est ni de l'ISO-8859-1 ni de l'UTF-8, je droppe, ça risque de foirer plus tard.", sys.stderr)
|
||||||
line = line.split(":")
|
line = line.split(":")
|
||||||
field = line[0]
|
field = line[0]
|
||||||
if field in GPG_PARSERS.keys():
|
if field in GPG_PARSERS.keys():
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue