diff options
author | Adam Chlipala <adam@chlipala.net> | 2012-07-21 15:16:57 -0400 |
---|---|---|
committer | Adam Chlipala <adam@chlipala.net> | 2012-07-21 15:16:57 -0400 |
commit | cbce1b6184acae87ba220969ab2c69cf2697ea32 (patch) | |
tree | 4be6d87576e314c5a2a1ecbaed89913bceca422f /src/c/urweb.c | |
parent | 17e8230265e8fb22d583c4ba33d4243f24d6b8bc (diff) |
Top.postFields
Diffstat (limited to 'src/c/urweb.c')
-rw-r--r-- | src/c/urweb.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/c/urweb.c b/src/c/urweb.c index d0b6987c..0ccc418a 100644 --- a/src/c/urweb.c +++ b/src/c/urweb.c @@ -4086,3 +4086,43 @@ uw_Basis_string uw_Basis_property(uw_context ctx, uw_Basis_string s) { return s; } + +uw_Basis_string uw_Basis_fieldName(uw_context ctx, uw_Basis_postField f) { + return f.name; +} + +uw_Basis_string uw_Basis_fieldValue(uw_context ctx, uw_Basis_postField f) { + return f.value; +} + +uw_Basis_string uw_Basis_remainingFields(uw_context ctx, uw_Basis_postField f) { + return f.remaining; +} + +uw_Basis_postField *uw_Basis_firstFormField(uw_context ctx, uw_Basis_string s) { + char *amp, *eq, *unurl, *copy; + uw_Basis_postField *f; + + if (s[0] == 0) + return NULL; + + amp = strchr(s, '&'); + copy = uw_malloc(ctx, amp ? amp - s + 1 : strlen(s) + 1); + if (amp) { + strncpy(copy, s, amp - s); + copy[amp - s] = 0; + } else + strcpy(copy, s); + + eq = strchr(copy, '='); + if (eq) + *eq++ = 0; + + f = uw_malloc(ctx, sizeof(uw_Basis_postField)); + unurl = copy; + f->name = uw_Basis_unurlifyString(ctx, &unurl); + f->value = eq ? (unurl = eq, uw_Basis_unurlifyString(ctx, &unurl)) : ""; + f->remaining = amp ? amp+1 : ""; + + return f; +} |