diff options
author | Adam Chlipala <adamc@hcoop.net> | 2008-11-08 12:12:50 -0500 |
---|---|---|
committer | Adam Chlipala <adamc@hcoop.net> | 2008-11-08 12:12:50 -0500 |
commit | 7d6eed032a2b129056ff264a91076cec68035a34 (patch) | |
tree | 3e0286912dbc8c2cd57c2f90fa095b82429434bc /src | |
parent | dbf4d428936189bba18ffb1d622029c79da39414 (diff) |
Handle EError returning a function; handle multiple cookies in one input header
Diffstat (limited to 'src')
-rw-r--r-- | src/c/urweb.c | 18 | ||||
-rw-r--r-- | src/cjr_print.sml | 13 |
2 files changed, 20 insertions, 11 deletions
diff --git a/src/c/urweb.c b/src/c/urweb.c index e8c75275..57584f53 100644 --- a/src/c/urweb.c +++ b/src/c/urweb.c @@ -1193,9 +1193,21 @@ uw_Basis_string uw_Basis_get_cookie(uw_context ctx, uw_Basis_string c) { } 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 --git a/src/cjr_print.sml b/src/cjr_print.sml index 3941fdd9..7c13fcb5 100644 --- a/src/cjr_print.sml +++ b/src/cjr_print.sml @@ -70,14 +70,8 @@ fun isUnboxable (t : typ) = 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 @@ fun p_exp' par env (e, loc) = 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 "_", |