diff options
author | Ori Bernstein <ori@eigenstate.org> | 2021-06-14 00:00:37 +0000 |
---|---|---|
committer | Ori Bernstein <ori@eigenstate.org> | 2021-06-14 00:00:37 +0000 |
commit | a73a964e51247ed169d322c725a3a18859f109a3 (patch) | |
tree | 3f752d117274d444bda44e85609aeac1acf313f3 /sys/lib/python/mercurial/hgweb/wsgicgi.py | |
parent | e64efe273fcb921a61bf27d33b230c4e64fcd425 (diff) |
python, hg: tow outside the environment.
they've served us well, and can ride off into the sunset.
Diffstat (limited to 'sys/lib/python/mercurial/hgweb/wsgicgi.py')
-rw-r--r-- | sys/lib/python/mercurial/hgweb/wsgicgi.py | 70 |
1 files changed, 0 insertions, 70 deletions
diff --git a/sys/lib/python/mercurial/hgweb/wsgicgi.py b/sys/lib/python/mercurial/hgweb/wsgicgi.py deleted file mode 100644 index 9dfb76978..000000000 --- a/sys/lib/python/mercurial/hgweb/wsgicgi.py +++ /dev/null @@ -1,70 +0,0 @@ -# hgweb/wsgicgi.py - CGI->WSGI translator -# -# Copyright 2006 Eric Hopper <hopper@omnifarious.org> -# -# This software may be used and distributed according to the terms of the -# GNU General Public License version 2, incorporated herein by reference. -# -# This was originally copied from the public domain code at -# http://www.python.org/dev/peps/pep-0333/#the-server-gateway-side - -import os, sys -from mercurial import util - -def launch(application): - util.set_binary(sys.stdin) - util.set_binary(sys.stdout) - - environ = dict(os.environ.iteritems()) - environ.setdefault('PATH_INFO', '') - if '.cgi' in environ['PATH_INFO']: - environ['PATH_INFO'] = environ['PATH_INFO'].split('.cgi', 1)[1] - - environ['wsgi.input'] = sys.stdin - environ['wsgi.errors'] = sys.stderr - environ['wsgi.version'] = (1, 0) - environ['wsgi.multithread'] = False - environ['wsgi.multiprocess'] = True - environ['wsgi.run_once'] = True - - if environ.get('HTTPS','off').lower() in ('on','1','yes'): - environ['wsgi.url_scheme'] = 'https' - else: - environ['wsgi.url_scheme'] = 'http' - - headers_set = [] - headers_sent = [] - out = sys.stdout - - def write(data): - if not headers_set: - raise AssertionError("write() before start_response()") - - elif not headers_sent: - # Before the first output, send the stored headers - status, response_headers = headers_sent[:] = headers_set - out.write('Status: %s\r\n' % status) - for header in response_headers: - out.write('%s: %s\r\n' % header) - out.write('\r\n') - - out.write(data) - out.flush() - - def start_response(status, response_headers, exc_info=None): - if exc_info: - try: - if headers_sent: - # Re-raise original exception if headers sent - raise exc_info[0](exc_info[1], exc_info[2]) - finally: - exc_info = None # avoid dangling circular ref - elif headers_set: - raise AssertionError("Headers already set!") - - headers_set[:] = [status, response_headers] - return write - - content = application(environ, start_response) - for chunk in content: - write(chunk) |