[njs] Shell: improved filenames reporting in exceptions.

Dmitry Volyntsev xeioex at nginx.com
Wed Feb 6 12:40:17 UTC 2019


details:   https://hg.nginx.org/njs/rev/2c7a52ca206e
branches:  
changeset: 763:2c7a52ca206e
user:      hongzhidao <hongzhidao at gmail.com>
date:      Wed Feb 06 12:27:41 2019 +0800
description:
Shell: improved filenames reporting in exceptions.

diffstat:

 Makefile                     |   2 ++
 njs/njs_core.h               |   1 +
 njs/njs_shell.c              |   7 ++++---
 njs/test/njs_expect_test.exp |   4 ++--
 nxt/Makefile                 |  13 +++++++++++++
 nxt/nxt_file.c               |  33 +++++++++++++++++++++++++++++++++
 nxt/nxt_file.h               |  14 ++++++++++++++
 7 files changed, 69 insertions(+), 5 deletions(-)

diffs (164 lines):

diff -r 3b8ea515add6 -r 2c7a52ca206e Makefile
--- a/Makefile	Tue Feb 05 19:27:24 2019 +0300
+++ b/Makefile	Wed Feb 06 12:27:41 2019 +0800
@@ -49,6 +49,7 @@ NXT_BUILDDIR =	build
 	$(NXT_BUILDDIR)/nxt_sha2.o \
 	$(NXT_BUILDDIR)/nxt_pcre.o \
 	$(NXT_BUILDDIR)/nxt_time.o \
+	$(NXT_BUILDDIR)/nxt_file.o \
 	$(NXT_BUILDDIR)/nxt_malloc.o \
 	$(NXT_BUILDDIR)/nxt_mp.o \
 	$(NXT_BUILDDIR)/nxt_sprintf.o \
@@ -96,6 +97,7 @@ NXT_BUILDDIR =	build
 		$(NXT_BUILDDIR)/nxt_sha2.o \
 		$(NXT_BUILDDIR)/nxt_pcre.o \
 		$(NXT_BUILDDIR)/nxt_time.o \
+		$(NXT_BUILDDIR)/nxt_file.o \
 		$(NXT_BUILDDIR)/nxt_malloc.o \
 		$(NXT_BUILDDIR)/nxt_mp.o \
 		$(NXT_BUILDDIR)/nxt_sprintf.o \
diff -r 3b8ea515add6 -r 2c7a52ca206e njs/njs_core.h
--- a/njs/njs_core.h	Tue Feb 05 19:27:24 2019 +0300
+++ b/njs/njs_core.h	Wed Feb 06 12:27:41 2019 +0800
@@ -25,6 +25,7 @@
 #include <nxt_lvlhsh.h>
 #include <nxt_random.h>
 #include <nxt_time.h>
+#include <nxt_file.h>
 #include <nxt_malloc.h>
 #include <nxt_mp.h>
 #include <nxt_sprintf.h>
diff -r 3b8ea515add6 -r 2c7a52ca206e njs/njs_shell.c
--- a/njs/njs_shell.c	Tue Feb 05 19:27:24 2019 +0300
+++ b/njs/njs_shell.c	Wed Feb 06 12:27:41 2019 +0800
@@ -215,8 +215,10 @@ main(int argc, char **argv)
     nxt_memzero(&vm_options, sizeof(njs_vm_opt_t));
 
     if (opts.file != NULL) {
-        vm_options.file.start = (u_char *) opts.file;
-        vm_options.file.length = strlen(opts.file);
+        nxt_file_name(&vm_options.file, opts.file);
+
+    } else {
+        vm_options.file = nxt_string_value("shell");
     }
 
     vm_options.init = !opts.interactive;
