History

filter: set environment variable PYTHONIOENCODING to utf-8

This allows different versions of Python to be used rather than forcing version specific encoding in each script.

Roy Marples committed 9 years ago

Commit 67e2b691 parent 7f7f9113 files · +3 −7Browse files

Unified · Split

3 files
  1. filter.c +2 −0
  2. filters/email-gravatar.py +0 −3
  3. filters/syntax-highlighting.py +1 −4
filter.c+2−0
@@ -55,6 +55,8 @@ static int open_exec_filter(struct cgit_filter *base, va_list ap) · 54 unmodified lines
55 close(filter->pipe_fh[1]);55 close(filter->pipe_fh[1]);
56 chk_non_negative(dup2(filter->pipe_fh[0], STDIN_FILENO),56 chk_non_negative(dup2(filter->pipe_fh[0], STDIN_FILENO),
57 "Unable to use pipe as STDIN");57 "Unable to use pipe as STDIN");
58 /* Always input/output utf-8 for a Python filter. */
59 setenv("PYTHONIOENCODING", "utf-8", 1);
58 execvp(filter->cmd, filter->argv);60 execvp(filter->cmd, filter->argv);
59 die_errno("Unable to exec subprocess %s", filter->cmd);61 die_errno("Unable to exec subprocess %s", filter->cmd);
60 }62 }
filters/email-gravatar.py+0−3
@@ -30,9 +30,6 @@ if email[-1] == '>': · 29 unmodified lines
30 30
31page = sys.argv[2]31page = sys.argv[2]
32 32
33sys.stdin = codecs.getreader("utf-8")(sys.stdin.detach())
34sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())
35
36md5 = hashlib.md5(email.encode()).hexdigest()33md5 = hashlib.md5(email.encode()).hexdigest()
37text = sys.stdin.read().strip()34text = sys.stdin.read().strip()
38 35
filters/syntax-highlighting.py+1−4
@@ -29,9 +29,6 @@ from pygments.lexers import guess_lexer · 28 unmodified lines
29from pygments.lexers import guess_lexer_for_filename29from pygments.lexers import guess_lexer_for_filename
30from pygments.formatters import HtmlFormatter30from pygments.formatters import HtmlFormatter
31 31
32
33sys.stdin = io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8', errors='replace')
34sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')
35data = sys.stdin.read()32data = sys.stdin.read()
36filename = sys.argv[1]33filename = sys.argv[1]
37formatter = HtmlFormatter(style='pastie')34formatter = HtmlFormatter(style='pastie')
@@ -52,4 +49,4 @@ except TypeError: · 14 unmodified lines
52sys.stdout.write('<style>')49sys.stdout.write('<style>')
53sys.stdout.write(formatter.get_style_defs('.highlight'))50sys.stdout.write(formatter.get_style_defs('.highlight'))
54sys.stdout.write('</style>')51sys.stdout.write('</style>')
55sys.stdout.write(highlight(data, lexer, formatter, outfile=None))52highlight(data, lexer, formatter, outfile=sys.stdout)