Line data Source code
1 : #ifndef DDEBUG
2 : #define DDEBUG 0
3 : #endif
4 : #include "ddebug.h"
5 :
6 : #include <ndk.h>
7 : #include "ngx_http_set_default_value.h"
8 :
9 :
10 : ngx_int_t
11 0 : ngx_http_set_misc_set_if_empty(ngx_http_request_t *r, ngx_str_t *res,
12 : ngx_http_variable_value_t *v)
13 : {
14 : ngx_http_variable_value_t *cur_v, *default_v;
15 :
16 0 : cur_v = &v[0];
17 0 : default_v = &v[1];
18 :
19 0 : if (cur_v->not_found || cur_v->len == 0) {
20 0 : res->data = default_v->data;
21 0 : res->len = default_v->len;
22 :
23 0 : return NGX_OK;
24 : }
25 :
26 0 : res->data = cur_v->data;
27 0 : res->len = cur_v->len;
28 :
29 0 : return NGX_OK;
30 : }
31 :
32 :
33 : char *
34 0 : ngx_http_set_if_empty(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
35 : {
36 : ngx_str_t *value;
37 : ndk_set_var_t filter;
38 :
39 0 : value = cf->args->elts;
40 :
41 0 : filter.type = NDK_SET_VAR_MULTI_VALUE;
42 0 : filter.func = (void *) ngx_http_set_misc_set_if_empty;
43 0 : filter.size = 2;
44 0 : filter.data = NULL;
45 :
46 0 : return ndk_set_var_multi_value_core(cf, &value[1], &value[1], &filter);
47 : }
48 :
|