@@ -1071,4 +1073,3 @@ lvlhsh_pool_free(void *pool, void *p, si
 {
     nxt_mp_free(pool, p);
 }
-
diff -r 3b8ea515add6 -r 2c7a52ca206e njs/test/njs_expect_test.exp
--- a/njs/test/njs_expect_test.exp	Tue Feb 05 19:27:24 2019 +0300
+++ b/njs/test/njs_expect_test.exp	Wed Feb 06 12:27:41 2019 +0800
@@ -269,7 +269,7 @@ njs_test {
     {"JSON.parse(Error())\r\n"
      "JSON.parse(Error())\r\nSyntaxError: Unexpected token at position 0*at JSON.parse (native)"}
     {"JSON.parse(Error()\r\n"
-     "JSON.parse(Error()\r\nSyntaxError: Unexpected token \"\" in 1"}
+     "JSON.parse(Error()\r\nSyntaxError: Unexpected token \"\" in shell:1"}
 }
 
 njs_test {
@@ -281,7 +281,7 @@ njs_test {
 
 njs_test {
     {"(function() { throw 'test' })()\r\n"
-     "test\r\n    at anonymous (:1)"}
+     "test\r\n    at anonymous (shell:1)"}
 }
 
 # Non-ASCII characters
diff -r 3b8ea515add6 -r 2c7a52ca206e nxt/Makefile
--- a/nxt/Makefile	Tue Feb 05 19:27:24 2019 +0300
+++ b/nxt/Makefile	Wed Feb 06 12:27:41 2019 +0800
@@ -21,6 +21,7 @@ NXT_LIB =	nxt
 	$(NXT_BUILDDIR)/nxt_malloc.o \
 	$(NXT_BUILDDIR)/nxt_trace.o \
 	$(NXT_BUILDDIR)/nxt_time.o \
+	$(NXT_BUILDDIR)/nxt_file.o \
 	$(NXT_BUILDDIR)/nxt_mp.o \
 	$(NXT_BUILDDIR)/nxt_sprintf.o \
 
@@ -40,6 +41,7 @@ NXT_LIB =	nxt
 		$(NXT_BUILDDIR)/nxt_pcre.o \
 		$(NXT_BUILDDIR)/nxt_malloc.o \
 		$(NXT_BUILDDIR)/nxt_time.o \
+		$(NXT_BUILDDIR)/nxt_file.o \
 		$(NXT_BUILDDIR)/nxt_trace.o \
 		$(NXT_BUILDDIR)/nxt_mp.o \
 		$(NXT_BUILDDIR)/nxt_sprintf.o \
@@ -221,6 +223,17 @@ NXT_LIB =	nxt
 		-I$(NXT_LIB) \
 		$(NXT_LIB)/nxt_time.c
 
+$(NXT_BUILDDIR)/nxt_file.o: \
+	$(NXT_LIB)/nxt_auto_config.h \
+	$(NXT_LIB)/nxt_types.h \
+	$(NXT_LIB)/nxt_clang.h \
+	$(NXT_LIB)/nxt_file.h \
+	$(NXT_LIB)/nxt_file.c \
+
+	$(NXT_CC) -c -o $(NXT_BUILDDIR)/nxt_file.o $(NXT_CFLAGS) \
+		-I$(NXT_LIB) \
+		$(NXT_LIB)/nxt_file.c
+
 $(NXT_BUILDDIR)/nxt_trace.o: \
 	$(NXT_LIB)/nxt_auto_config.h \
 	$(NXT_LIB)/nxt_types.h \
diff -r 3b8ea515add6 -r 2c7a52ca206e nxt/nxt_file.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nxt/nxt_file.c	Wed Feb 06 12:27:41 2019 +0800
@@ -0,0 +1,33 @@
+
+/*
+ * Copyright (C) Igor Sysoev
+ * Copyright (C) NGINX, Inc.
+ */
+
+#include <nxt_auto_config.h>
+#include <nxt_types.h>
+#include <nxt_clang.h>
+#include <nxt_string.h>
+#include <nxt_file.h>
+
+#include <string.h>
+
+
+void
+nxt_file_name(nxt_str_t *name, char *path)
+{
+    char  *p;
+    size_t  length;
+
+    length = strlen(path);
+
+    for (p = path + length; p >= path; p--) {
+        if (*p == '/') {
+            p++;
+            break;
+        }
+    }
+
+    name->start = (u_char *) p;
+    name->length = length - (p - path);
+}
diff -r 3b8ea515add6 -r 2c7a52ca206e nxt/nxt_file.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nxt/nxt_file.h	Wed Feb 06 12:27:41 2019 +0800
@@ -0,0 +1,14 @@
+
+/*
+ * Copyright (C) Igor Sysoev
+ * Copyright (C) NGINX, Inc.
+ */
+
+#ifndef _NXT_FILE_H_INCLUDED_
+#define _NXT_FILE_H_INCLUDED_
+
+
+void nxt_file_name(nxt_str_t *name, char *path);
+
+
+#endif /* _NXT_FILE_H_INCLUDED_ */


More information about the nginx-devel mailing list