Mercurial > urweb
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 "_",