This allows different versions of Python to be used rather than forcing version specific encoding in each script.
Unified · Split
| @@ -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 | } |
| @@ -30,9 +30,6 @@ if email[-1] == '>': · 29 unmodified lines | |||
| 30 | 30 | ||
| 31 | page = sys.argv[2] | 31 | page = sys.argv[2] |
| 32 | 32 | ||
| 33 | sys.stdin = codecs.getreader("utf-8")(sys.stdin.detach()) | ||
| 34 | sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach()) | ||
| 35 | |||
| 36 | md5 = hashlib.md5(email.encode()).hexdigest() | 33 | md5 = hashlib.md5(email.encode()).hexdigest() |
| 37 | text = sys.stdin.read().strip() | 34 | text = sys.stdin.read().strip() |
| 38 | 35 | ||
| @@ -29,9 +29,6 @@ from pygments.lexers import guess_lexer · 28 unmodified lines | |||
| 29 | from pygments.lexers import guess_lexer_for_filename | 29 | from pygments.lexers import guess_lexer_for_filename |
| 30 | from pygments.formatters import HtmlFormatter | 30 | from pygments.formatters import HtmlFormatter |
| 31 | 31 | ||
| 32 | |||
| 33 | sys.stdin = io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8', errors='replace') | ||
| 34 | sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace') | ||
| 35 | data = sys.stdin.read() | 32 | data = sys.stdin.read() |
| 36 | filename = sys.argv[1] | 33 | filename = sys.argv[1] |
| 37 | formatter = HtmlFormatter(style='pastie') | 34 | formatter = HtmlFormatter(style='pastie') |
| @@ -52,4 +49,4 @@ except TypeError: · 14 unmodified lines | |||
| 52 | sys.stdout.write('<style>') | 49 | sys.stdout.write('<style>') |
| 53 | sys.stdout.write(formatter.get_style_defs('.highlight')) | 50 | sys.stdout.write(formatter.get_style_defs('.highlight')) |
| 54 | sys.stdout.write('</style>') | 51 | sys.stdout.write('</style>') |
| 55 | sys.stdout.write(highlight(data, lexer, formatter, outfile=None)) | 52 | highlight(data, lexer, formatter, outfile=sys.stdout) |