Welcome! Log In Create A New Profile

Advanced

[njs] Added string functions wrappers.

Dmitry Volyntsev
April 11, 2019 01:16PM
details: https://hg.nginx.org/njs/rev/e05e9b801355
branches:
changeset: 882:e05e9b801355
user: Dmitry Volyntsev <xeioex@nginx.com>
date: Thu Apr 11 20:09:41 2019 +0300
description:
Added string functions wrappers.

nxt_strlen(), nxt_strchr(), nxt_strlchr().

diffstat:

njs/njs_fs.c | 4 ++--
njs/njs_regexp.c | 4 ++--
njs/njs_shell.c | 20 ++++++++++----------
nxt/nxt_string.h | 26 ++++++++++++++++++++++++++
4 files changed, 40 insertions(+), 14 deletions(-)

diffs (160 lines):

diff -r 5c6ca5b99ab0 -r e05e9b801355 njs/njs_fs.c
--- a/njs/njs_fs.c Thu Apr 11 20:09:41 2019 +0300
+++ b/njs/njs_fs.c Thu Apr 11 20:09:41 2019 +0300
@@ -899,7 +899,7 @@ static njs_ret_t njs_fs_error(njs_vm_t *
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 *
}

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 -r 5c6ca5b99ab0 -r e05e9b801355 njs/njs_regexp.c
--- a/njs/njs_regexp.c Thu Apr 11 20:09:41 2019 +0300
+++ b/njs/njs_regexp.c Thu Apr 11 20:09:41 2019 +0300
@@ -526,7 +526,7 @@ njs_regexp_prototype_source(njs_vm_t *vm
/* 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_v
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 -r 5c6ca5b99ab0 -r e05e9b801355 njs/njs_shell.c
--- a/njs/njs_shell.c Thu Apr 11 20:09:41 2019 +0300
+++ b/njs/njs_shell.c Thu Apr 11 20:09:41 2019 +0300
@@ -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,
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_o

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_o
}
}

- 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 *tex
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 -r 5c6ca5b99ab0 -r e05e9b801355 nxt/nxt_string.h
--- a/nxt/nxt_string.h Thu Apr 11 20:09:41 2019 +0300
+++ b/nxt/nxt_string.h Thu Apr 11 20:09:41 2019 +0300
@@ -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))
@@ -52,6 +73,11 @@ nxt_strncmp(s1, 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)

_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[njs] Added string functions wrappers.

Dmitry Volyntsev 132 April 11, 2019 01:16PM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 92
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready