Coverage Report

Created: 2026-04-12 07:04

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/unit/src/nxt_tstr.h
Line
Count
Source
1
2
/*
3
 * Copyright (C) NGINX, Inc.
4
 */
5
6
#ifndef _NXT_TSTR_H_INCLUDED_
7
#define _NXT_TSTR_H_INCLUDED_
8
9
10
#include <nxt_js.h>
11
12
typedef struct nxt_tstr_s        nxt_tstr_t;
13
typedef struct nxt_tstr_query_s  nxt_tstr_query_t;
14
15
16
struct nxt_tstr_state_s {
17
    nxt_mp_t            *pool;
18
    nxt_array_t         *var_refs;
19
#if (NXT_HAVE_NJS)
20
    nxt_js_conf_t       *jcf;
21
#endif
22
    uint8_t             test;  /* 1 bit */
23
};
24
25
26
typedef struct {
27
    nxt_var_cache_t     var;
28
#if (NXT_HAVE_NJS)
29
    nxt_js_cache_t      js;
30
#endif
31
} nxt_tstr_cache_t;
32
33
34
typedef enum {
35
    NXT_TSTR_STRZ       = 1 << 0,
36
    NXT_TSTR_LOGGING    = 1 << 1,
37
    NXT_TSTR_NEWLINE    = 1 << 2,
38
} nxt_tstr_flags_t;
39
40
41
typedef struct {
42
    nxt_tstr_t          *expr;
43
    uint8_t             negate;  /* 1 bit */
44
} nxt_tstr_cond_t;
45
46
47
nxt_tstr_state_t *nxt_tstr_state_new(nxt_mp_t *mp, nxt_bool_t test);
48
nxt_tstr_t *nxt_tstr_compile(nxt_tstr_state_t *state, const nxt_str_t *str,
49
    nxt_tstr_flags_t flags);
50
nxt_int_t nxt_tstr_test(nxt_tstr_state_t *state, nxt_str_t *str, u_char *error);
51
nxt_int_t nxt_tstr_state_done(nxt_tstr_state_t *state, u_char *error);
52
void nxt_tstr_state_release(nxt_tstr_state_t *state);
53
nxt_int_t nxt_tstr_cond_compile(nxt_tstr_state_t *state, nxt_str_t *str,
54
    nxt_tstr_cond_t *cond);
55
56
nxt_bool_t nxt_tstr_is_const(nxt_tstr_t *tstr);
57
void nxt_tstr_str(nxt_tstr_t *tstr, nxt_str_t *str);
58
59
nxt_int_t nxt_tstr_query_init(nxt_tstr_query_t **query_p,
60
    nxt_tstr_state_t *state, nxt_tstr_cache_t *cache, void *ctx,
61
    nxt_mp_t *mp);
62
nxt_int_t nxt_tstr_query(nxt_task_t *task, nxt_tstr_query_t *query,
63
    nxt_tstr_t *tstr, nxt_str_t *val);
64
void nxt_tstr_query_release(nxt_tstr_query_t *query);
65
66
67
#define nxt_tstr_is_js(str)                                         \
68
0
    nxt_strchr_start(str, '`')
