#include <cgi.h>
#include "aux.h"
+#ifndef HAVE_STRNDUP
+char *strndup(const char *s, size_t n);
+#endif
+
char *cgiHeaderString = NULL;
char *cgiType = NULL;
for (cp=name;*cp && *cp!=' ' && *cp!='\r' && *cp!='\n' && *cp!=':';cp++);
for (vp=value;*vp && *vp!='\r' && *vp!='\n';vp++);
+ if (cp-name == 0 || vp-value == 0)
+ return 0;
+
if (cgiHeaderString) {
- len = (strlen (cgiHeaderString) + cp-name + vp-value + 5) * sizeof (char);
+ len = (strlen (cgiHeaderString) + cp-name + vp-value + 4) * sizeof (char);
if ((pivot = (char *)realloc (cgiHeaderString,len)) == NULL)
return 0;
cgiHeaderString = pivot;
return 0;
pivot = cgiHeaderString;
}
+ memset(pivot+1, 0, (cp-name + vp-value + 4));
+
strncpy (pivot, name, cp-name);
strncat (pivot, ": ", 2);
strncat (pivot, value, vp-value);
}
}
+#ifndef HAVE_STRNDUP
+char *strndup(const char *s, size_t n) {
+ char *fnval;
+
+ if ((fnval = (char *)malloc (n + 1)) == NULL)
+ return NULL;
+ strncpy(fnval, s, n);
+ fnval[n] = '\0';
+ return fnval;
+}
+#endif
+
/*
* Local variables:
* c-indent-level: 4