From: Dmitry Volyntsev Date: Thu, 11 Apr 2019 17:09:41 +0000 (+0300) Subject: Added string functions wrappers. X-Git-Url: http://www.kaiwu.me/postgresql/commit/?a=commitdiff_plain;h=aefbd774415b066e111f799cf95bc52d6a8d2126;p=njs.git Added string functions wrappers. nxt_strlen(), nxt_strchr(), nxt_strlchr(). --- diff --git a/njs/njs_fs.c b/njs/njs_fs.c index 516b820c..1dbb3761 100644 --- a/njs/njs_fs.c +++ b/njs/njs_fs.c @@ -899,7 +899,7 @@ static njs_ret_t njs_fs_error(njs_vm_t *vm, const char *syscall, njs_object_prop_t *prop; nxt_lvlhsh_query_t lhq; - size = description != NULL ? strlen(description) : 0; + size = description != NULL ? nxt_strlen(description) : 0; ret = njs_string_new(vm, &string, (u_char *) description, size, size); if (nxt_slow_path(ret != NXT_OK)) { @@ -957,7 +957,7 @@ static njs_ret_t njs_fs_error(njs_vm_t *vm, const char *syscall, } if (syscall != NULL) { - size = strlen(syscall); + size = nxt_strlen(syscall); ret = njs_string_new(vm, &string, (u_char *) syscall, size, size); if (nxt_slow_path(ret != NXT_OK)) { return NJS_ERROR; diff --git a/njs/njs_regexp.c b/njs/njs_regexp.c index dac8b84c..2725daa9 100644 --- a/njs/njs_regexp.c +++ b/njs/njs_regexp.c @@ -526,7 +526,7 @@ njs_regexp_prototype_source(njs_vm_t *vm, njs_value_t *value, /* Skip starting "/". */ source = pattern->source + 1; - size = strlen((char *) source) - pattern->flags; + size = nxt_strlen(source) - pattern->flags; length = nxt_utf8_length(source, size); return njs_regexp_string_create(vm, retval, source, size, length); @@ -559,7 +559,7 @@ njs_regexp_to_string(njs_vm_t *vm, njs_value_t *retval, pattern = value->data.u.regexp->pattern; source = pattern->source; - size = strlen((char *) source); + size = nxt_strlen(source); length = nxt_utf8_length(source, size); return njs_regexp_string_create(vm, retval, source, size, length); diff --git a/njs/njs_shell.c b/njs/njs_shell.c index 424e509f..0761084e 100644 --- a/njs/njs_shell.c +++ b/njs/njs_shell.c @@ -236,12 +236,12 @@ main(int argc, char **argv) goto done; } - memcpy(path + strlen(path), "/shell", sizeof("/shell")); + memcpy(path + nxt_strlen(path), "/shell", sizeof("/shell")); opts.file = path; } vm_options.file.start = (u_char *) opts.file; - vm_options.file.length = strlen(opts.file); + vm_options.file.length = nxt_strlen(opts.file); } vm_options.init = !opts.interactive; @@ -438,7 +438,7 @@ njs_interactive_shell(njs_opts_t *opts, njs_vm_opt_t *vm_options) break; } - line.length = strlen((char *) line.start); + line.length = nxt_strlen(line.start); if (line.length == 0) { continue; } @@ -575,7 +575,7 @@ close_fd: static njs_vm_t * njs_create_vm(njs_opts_t *opts, njs_vm_opt_t *vm_options) { - char *p, *start; + u_char *p, *start; njs_vm_t *vm; nxt_int_t ret; nxt_str_t path; @@ -594,7 +594,7 @@ njs_create_vm(njs_opts_t *opts, njs_vm_opt_t *vm_options) for (i = 0; i < opts->n_paths; i++) { path.start = (u_char *) opts->paths[i]; - path.length = strlen(opts->paths[i]); + path.length = nxt_strlen(opts->paths[i]); ret = njs_vm_add_path(vm, &path); if (ret != NXT_OK) { @@ -603,16 +603,16 @@ njs_create_vm(njs_opts_t *opts, njs_vm_opt_t *vm_options) } } - start = getenv("NJS_PATH"); + start = (u_char *) getenv("NJS_PATH"); if (start == NULL) { return vm; } for ( ;; ) { - p = strchr(start, ':'); + p = nxt_strchr(start, ':'); - path.start = (u_char *) start; - path.length = (p != NULL) ? (size_t) (p - start) : strlen(start); + path.start = start; + path.length = (p != NULL) ? (size_t) (p - start) : nxt_strlen(start); ret = njs_vm_add_path(vm, &path); if (ret != NXT_OK) { @@ -784,7 +784,7 @@ njs_completion_generator(const char *text, int state) if (state == 0) { cmpl->phase = 0; cmpl->index = 0; - cmpl->length = strlen(text); + cmpl->length = nxt_strlen(text); cmpl->suffix_completions = NULL; nxt_lvlhsh_each_init(&cmpl->lhe, &njs_variables_hash_proto); diff --git a/nxt/nxt_string.h b/nxt/nxt_string.h index 8d528f3f..3859e0ac 100644 --- a/nxt/nxt_string.h +++ b/nxt/nxt_string.h @@ -41,6 +41,27 @@ nxt_upper_case(u_char c) } +nxt_inline u_char * +nxt_strlchr(u_char *p, u_char *last, u_char c) +{ + while (p < last) { + + if (*p == c) { + return p; + } + + p++; + } + + return NULL; +} + + +#define \ +nxt_strlen(s) \ + strlen((char *) s) + + #define \ nxt_cpymem(dst, src, n) \ (((u_char *) memcpy(dst, src, n)) + (n)) @@ -51,6 +72,11 @@ nxt_strncmp(s1, s2, n) \ strncmp((char *) s1, (char *) s2, n) +#define \ +nxt_strchr(s1, c) \ + (u_char *) strchr((const char *) s1, (int) c) + + #define \ nxt_memset(buf, c, length) \ (void) memset(buf, c, length)