chiark / gitweb /
chpwd, userv.rc: Change Userv service protocol to parse options properly.
[chopwood] / cgi.py
diff --git a/cgi.py b/cgi.py
index 69b90386b36ae99638697643e737cc98eb8e11b6..8009eafcd3f5abef6ee15a5c10abae9f602174a8 100644 (file)
--- a/cgi.py
+++ b/cgi.py
@@ -105,6 +105,7 @@ class HTTPOutput (O.FileOutput):
     """Constructor: initialize `headerp' flag."""
     super(HTTPOutput, me).__init__(*args, **kw)
     me.headerp = False
+    me.warnings = []
 
   def write(me, msg):
     """Output protocol: print a header if we've not written one already."""
@@ -126,6 +127,15 @@ class HTTPOutput (O.FileOutput):
     if METHOD == 'HEAD':
       HEADER_DONE()
 
+  def warn(me, msg):
+    """
+    Report a warning message.
+
+    The warning is stashed in a list where it can be retrieved using
+    `warnings'.
+    """
+    me.warnings.append(msg)
+
 def cookie(name, value, **kw):
   """
   Return a HTTP `Set-Cookie' header.
@@ -272,7 +282,8 @@ def page(template, header = {}, title = 'Chopwood', **kw):
   header = dict(header, content_type = 'text/html')
   OUT.header(**header)
   format_tmpl(TMPL['wrapper.fhtml'],
-              title = title, payload = TMPL[template], **kw)
+              title = title, warnings = OUT.warnings,
+              payload = TMPL[template], **kw)
 
 ###--------------------------------------------------------------------------
 ### Error reporting.
@@ -392,7 +403,7 @@ def cgiparse():
 
   ## Acquire the query string.
   if METHOD in ['GET', 'HEAD']:
-    q = getenv('QUERY_STRING')
+    q = ENV.get('QUERY_STRING', '')
 
   elif METHOD == 'POST':