# HG changeset patch # User Adam Chlipala # Date 1226164370 18000 # Node ID c9566d49ecfe8bdad70ee677cabdc2093cdbc929 # Parent 9babc5d2ec5a093659ce91434f5f8c21447da06e Handle EError returning a function; handle multiple cookies in one input header diff -r 9babc5d2ec5a -r c9566d49ecfe src/c/urweb.c --- 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; diff -r 9babc5d2ec5a -r c9566d49ecfe src/cjr_print.sml --- 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 "") | 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 "_",