|
@@ -155,22 +155,25 @@ FileHandler(struct mg_connection *conn, void *cbdata)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
+/**********************/
|
|
|
|
+/* proposed interface */
|
|
|
|
+
|
|
enum {
|
|
enum {
|
|
FORM_DISPOSITION_SKIP = 0x0,
|
|
FORM_DISPOSITION_SKIP = 0x0,
|
|
FORM_DISPOSITION_GET = 0x1,
|
|
FORM_DISPOSITION_GET = 0x1,
|
|
FORM_DISPOSITION_STORE = 0x2,
|
|
FORM_DISPOSITION_STORE = 0x2,
|
|
- FORM_DISPOSITION_READ = 0x4,
|
|
|
|
|
|
+ FORM_DISPOSITION_READ = 0x3,
|
|
FORM_DISPOSITION_ABORT = 0x10
|
|
FORM_DISPOSITION_ABORT = 0x10
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
struct mg_form_data_handler {
|
|
struct mg_form_data_handler {
|
|
int (*field_found)(const char *key,
|
|
int (*field_found)(const char *key,
|
|
- size_t keylen,
|
|
|
|
const char *filename,
|
|
const char *filename,
|
|
|
|
+ char *path,
|
|
|
|
+ size_t pathlen,
|
|
void *user_data);
|
|
void *user_data);
|
|
int (*field_get)(const char *key,
|
|
int (*field_get)(const char *key,
|
|
- size_t keylen,
|
|
|
|
const char *filename,
|
|
const char *filename,
|
|
const char *value,
|
|
const char *value,
|
|
size_t valuelen,
|
|
size_t valuelen,
|
|
@@ -178,10 +181,15 @@ struct mg_form_data_handler {
|
|
void *user_data;
|
|
void *user_data;
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+int mg_handle_form_data(struct mg_connection *conn,
|
|
|
|
+ struct mg_form_data_handler *fdh);
|
|
|
|
+
|
|
|
|
+/* end of interface */
|
|
|
|
+/********************/
|
|
|
|
+
|
|
|
|
|
|
int
|
|
int
|
|
field_found(const char *key,
|
|
field_found(const char *key,
|
|
- size_t keylen,
|
|
|
|
const char *filename,
|
|
const char *filename,
|
|
char *path,
|
|
char *path,
|
|
size_t pathlen,
|
|
size_t pathlen,
|
|
@@ -189,15 +197,13 @@ field_found(const char *key,
|
|
{
|
|
{
|
|
struct mg_connection *conn = (struct mg_connection *)user_data;
|
|
struct mg_connection *conn = (struct mg_connection *)user_data;
|
|
|
|
|
|
- mg_write(conn, key, keylen);
|
|
|
|
- mg_printf(conn, ":\r\n");
|
|
|
|
|
|
+ mg_printf(conn, "%s:\r\n", key);
|
|
return FORM_DISPOSITION_GET;
|
|
return FORM_DISPOSITION_GET;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
int
|
|
int
|
|
field_get(const char *key,
|
|
field_get(const char *key,
|
|
- size_t keylen,
|
|
|
|
const char *filename,
|
|
const char *filename,
|
|
const char *value,
|
|
const char *value,
|
|
size_t valuelen,
|
|
size_t valuelen,
|
|
@@ -205,8 +211,7 @@ field_get(const char *key,
|
|
{
|
|
{
|
|
struct mg_connection *conn = (struct mg_connection *)user_data;
|
|
struct mg_connection *conn = (struct mg_connection *)user_data;
|
|
|
|
|
|
- mg_write(conn, key, keylen);
|
|
|
|
- mg_printf(conn, " = ");
|
|
|
|
|
|
+ mg_printf(conn, "%s = ", key);
|
|
mg_write(conn, value, valuelen);
|
|
mg_write(conn, value, valuelen);
|
|
mg_printf(conn, "\r\n\r\n");
|
|
mg_printf(conn, "\r\n\r\n");
|
|
|
|
|