[njs] Style.
details: https://hg.nginx.org/njs/rev/c7e18bd12776 branches: changeset: 742:c7e18bd12776 user: hongzhidao date: Tue Jan 29 01:30:04 2019 +0800 description: Style. diffstat: njs/njs_lexer_keyword.c | 8 njs/njs_module.h| 6 -- njs/njs_parser.c| 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diffs (53 lines): diff -r 348a34597bab -r c7e18bd12776 njs/njs_lexer_keyword.c --- a/njs/njs_lexer_keyword.c Tue Jan 29 18:15:03 2019 +0300 +++ b/njs/njs_lexer_keyword.c Tue Jan 29 01:30:04 2019 +0800 @@ -88,10 +88,10 @@ static const njs_keyword_t njs_keywords { nxt_string("encodeURIComponent"), NJS_TOKEN_ENCODE_URI_COMPONENT, 0 }, { nxt_string("decodeURI"), NJS_TOKEN_DECODE_URI, 0 }, { nxt_string("decodeURIComponent"), NJS_TOKEN_DECODE_URI_COMPONENT, 0 }, -{ nxt_string("require"), NJS_TOKEN_REQUIRE, 0 }, -{ nxt_string("setTimeout"), NJS_TOKEN_SET_TIMEOUT, 0 }, -{ nxt_string("setImmediate"), NJS_TOKEN_SET_IMMEDIATE, 0 }, -{ nxt_string("clearTimeout"), NJS_TOKEN_CLEAR_TIMEOUT, 0 }, +{ nxt_string("require"), NJS_TOKEN_REQUIRE, 0 }, +{ nxt_string("setTimeout"),NJS_TOKEN_SET_TIMEOUT, 0 }, +{ nxt_string("setImmediate"), NJS_TOKEN_SET_IMMEDIATE, 0 }, +{ nxt_string("clearTimeout"), NJS_TOKEN_CLEAR_TIMEOUT, 0 }, /* Reserved words. */ diff -r 348a34597bab -r c7e18bd12776 njs/njs_module.h --- a/njs/njs_module.h Tue Jan 29 18:15:03 2019 +0300 +++ b/njs/njs_module.h Tue Jan 29 01:30:04 2019 +0800 @@ -7,6 +7,7 @@ #ifndef _NJS_MODULE_H_INCLUDED_ #define _NJS_MODULE_H_INCLUDED_ + typedef struct { nxt_str_t name; njs_object_tobject; @@ -16,8 +17,9 @@ typedef struct { njs_ret_t njs_module_require(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, njs_index_t unused); -extern const nxt_lvlhsh_proto_t njs_modules_hash_proto; -extern const njs_object_init_t njs_require_function_init; +extern const nxt_lvlhsh_proto_t njs_modules_hash_proto; +extern const njs_object_init_t njs_require_function_init; + #endif /* _NJS_MODULE_H_INCLUDED_ */ diff -r 348a34597bab -r c7e18bd12776 njs/njs_parser.c --- a/njs/njs_parser.c Tue Jan 29 18:15:03 2019 +0300 +++ b/njs/njs_parser.c Tue Jan 29 01:30:04 2019 +0800 @@ -720,7 +720,7 @@ njs_parser_function_lambda(njs_vm_t *vm, } } -token = njs_parser_token(parser); +token = njs_parser_token(parser); if (nxt_slow_path(token <= NJS_TOKEN_ILLEGAL)) { return token; } ___ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel
[njs] Fixed SyntaxError message for unterminated regexp token.
details: https://hg.nginx.org/njs/rev/d99f8ee4255c branches: changeset: 745:d99f8ee4255c user: Dmitry Volyntsev date: Wed Jan 30 18:49:16 2019 +0300 description: Fixed SyntaxError message for unterminated regexp token. diffstat: njs/njs_regexp.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diffs (12 lines): diff -r e136756f6bb2 -r d99f8ee4255c njs/njs_regexp.c --- a/njs/njs_regexp.c Wed Jan 30 18:48:23 2019 +0300 +++ b/njs/njs_regexp.c Wed Jan 30 18:49:16 2019 +0300 @@ -184,7 +184,7 @@ njs_regexp_literal(njs_vm_t *vm, njs_par } njs_parser_syntax_error(vm, parser, "Unterminated RegExp \"%.*s\"", -p - lexer->start - 1, lexer->start - 1); +p - (lexer->start - 1), lexer->start - 1); return NJS_TOKEN_ILLEGAL; } ___ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel
[njs] Fixed lexer->text state for the last token.
details: https://hg.nginx.org/njs/rev/e136756f6bb2 branches: changeset: 744:e136756f6bb2 user: Dmitry Volyntsev date: Wed Jan 30 18:48:23 2019 +0300 description: Fixed lexer->text state for the last token. diffstat: njs/njs_lexer.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diffs (12 lines): diff -r ea483ef4631a -r e136756f6bb2 njs/njs_lexer.c --- a/njs/njs_lexer.c Wed Jan 30 18:47:59 2019 +0300 +++ b/njs/njs_lexer.c Wed Jan 30 18:48:23 2019 +0300 @@ -450,6 +450,8 @@ njs_lexer_next_token(njs_lexer_t *lexer) return njs_lexer_multi(lexer, token, n, multi); } +lexer->text.length = lexer->start - lexer->text.start; + return NJS_TOKEN_END; } ___ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel
[njs] Replacing vsprintf with nxt_vsprintf in exceptions.
details: https://hg.nginx.org/njs/rev/dbffb3031c77 branches: changeset: 746:dbffb3031c77 user: Dmitry Volyntsev date: Wed Jan 30 18:49:33 2019 +0300 description: Replacing vsprintf with nxt_vsprintf in exceptions. diffstat: njs/njs_crypto.c| 6 +--- njs/njs_error.c | 6 +++- njs/njs_fs.c| 24 +++-- njs/njs_generator.c | 7 ++--- njs/njs_json.c | 2 +- njs/njs_module.c| 3 +- njs/njs_object.c| 7 ++--- njs/njs_parser.c| 57 +--- njs/njs_regexp.c| 9 +++ njs/njs_string.c| 5 +-- njs/njs_variable.c | 3 +- njs/njs_vm.c| 18 ++-- 12 files changed, 59 insertions(+), 88 deletions(-) diffs (465 lines): diff -r d99f8ee4255c -r dbffb3031c77 njs/njs_crypto.c --- a/njs/njs_crypto.c Wed Jan 30 18:49:16 2019 +0300 +++ b/njs/njs_crypto.c Wed Jan 30 18:49:33 2019 +0300 @@ -691,8 +691,7 @@ njs_crypto_alg(njs_vm_t *vm, const nxt_s } } -njs_type_error(vm, "not supported algorithm: '%.*s'", - (int) name->length, name->start); +njs_type_error(vm, "not supported algorithm: '%V'", name); return NULL; } @@ -709,8 +708,7 @@ njs_crypto_encoding(njs_vm_t *vm, const } } -njs_type_error(vm, "Unknown digest encoding: '%.*s'", - (int) name->length, name->start); +njs_type_error(vm, "Unknown digest encoding: '%V'", name); return NULL; } diff -r d99f8ee4255c -r dbffb3031c77 njs/njs_error.c --- a/njs/njs_error.c Wed Jan 30 18:49:16 2019 +0300 +++ b/njs/njs_error.c Wed Jan 30 18:49:33 2019 +0300 @@ -23,13 +23,15 @@ njs_exception_error_create(njs_vm_t *vm, nxt_int_t ret; njs_value_t string; njs_object_t *error; -char buf[256]; +u_charbuf[256], *p; if (fmt != NULL) { va_start(args, fmt); -size = vsnprintf(buf, sizeof(buf), fmt, args); +p = nxt_vsprintf(buf, buf + sizeof(buf), fmt, args); va_end(args); +size = p - buf; + } else { size = 0; } diff -r d99f8ee4255c -r dbffb3031c77 njs/njs_fs.c --- a/njs/njs_fs.c Wed Jan 30 18:49:16 2019 +0300 +++ b/njs/njs_fs.c Wed Jan 30 18:49:33 2019 +0300 @@ -165,8 +165,7 @@ njs_fs_read_file(njs_vm_t *vm, njs_value flags = njs_fs_flags(&flag); if (nxt_slow_path(flags == -1)) { -njs_type_error(vm, "Unknown file open flags: '%.*s'", - (int) flag.length, flag.start); +njs_type_error(vm, "Unknown file open flags: '%V'", &flag); return NJS_ERROR; } @@ -178,8 +177,7 @@ njs_fs_read_file(njs_vm_t *vm, njs_value if (encoding.length != 0 && (encoding.length != 4 || memcmp(encoding.start, "utf8", 4) != 0)) { -njs_type_error(vm, "Unknown encoding: '%.*s'", - (int) encoding.length, encoding.start); +njs_type_error(vm, "Unknown encoding: '%V'", &encoding); return NJS_ERROR; } @@ -362,8 +360,7 @@ njs_fs_read_file_sync(njs_vm_t *vm, njs_ flags = njs_fs_flags(&flag); if (nxt_slow_path(flags == -1)) { -njs_type_error(vm, "Unknown file open flags: '%.*s'", - (int) flag.length, flag.start); +njs_type_error(vm, "Unknown file open flags: '%V'", &flag); return NJS_ERROR; } @@ -375,8 +372,7 @@ njs_fs_read_file_sync(njs_vm_t *vm, njs_ if (encoding.length != 0 && (encoding.length != 4 || memcmp(encoding.start, "utf8", 4) != 0)) { -njs_type_error(vm, "Unknown encoding: '%.*s'", - (int) encoding.length, encoding.start); +njs_type_error(vm, "Unknown encoding: '%V'", &encoding); return NJS_ERROR; } @@ -611,8 +607,7 @@ static njs_ret_t njs_fs_write_file_inter if (flag.start != NULL) { flags = njs_fs_flags(&flag); if (nxt_slow_path(flags == -1)) { -njs_type_error(vm, "Unknown file open flags: '%.*s'", - (int) flag.length, flag.start); +njs_type_error(vm, "Unknown file open flags: '%V'", &flag); return NJS_ERROR; } @@ -635,8 +630,7 @@ static njs_ret_t njs_fs_write_file_inter if (encoding.length != 0 && (encoding.length != 4 || memcmp(encoding.start, "utf8", 4) != 0)) { -njs_type_error(vm, "Unknown encoding: '%.*s'", - (int) encoding.length, encoding.start); +njs_type_error(vm, "Unknown encoding: '%V'", &encoding); return NJS_ERROR; } @@ -785,8 +779,7 @@ njs_fs_write_file_sync_internal(njs_vm_t if (flag.start != NULL) { flags = njs_fs_flags(&flag); if (nxt_slow_path(flags == -1)) { -njs_type_error(vm, "Unknown file open flags: '%.*s'", - (int) flag.length, flag.start); +njs_type_error(vm, "Unknown file open flags: '%V'", &flag);
[njs] Imported nxt_sprintf.c.
details: https://hg.nginx.org/njs/rev/ea483ef4631a branches: changeset: 743:ea483ef4631a user: Dmitry Volyntsev date: Wed Jan 30 18:47:59 2019 +0300 description: Imported nxt_sprintf.c. diffstat: Makefile |2 + njs/njs_core.h|1 + nxt/Makefile | 13 + nxt/nxt_sprintf.c | 587 ++ nxt/nxt_sprintf.h | 16 + nxt/nxt_stub.h|2 - nxt/nxt_types.h | 19 + 7 files changed, 638 insertions(+), 2 deletions(-) diffs (723 lines): diff -r c7e18bd12776 -r ea483ef4631a Makefile --- a/Makefile Tue Jan 29 01:30:04 2019 +0800 +++ b/Makefile Wed Jan 30 18:47:59 2019 +0300 @@ -51,6 +51,7 @@ NXT_BUILDDIR =build $(NXT_BUILDDIR)/nxt_time.o \ $(NXT_BUILDDIR)/nxt_malloc.o \ $(NXT_BUILDDIR)/nxt_mp.o \ + $(NXT_BUILDDIR)/nxt_sprintf.o \ ar -r -c $(NXT_BUILDDIR)/libnjs.a \ $(NXT_BUILDDIR)/njs_shell.o \ @@ -97,6 +98,7 @@ NXT_BUILDDIR =build $(NXT_BUILDDIR)/nxt_time.o \ $(NXT_BUILDDIR)/nxt_malloc.o \ $(NXT_BUILDDIR)/nxt_mp.o \ + $(NXT_BUILDDIR)/nxt_sprintf.o \ all: test lib_test diff -r c7e18bd12776 -r ea483ef4631a njs/njs_core.h --- a/njs/njs_core.hTue Jan 29 01:30:04 2019 +0800 +++ b/njs/njs_core.hWed Jan 30 18:47:59 2019 +0300 @@ -27,6 +27,7 @@ #include #include #include +#include #include #include diff -r c7e18bd12776 -r ea483ef4631a nxt/Makefile --- a/nxt/Makefile Tue Jan 29 01:30:04 2019 +0800 +++ b/nxt/Makefile Wed Jan 30 18:47:59 2019 +0300 @@ -22,6 +22,7 @@ NXT_LIB = nxt $(NXT_BUILDDIR)/nxt_trace.o \ $(NXT_BUILDDIR)/nxt_time.o \ $(NXT_BUILDDIR)/nxt_mp.o \ + $(NXT_BUILDDIR)/nxt_sprintf.o \ ar -r -c $(NXT_BUILDDIR)/libnxt.a \ $(NXT_BUILDDIR)/nxt_diyfp.o \ @@ -41,6 +42,7 @@ NXT_LIB = nxt $(NXT_BUILDDIR)/nxt_time.o \ $(NXT_BUILDDIR)/nxt_trace.o \ $(NXT_BUILDDIR)/nxt_mp.o \ + $(NXT_BUILDDIR)/nxt_sprintf.o \ $(NXT_BUILDDIR)/nxt_diyfp.o: \ $(NXT_LIB)/nxt_types.h \ @@ -244,4 +246,15 @@ NXT_LIB = nxt -I$(NXT_LIB) \ $(NXT_LIB)/nxt_mp.c +$(NXT_BUILDDIR)/nxt_sprintf.o: \ + $(NXT_LIB)/nxt_types.h \ + $(NXT_LIB)/nxt_clang.h \ + $(NXT_LIB)/nxt_alignment.h \ + $(NXT_LIB)/nxt_sprintf.h \ + $(NXT_LIB)/nxt_sprintf.c \ + + $(NXT_CC) -c -o $(NXT_BUILDDIR)/nxt_sprintf.o $(NXT_CFLAGS) \ + -I$(NXT_LIB) \ + $(NXT_LIB)/nxt_sprintf.c + include $(NXT_LIB)/test/Makefile diff -r c7e18bd12776 -r ea483ef4631a nxt/nxt_sprintf.c --- /dev/null Thu Jan 01 00:00:00 1970 + +++ b/nxt/nxt_sprintf.c Wed Jan 30 18:47:59 2019 +0300 @@ -0,0 +1,587 @@ + +/* + * Copyright (C) Igor Sysoev + * Copyright (C) NGINX, Inc. + */ + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + + +/* + * Supported formats: + * + *%[0][width][x][X]Onxt_off_t + *%[0][width]T nxt_time_t + *%[0][width][u][x|X]z ssize_t/size_t + *%[0][width][u][x|X]d int/u_int + *%[0][width][u][x|X]l long + *%[0][width|m][u][x|X]inxt_int_t/nxt_uint_t + *%[0][width][u][x|X]D int32_t/uint32_t + *%[0][width][u][x|X]L int64_t/uint64_t + *%[0][width][.width]f double, max valid number fits to %18.15f + * + *%dint + * + *%snull-terminated string + *%*s length and string + * + *%pvoid * + *%bnxt_bool_t + *%Vnxt_str_t * + *%Z'\0' + *%n'\n' + *%cchar + *%%% + * + * Reserved: + *%tptrdiff_t + *%Snull-terminated wchar string + *%Cwchar + *%[0][width][u][x|X]Q int128_t/uint128_t + */ + + +u_char * +nxt_sprintf(u_char *buf, u_char *end, const char *fmt, ...) +{ +u_char *p; +va_list args; + +va_start(args, fmt); +p = nxt_vsprintf(buf, end, fmt, args); +va_end(args); + +return p; +} + + +/* + * nxt_sprintf_t is used: + *to pass several parameters of nxt_integer() via single pointer + *and to store little used variables of nxt_vsprintf(). + */ + +typedef struct { + u_char*end; + const u_char *hex; + uint32_t width; + int32_t frac_width; + uint8_t max_width; + u_charpadding; +} nxt_sprintf_t; + + +static u_char *nxt_integer(nxt_sprintf_t *spf, u_char *buf, uint64_t ui64); +static u_char *nxt_number(nxt_sprintf_t *spf, u_char *buf, double n); + + +/* A right way of "f == 0.0". */ +#define nxt_double_is_zero(f) (fabs(f) <= FLT_E
[njs] Unifying quotes usage in exceptions.
details: https://hg.nginx.org/njs/rev/ac9b1c01a9b0 branches: changeset: 747:ac9b1c01a9b0 user: Dmitry Volyntsev date: Wed Jan 30 18:50:33 2019 +0300 description: Unifying quotes usage in exceptions. diffstat: njs/njs_crypto.c| 20 ++-- njs/njs_date.c |2 +- njs/njs_error.c |2 +- njs/njs_fs.c| 16 +- njs/njs_function.c |8 +- njs/njs_module.c|2 +- njs/njs_object.c|8 +- njs/njs_regexp.c|6 +- njs/njs_string.c|6 +- njs/njs_vm.c| 16 +- njs/test/njs_expect_test.exp|4 +- njs/test/njs_interactive_test.c | 16 +- njs/test/njs_unit_test.c| 162 13 files changed, 134 insertions(+), 134 deletions(-) diffs (truncated from 1067 to 1000 lines): diff -r dbffb3031c77 -r ac9b1c01a9b0 njs/njs_crypto.c --- a/njs/njs_crypto.c Wed Jan 30 18:49:33 2019 +0300 +++ b/njs/njs_crypto.c Wed Jan 30 18:50:33 2019 +0300 @@ -211,12 +211,12 @@ njs_hash_prototype_update(njs_vm_t *vm, } if (nxt_slow_path(!njs_is_object_value(&args[0]))) { -njs_type_error(vm, "'this' is not an object_value"); +njs_type_error(vm, "\"this\" is not an object_value"); return NJS_ERROR; } if (nxt_slow_path(!njs_is_data(&args[0].data.u.object_value->value))) { -njs_type_error(vm, "value of 'this' is not a data type"); +njs_type_error(vm, "value of \"this\" is not a data type"); return NJS_ERROR; } @@ -257,12 +257,12 @@ njs_hash_prototype_digest(njs_vm_t *vm, } if (nxt_slow_path(!njs_is_object_value(&args[0]))) { -njs_type_error(vm, "'this' is not an object_value"); +njs_type_error(vm, "\"this\" is not an object_value"); return NJS_ERROR; } if (nxt_slow_path(!njs_is_data(&args[0].data.u.object_value->value))) { -njs_type_error(vm, "value of 'this' is not a data type"); +njs_type_error(vm, "value of \"this\" is not a data type"); return NJS_ERROR; } @@ -470,12 +470,12 @@ njs_hmac_prototype_update(njs_vm_t *vm, } if (nxt_slow_path(!njs_is_object_value(&args[0]))) { -njs_type_error(vm, "'this' is not an object_value"); +njs_type_error(vm, "\"this\" is not an object_value"); return NJS_ERROR; } if (nxt_slow_path(!njs_is_data(&args[0].data.u.object_value->value))) { -njs_type_error(vm, "value of 'this' is not a data type"); +njs_type_error(vm, "value of \"this\" is not a data type"); return NJS_ERROR; } @@ -516,12 +516,12 @@ njs_hmac_prototype_digest(njs_vm_t *vm, } if (nxt_slow_path(!njs_is_object_value(&args[0]))) { -njs_type_error(vm, "'this' is not an object_value"); +njs_type_error(vm, "\"this\" is not an object_value"); return NJS_ERROR; } if (nxt_slow_path(!njs_is_data(&args[0].data.u.object_value->value))) { -njs_type_error(vm, "value of 'this' is not a data type"); +njs_type_error(vm, "value of \"this\" is not a data type"); return NJS_ERROR; } @@ -691,7 +691,7 @@ njs_crypto_alg(njs_vm_t *vm, const nxt_s } } -njs_type_error(vm, "not supported algorithm: '%V'", name); +njs_type_error(vm, "not supported algorithm: \"%V\"", name); return NULL; } @@ -708,7 +708,7 @@ njs_crypto_encoding(njs_vm_t *vm, const } } -njs_type_error(vm, "Unknown digest encoding: '%V'", name); +njs_type_error(vm, "Unknown digest encoding: \"%V\"", name); return NULL; } diff -r dbffb3031c77 -r ac9b1c01a9b0 njs/njs_date.c --- a/njs/njs_date.cWed Jan 30 18:49:33 2019 +0300 +++ b/njs/njs_date.cWed Jan 30 18:50:33 2019 +0300 @@ -1901,7 +1901,7 @@ njs_date_prototype_to_json(njs_vm_t *vm, } } -njs_type_error(vm, "'this' argument is not an object"); +njs_type_error(vm, "\"this\" argument is not an object"); return NXT_ERROR; } diff -r dbffb3031c77 -r ac9b1c01a9b0 njs/njs_error.c --- a/njs/njs_error.c Wed Jan 30 18:49:33 2019 +0300 +++ b/njs/njs_error.c Wed Jan 30 18:50:33 2019 +0300 @@ -583,7 +583,7 @@ njs_error_prototype_to_string(njs_vm_t * njs_index_t unused) { if (nargs < 1 || !njs_is_object(&args[0])) { -njs_type_error(vm, "'this' argument is not an object"); +njs_type_error(vm, "\"this\" argument is not an object"); return NXT_ERROR; } diff -r dbffb3031c77 -r ac9b1c01a9b0 njs/njs_fs.c --- a/njs/njs_fs.c Wed Jan 30 18:49:33 2019 +0300 +++ b/njs/njs_fs.c Wed Jan 30 18:50:33 2019 +0300 @@ -165,7 +165,7 @@ njs_fs_read_file(njs_vm_t *vm, njs_value flags = njs_fs_flags(&flag); if (nxt_slow_path(flags == -1)) { -njs_type_error(vm, "Unknown file open flags: '%V'", &flag); +njs_type_error(vm, "Unknown file open