diff options
-rw-r--r-- | examples/upload.c | 1 | ||||
-rw-r--r-- | src/cookie.c | 5 | ||||
-rw-r--r-- | src/cookie.h | 3 | ||||
-rw-r--r-- | src/request.c | 11 | ||||
-rw-r--r-- | src/request.h | 6 |
5 files changed, 21 insertions, 5 deletions
diff --git a/examples/upload.c b/examples/upload.c index 1947f93..c61562a 100644 --- a/examples/upload.c +++ b/examples/upload.c @@ -48,6 +48,7 @@ int main(int argc, char const * argv[]) } else { magi_error_cgi(request.error); } + magi_tempfiles_destroy(&tmps); magi_request_destroy(&request); return 0; } diff --git a/src/cookie.c b/src/cookie.c index eaa221f..9d2a5ce 100644 --- a/src/cookie.c +++ b/src/cookie.c @@ -16,13 +16,12 @@ int magi_cookie_list_add(struct magi_cookie_list ** list, return !!node; } -struct magi_cookie * magi_cookie_list_get(struct magi_cookie_list * list, - const char * name) +char * magi_cookie_list_get(struct magi_cookie_list * list, const char * name) { if (!list || !name) { return 0; } else if (!strcmp(list->item.name, name)) { - return &list->item; + return list->item.data; } else { return magi_cookie_list_get(list->next, name); } diff --git a/src/cookie.h b/src/cookie.h index 82c914e..764eb53 100644 --- a/src/cookie.h +++ b/src/cookie.h @@ -22,8 +22,7 @@ int magi_cookie_list_add(struct magi_cookie_list ** list, struct magi_cookie * item); /* First node in list: node.name == name; else null. */ -struct magi_cookie * magi_cookie_list_get(struct magi_cookie_list * list, - const char * name); +char * magi_cookie_list_get(struct magi_cookie_list * list, const char * name); /* Freeing and invalidation of list. */ void magi_cookie_list_destroy(struct magi_cookie_list * list); diff --git a/src/request.c b/src/request.c index e905e53..0db1e70 100644 --- a/src/request.c +++ b/src/request.c @@ -21,6 +21,7 @@ void magi_request_setup(struct magi_request * request) } } + void magi_tempfiles_add(struct magi_tempfiles * tmps, const char * name, const char * path, @@ -46,6 +47,16 @@ void magi_tempfiles_add(struct magi_tempfiles * tmps, tmps->maximums[tmps->count - 1] = max; } +void magi_tempfiles_destroy(struct magi_tempfiles * tmps) +{ + if (!tmps) { + return; + } + free(tmps->param_names); + free(tmps->locations); + free(tmps->maximums); +} + static void tempfiles(struct magi_file * file, char * addon, int addon_len, diff --git a/src/request.h b/src/request.h index be92370..0ac7bac 100644 --- a/src/request.h +++ b/src/request.h @@ -82,21 +82,27 @@ struct magi_request { /* Setup request with default settings. */ void magi_request_setup(struct magi_request * request); + struct magi_tempfiles { int count; const char ** param_names; const char ** locations; int * maximums; /* Null maximums[i] <=> unlimited tempfiles[i]. */ }; + void magi_tempfiles_add(struct magi_tempfiles * tmps, const char * name, const char * path, int max); + +void magi_tempfiles_destroy(struct magi_tempfiles * tmps); + /* Setup request callback with files loaded into corresponding to their * parameter names locations; paths are in magi_tempfiles struct. */ void magi_request_setup_tempfiles(struct magi_request * request, struct magi_tempfiles * table); + /* Destroys request. */ void magi_request_destroy(struct magi_request * request); |