aboutsummaryrefslogtreecommitdiff
path: root/examples/form/main.c
blob: afc1954d73c005af324130967b288db0a3240e50 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <libweb/form.h>
#include <stdlib.h>
#include <stdio.h>

static int print(const char *const key, const char *const value,
    void *const user)
{
    unsigned *const cnt = user;

    printf("key=%s, value=%s, cnt=%u\n", key, value, ++(*cnt));
    return 0;
}

int main(int argc, char *argv[])
{
    int ret = EXIT_FAILURE;
    const char *payload;
    struct form *f = NULL;
    unsigned cnt = 0;
    int n;

    if (argc != 2)
    {
        fprintf(stderr, "Usage: %s <payload>\n", *argv);
        goto end;
    }
    else if ((n = form_alloc(payload = argv[1], &f)) < 0)
    {
        fprintf(stderr, "%s: form_alloc failed\n", __func__);
        goto end;
    }
    else if (n)
    {
        fprintf(stderr, "%s: invalid user input: %s\n", __func__, payload);
        goto end;
    }
    else if (form_foreach(f, print, &cnt))
    {
        fprintf(stderr, "%s: form_foreach failed\n", __func__);
        goto end;
    }

    ret = EXIT_SUCCESS;

end:
    form_free(f);
    return ret;
}