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:
@ -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");
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user