diff src/c/urweb.c @ 1787:69daa6d70299

Top.postFields
author Adam Chlipala <adam@chlipala.net>
date Sat, 21 Jul 2012 15:16:57 -0400
parents 61c7eb1d3867
children f57983ba2a36
line wrap: on
line diff
--- a/src/c/urweb.c	Sat Jul 21 13:55:35 2012 -0400
+++ b/src/c/urweb.c	Sat Jul 21 15:16:57 2012 -0400
@@ -4086,3 +4086,43 @@
 
   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;
+}