Skip to content

Commit

Permalink
Fix #45: Convert strings to local encoding before printing
Browse files Browse the repository at this point in the history
  • Loading branch information
leandro-lucarella-sociomantic committed Oct 17, 2013
1 parent 3128ec3 commit acbcedd
Showing 1 changed file with 17 additions and 12 deletions.
29 changes: 17 additions & 12 deletions git-hub
Original file line number Diff line number Diff line change
Expand Up @@ -58,38 +58,43 @@ ERR = 0
# Output functions, all use the str.format() function for formatting
########################################################################

def localeprintf(stream, fmt='', *args, **kwargs):
encoding = sys.getfilesystemencoding()
msg = fmt.decode(encoding, 'replace').format(*args, **kwargs) + '\n'
stream.write(msg.encode(encoding, 'replace'))

def debugf(fmt='', *args, **kwargs):
if verbose < DEBUG:
return
sys.stdout.write(fmt.format(*args, **kwargs) + '\n')
localeprintf(sys.stdout, fmt, *args, **kwargs)

def infof(fmt='', *args, **kwargs):
if verbose < INFO:
return
sys.stdout.write(fmt.format(*args, **kwargs) + '\n')
localeprintf(sys.stdout, fmt, *args, **kwargs)

def warnf(fmt='', *args, **kwargs):
if verbose < WARN:
return
msg = ''
if sys.stderr.isatty():
sys.stderr.write('\033[33m')
sys.stderr.write('Warning: ')
sys.stderr.write(fmt.format(*args, **kwargs))
msg += '\033[33m'
msg += 'Warning: ' + fmt.format(*args, **kwargs)
if sys.stderr.isatty():
sys.stderr.write('\033[0m')
sys.stderr.write('\n')
msg += '\033[0m'
localeprintf(sys.stderr, '{}', msg)
sys.stderr.flush()

def errf(fmt='', *args, **kwargs):
if verbose < ERR:
return
msg = ''
if sys.stderr.isatty():
sys.stderr.write('\033[31m')
sys.stderr.write('Error: ')
sys.stderr.write(fmt.format(*args, **kwargs))
msg += '\033[31m'
msg += 'Error: ' + fmt.format(*args, **kwargs)
if sys.stderr.isatty():
sys.stderr.write('\033[0m')
sys.stderr.write('\n')
msg += '\033[0m'
localeprintf(sys.stderr, '{}', msg)
sys.stderr.flush()

def die(fmt='', *args, **kwargs):
Expand Down

0 comments on commit acbcedd

Please sign in to comment.