aboutsummaryrefslogtreecommitdiff
path: root/examples/upload.c
diff options
context:
space:
mode:
Diffstat (limited to 'examples/upload.c')
-rw-r--r--examples/upload.c28
1 files changed, 16 insertions, 12 deletions
diff --git a/examples/upload.c b/examples/upload.c
index 2ef8bc5..25fefaf 100644
--- a/examples/upload.c
+++ b/examples/upload.c
@@ -1,15 +1,17 @@
#include <cgi.h>
#include <multipart.h>
#include <request.h>
+#include <response.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void tempfile_callback(struct magi_file * file,
- char * buffer,
- int len,
- void * _)
+ char * addon,
+ int addon_len,
+ int is_addon_last,
+ void * unused)
{
if (!strcmp(file->param_name, "data")) {
static FILE * f = 0;
@@ -17,10 +19,10 @@ void tempfile_callback(struct magi_file * file,
remove(file->param_name);
f = fopen(file->param_name, "wb");
}
- if (len) {
- fwrite(buffer, 1, len, f);
+ if (addon_len) {
+ fwrite(addon, 1, addon_len, f);
}
- if (len < magi_file_callback_portion_max) {
+ if (is_addon_last) {
fclose(f);
f = 0;
}
@@ -30,7 +32,7 @@ void tempfile_callback(struct magi_file * file,
void response_request(struct magi_request * req, struct magi_response * res)
{
magi_response_content_type(res, magi_xhtml);
- magi_response_content(
+ magi_response_add(
res, "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' "
"'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>"
"<html xmlns='http://www.w3.org/1999/xhtml'>"
@@ -45,8 +47,8 @@ void response_request(struct magi_request * req, struct magi_response * res)
"</body>"
"</html>");
- struct magi_field * name = magi_field_list_get(req->fields, "name");
- struct magi_field * data = magi_field_list_get(req->fields, "data");
+ struct magi_param * name = magi_param_list_get(req->params, "name");
+ struct magi_param * data = magi_param_list_get(req->params, "data");
if (name && name->data && data) {
rename("data", name->data);
}
@@ -55,13 +57,15 @@ void response_request(struct magi_request * req, struct magi_response * res)
int main(int argc, char const * argv[])
{
struct magi_request request;
- if (magi_cgi(&request, tempfile_callback, 0, 0)) {
+ magi_request_setup(&request);
+ request.file_callback = tempfile_callback;
+ if (magi_request_cgi(&request)) {
struct magi_response response;
response_request(&request, &response);
- magi_cgi_response(&response);
+ magi_response_cgi(&response);
magi_response_destroy();
} else {
- magi_cgi_error(request.error);
+ magi_error_cgi(request.error);
}
magi_request_destroy(&request);
return 0;