mirror of
https://github.com/cesanta/mongoose.git
synced 2024-12-28 23:49:44 +08:00
8742fac5d8
CL: Mongoose Web Server: Publish sources and tests Resolves https://github.com/cesanta/mongoose/issues/745 PUBLISHED_FROM=7ecd7a3c518cfa614a6ba0838678dcb91b75a8c0
86 lines
1.8 KiB
C
86 lines
1.8 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
#include <ccgi.h>
|
|
|
|
extern char **environ;
|
|
|
|
#ifdef _WIN32
|
|
#define EOL "\n"
|
|
#else
|
|
#define EOL "\r\n"
|
|
#endif
|
|
|
|
int alpha_cmp(const void *a, const void *b) {
|
|
return strcmp(*(const char **) a, *(const char **) b);
|
|
}
|
|
|
|
int main(void) {
|
|
puts("Content-Type: text/html" EOL "Status: 201 Created" EOL EOL);
|
|
|
|
puts("<pre>" EOL "<h1>Environment</h1>" EOL);
|
|
{
|
|
const char *sorted_env[500];
|
|
size_t i, num_env;
|
|
|
|
for (num_env = 0; environ[num_env] != 0; num_env++) {
|
|
sorted_env[num_env] = environ[num_env];
|
|
}
|
|
qsort(sorted_env, num_env, sizeof(const char *), alpha_cmp);
|
|
|
|
for (i = 0; i < num_env; i++) {
|
|
printf("E: %s" EOL, sorted_env[i]);
|
|
}
|
|
}
|
|
puts(EOL "<h1>Query string</h1>" EOL);
|
|
{
|
|
const char *k;
|
|
CGI_varlist *vl = CGI_get_query(NULL);
|
|
|
|
for (k = CGI_first_name(vl); k != NULL; k = CGI_next_name(vl)) {
|
|
printf("Q: %s=%s" EOL, k, CGI_lookup(vl, k));
|
|
}
|
|
|
|
CGI_free_varlist(vl);
|
|
}
|
|
puts(EOL "<h1>Form variables</h1>" EOL);
|
|
{
|
|
const char *k;
|
|
CGI_varlist *vl = CGI_get_post(NULL, NULL);
|
|
|
|
for (k = CGI_first_name(vl); k != NULL; k = CGI_next_name(vl)) {
|
|
printf("P: %s=%s" EOL, k, CGI_lookup(vl, k));
|
|
}
|
|
|
|
CGI_free_varlist(vl);
|
|
}
|
|
puts(EOL "</pre>" EOL);
|
|
return 0;
|
|
}
|
|
|
|
/* Some functions for libccgi that are missing on Windows (VC6). */
|
|
#ifdef _WIN32
|
|
static int lowercase(const char *s) {
|
|
return tolower(*(const unsigned char *) s);
|
|
}
|
|
|
|
int strncasecmp(const char *s1, const char *s2, size_t len) {
|
|
int diff = 0;
|
|
|
|
if (len > 0) do {
|
|
diff = lowercase(s1++) - lowercase(s2++);
|
|
} while (diff == 0 && s1[-1] != '\0' && --len > 0);
|
|
|
|
return diff;
|
|
}
|
|
|
|
int strcasecmp(const char *s1, const char *s2) {
|
|
return strncasecmp(s1, s2, (size_t) ~0);
|
|
}
|
|
|
|
int mkstemp(char *template) {
|
|
return -1; /* Not used by us. */
|
|
}
|
|
#endif
|