[mod_cgi] skip local-redir handling if to self (fixes #2779, #2108)
[lighttpd.git] / src / data_integer.c
blob429cc30b7e3c8157f7e56ca744f8dd6a89e7600f
1 #include "first.h"
3 #include "array.h"
5 #include <stdio.h>
6 #include <stdlib.h>
7 #include <string.h>
9 static data_unset *data_integer_copy(const data_unset *s) {
10 data_integer *src = (data_integer *)s;
11 data_integer *ds = data_integer_init();
13 buffer_copy_buffer(ds->key, src->key);
14 ds->is_index_key = src->is_index_key;
15 ds->value = src->value;
16 return (data_unset *)ds;
19 static void data_integer_free(data_unset *d) {
20 data_integer *ds = (data_integer *)d;
22 buffer_free(ds->key);
24 free(d);
27 static void data_integer_reset(data_unset *d) {
28 data_integer *ds = (data_integer *)d;
30 /* reused integer elements */
31 buffer_reset(ds->key);
32 ds->value = 0;
35 static int data_integer_insert_dup(data_unset *dst, data_unset *src) {
36 UNUSED(dst);
38 src->free(src);
40 return 0;
43 static void data_integer_print(const data_unset *d, int depth) {
44 data_integer *ds = (data_integer *)d;
45 UNUSED(depth);
47 fprintf(stdout, "%d", ds->value);
51 data_integer *data_integer_init(void) {
52 data_integer *ds;
54 ds = calloc(1, sizeof(*ds));
55 force_assert(NULL != ds);
57 ds->key = buffer_init();
58 ds->value = 0;
60 ds->copy = data_integer_copy;
61 ds->free = data_integer_free;
62 ds->reset = data_integer_reset;
63 ds->insert_dup = data_integer_insert_dup;
64 ds->print = data_integer_print;
65 ds->type = TYPE_INTEGER;
67 return ds;