1
0
mirror of https://github.com/lammertb/libhttp.git synced 2025-07-31 08:24:23 +03:00

Alternative to mg_upload (Step 24/?)

This commit is contained in:
bel
2016-01-17 23:24:08 +01:00
parent 30b7996799
commit 5684a70140
2 changed files with 17 additions and 18 deletions

View File

@ -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, "%s:\r\n", key);
mg_printf(conn, ":\r\n");
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, "%s = ", key);
mg_printf(conn, " = ");
mg_write(conn, value, valuelen); mg_write(conn, value, valuelen);
mg_printf(conn, "\r\n\r\n"); mg_printf(conn, "\r\n\r\n");

View File

@ -38,13 +38,11 @@ enum {
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, char *path,
size_t pathlen, 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,
@ -95,12 +93,8 @@ url_encoded_field_found(const char *key,
filename_dec[0] = 0; filename_dec[0] = 0;
} }
return fdh->field_found(key_dec, return fdh->field_found(
(size_t)key_dec_len, key_dec, filename_dec, path, path_len, fdh->user_data);
filename_dec,
path,
path_len,
fdh->user_data);
} }
@ -300,7 +294,7 @@ mg_handle_form_data(struct mg_connection *conn,
vallen = next - val; vallen = next - val;
next++; next++;
} else { } else {
vallen = (size_t)strlen(val); vallen = (ptrdiff_t)strlen(val);
next = val + vallen; next = val + vallen;
} }