69
70
71
nxt_inline nxt_bool_t
72
nxt_is_tstr(nxt_str_t *str)
73
0
{
74
0
    u_char  *p;
75
76
0
    p = memchr(str->start, '`', str->length);
77
0
    if (p != NULL) {
78
0
        return 1;
79
0
    }
80
81
0
    p = memchr(str->start, '$', str->length);
82
0
    if (p != NULL) {
83
0
        return 1;
84
0
    }
85
86
0
    return 0;
87
0
}
Unexecuted instantiation: nxt_http_controller_fuzz.c:nxt_is_tstr
Unexecuted instantiation: nxt_lib.c:nxt_is_tstr
Unexecuted instantiation: nxt_errno.c:nxt_is_tstr
Unexecuted instantiation: nxt_malloc.c:nxt_is_tstr
Unexecuted instantiation: nxt_file.c:nxt_is_tstr
Unexecuted instantiation: nxt_mem_map.c:nxt_is_tstr
Unexecuted instantiation: nxt_process.c:nxt_is_tstr
Unexecuted instantiation: nxt_process_title.c:nxt_is_tstr
Unexecuted instantiation: nxt_port_socket.c:nxt_is_tstr
Unexecuted instantiation: nxt_port_memory.c:nxt_is_tstr
Unexecuted instantiation: nxt_port_rpc.c:nxt_is_tstr
Unexecuted instantiation: nxt_port.c:nxt_is_tstr
Unexecuted instantiation: nxt_random.c:nxt_is_tstr
Unexecuted instantiation: nxt_mp.c:nxt_is_tstr
Unexecuted instantiation: nxt_string.c:nxt_is_tstr
Unexecuted instantiation: nxt_parse.c:nxt_is_tstr
Unexecuted instantiation: nxt_sprintf.c:nxt_is_tstr
Unexecuted instantiation: nxt_log.c:nxt_is_tstr
Unexecuted instantiation: nxt_murmur_hash.c:nxt_is_tstr
Unexecuted instantiation: nxt_lvlhsh.c:nxt_is_tstr
Unexecuted instantiation: nxt_buf.c:nxt_is_tstr
Unexecuted instantiation: nxt_sendbuf.c:nxt_is_tstr
Unexecuted instantiation: nxt_thread.c:nxt_is_tstr
Unexecuted instantiation: nxt_thread_mutex.c:nxt_is_tstr
Unexecuted instantiation: nxt_spinlock.c:nxt_is_tstr
Unexecuted instantiation: nxt_thread_time.c:nxt_is_tstr
Unexecuted instantiation: nxt_work_queue.c:nxt_is_tstr
Unexecuted instantiation: nxt_service.c:nxt_is_tstr
Unexecuted instantiation: nxt_log_moderation.c:nxt_is_tstr
Unexecuted instantiation: nxt_event_engine.c:nxt_is_tstr
Unexecuted instantiation: nxt_timer.c:nxt_is_tstr
Unexecuted instantiation: nxt_conn.c:nxt_is_tstr
Unexecuted instantiation: nxt_conn_connect.c:nxt_is_tstr
Unexecuted instantiation: nxt_conn_accept.c:nxt_is_tstr
Unexecuted instantiation: nxt_conn_read.c:nxt_is_tstr
Unexecuted instantiation: nxt_conn_write.c:nxt_is_tstr
Unexecuted instantiation: nxt_conn_close.c:nxt_is_tstr
Unexecuted instantiation: nxt_sockaddr.c:nxt_is_tstr
Unexecuted instantiation: nxt_listen_socket.c:nxt_is_tstr
Unexecuted instantiation: nxt_http_parse.c:nxt_is_tstr
Unexecuted instantiation: nxt_runtime.c:nxt_is_tstr
Unexecuted instantiation: nxt_conf.c:nxt_is_tstr
Unexecuted instantiation: nxt_conf_validation.c:nxt_is_tstr
Unexecuted instantiation: nxt_main_process.c:nxt_is_tstr
Unexecuted instantiation: nxt_signal_handlers.c:nxt_is_tstr
Unexecuted instantiation: nxt_router.c:nxt_is_tstr
Unexecuted instantiation: nxt_router_access_log.c:nxt_is_tstr
Unexecuted instantiation: nxt_h1proto.c:nxt_is_tstr
Unexecuted instantiation: nxt_status.c:nxt_is_tstr
Unexecuted instantiation: nxt_http_request.c:nxt_is_tstr
Unexecuted instantiation: nxt_http_response.c:nxt_is_tstr
Unexecuted instantiation: nxt_http_error.c:nxt_is_tstr
Unexecuted instantiation: nxt_http_route.c:nxt_is_tstr
Unexecuted instantiation: nxt_http_route_addr.c:nxt_is_tstr
Unexecuted instantiation: nxt_http_rewrite.c:nxt_is_tstr
Unexecuted instantiation: nxt_http_set_headers.c:nxt_is_tstr
Unexecuted instantiation: nxt_http_return.c:nxt_is_tstr
Unexecuted instantiation: nxt_http_static.c:nxt_is_tstr
Unexecuted instantiation: nxt_http_proxy.c:nxt_is_tstr
Unexecuted instantiation: nxt_http_chunk_parse.c:nxt_is_tstr
Unexecuted instantiation: nxt_http_variables.c:nxt_is_tstr
Unexecuted instantiation: nxt_application.c:nxt_is_tstr
Unexecuted instantiation: nxt_external.c:nxt_is_tstr
Unexecuted instantiation: nxt_port_hash.c:nxt_is_tstr
Unexecuted instantiation: nxt_websocket_accept.c:nxt_is_tstr
Unexecuted instantiation: nxt_http_websocket.c:nxt_is_tstr
Unexecuted instantiation: nxt_h1proto_websocket.c:nxt_is_tstr
Unexecuted instantiation: nxt_fs.c:nxt_is_tstr
Unexecuted instantiation: nxt_http_compression.c:nxt_is_tstr
Unexecuted instantiation: nxt_epoll_engine.c:nxt_is_tstr
Unexecuted instantiation: nxt_poll_engine.c:nxt_is_tstr
Unexecuted instantiation: nxt_select_engine.c:nxt_is_tstr
Unexecuted instantiation: nxt_linux_sendfile.c:nxt_is_tstr
Unexecuted instantiation: nxt_clone.c:nxt_is_tstr
Unexecuted instantiation: nxt_gmtime.c:nxt_is_tstr
Unexecuted instantiation: nxt_time.c:nxt_is_tstr
Unexecuted instantiation: nxt_socket.c:nxt_is_tstr
Unexecuted instantiation: nxt_socketpair.c:nxt_is_tstr
Unexecuted instantiation: nxt_socket_msg.c:nxt_is_tstr
Unexecuted instantiation: nxt_credential.c:nxt_is_tstr
Unexecuted instantiation: nxt_isolation.c:nxt_is_tstr
Unexecuted instantiation: nxt_signal.c:nxt_is_tstr
Unexecuted instantiation: nxt_rbtree.c:nxt_is_tstr
Unexecuted instantiation: nxt_utf8.c:nxt_is_tstr
Unexecuted instantiation: nxt_var.c:nxt_is_tstr
Unexecuted instantiation: nxt_tstr.c:nxt_is_tstr
Unexecuted instantiation: nxt_file_name.c:nxt_is_tstr
Unexecuted instantiation: nxt_djb_hash.c:nxt_is_tstr
Unexecuted instantiation: nxt_array.c:nxt_is_tstr
Unexecuted instantiation: nxt_list.c:nxt_is_tstr
Unexecuted instantiation: nxt_recvbuf.c:nxt_is_tstr
Unexecuted instantiation: nxt_thread_pool.c:nxt_is_tstr
Unexecuted instantiation: nxt_upstream.c:nxt_is_tstr
Unexecuted instantiation: nxt_upstream_round_robin.c:nxt_is_tstr
Unexecuted instantiation: nxt_capability.c:nxt_is_tstr
Unexecuted instantiation: nxt_sha1.c:nxt_is_tstr
Unexecuted instantiation: nxt_websocket.c:nxt_is_tstr
Unexecuted instantiation: nxt_fs_mount.c:nxt_is_tstr
Unexecuted instantiation: nxt_semaphore.c:nxt_is_tstr
88
89
90
#endif /* _NXT_TSTR_H_INCLUDED_ */