changeset 476:c9566d49ecfe

Handle EError returning a function; handle multiple cookies in one input header
author Adam Chlipala <adamc@hcoop.net>
date Sat, 08 Nov 2008 12:12:50 -0500
parents 9babc5d2ec5a
children 667c0e54632a
files src/c/urweb.c src/cjr_print.sml
diffstat 2 files changed, 20 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/c/urweb.c	Sat Nov 08 10:58:59 2008 -0500
+++ b/src/c/urweb.c	Sat Nov 08 12:12:50 2008 -0500
@@ -1193,9 +1193,21 @@
   }
 
   while (p = strchr(s, ':')) {
-    if (!strncasecmp(s, "Cookie: ", 8) && !strncmp(p + 2, c, len)
-        && p + 2 + len < ctx->headers_end && p[2 + len] == '=') {
-      return p + 3 + len;
+    if (!strncasecmp(s, "Cookie: ", 8)) {
+      p += 2;
+      while (1) {
+        if (!strncmp(p, c, len)
+            && p + len < ctx->headers_end && p[len] == '=')
+          return p + 1 + len;
+        else if (p = strchr(p, ';'))
+          p += 2;
+        else if ((s = strchr(s, 0)) && s < ctx->headers_end) {
+          s += 2;
+          break;
+        }
+        else
+          return NULL;
+      }
     } else {
       if ((s = strchr(p, 0)) && s < ctx->headers_end)
         s += 2;
--- a/src/cjr_print.sml	Sat Nov 08 10:58:59 2008 -0500
+++ b/src/cjr_print.sml	Sat Nov 08 12:12:50 2008 -0500
@@ -70,14 +70,8 @@
 
 fun p_typ' par env (t, loc) =
     case t of
-        TFun (t1, t2) => parenIf par (box [string "(",
-                                           p_typ' true env t2,
-                                           space,
-                                           string "(*)",
-                                           space,
-                                           string "(",
-                                           p_typ env t1,
-                                           string "))"])
+        TFun (t1, t2) => (EM.errorAt loc "Function type remains";
+                          string "<FUNCTION>")
       | TRecord i => box [string "struct",
                           space,
                           string "__uws_",
@@ -967,6 +961,9 @@
              string "tmp;",
              newline,
              string "})"]
+      | EApp ((EError (e, (TFun (_, ran), _)), loc), _) =>
+        p_exp env (EError (e, ran), loc)
+
       | EFfiApp (m, x, es) => box [string "uw_",
                                    p_ident m,
                                    string "_",