[njs] Allowing to output large values in console.log().

Dmitry Volyntsev xeioex at nginx.com
Thu Apr 11 14:29:00 UTC 2019


details:   https://hg.nginx.org/njs/rev/b9d619068453
branches:  
changeset: 878:b9d619068453
user:      Dmitry Volyntsev <xeioex at nginx.com>
date:      Thu Apr 11 16:32:06 2019 +0300
description:
Allowing to output large values in console.log().

Previously, the size was limited to 2048 bytes.

This closes #127 issue on Github.

diffstat:

 njs/njs_shell.c   |   9 ++++++---
 nxt/nxt_sprintf.c |  41 ++++++++++++++++++++++++-----------------
 nxt/nxt_sprintf.h |   6 +++++-
 3 files changed, 35 insertions(+), 21 deletions(-)

diffs (106 lines):

diff -r 0c8a6246a4af -r b9d619068453 njs/njs_shell.c
--- a/njs/njs_shell.c	Thu Apr 11 15:00:17 2019 +0300
+++ b/njs/njs_shell.c	Thu Apr 11 16:32:06 2019 +0300
@@ -645,7 +645,8 @@ njs_output(njs_vm_t *vm, njs_opts_t *opt
         nxt_error("%V\n", &out);
 
     } else if (opts->interactive) {
-        nxt_printf("%V\n", &out);
+        nxt_print(out.start, out.length);
+        nxt_printf("\n");
     }
 }
 
@@ -919,7 +920,8 @@ njs_ext_console_log(njs_vm_t *vm, njs_va
             return NJS_ERROR;
         }
 
-        nxt_printf("%s%V", (n != 1) ? " " : "", &msg);
+        nxt_printf("%s", (n != 1) ? " " : "");
+        nxt_print(msg.start, msg.length);
 
         n++;
     }
@@ -950,7 +952,8 @@ njs_ext_console_dump(njs_vm_t *vm, njs_v
             return NJS_ERROR;
         }
 
-        nxt_printf("%s%V", (n != 1) ? " " : "", &msg);
+        nxt_printf("%s", (n != 1) ? " " : "");
+        nxt_print(msg.start, msg.length);
 
         n++;
     }
diff -r 0c8a6246a4af -r b9d619068453 nxt/nxt_sprintf.c
--- a/nxt/nxt_sprintf.c	Thu Apr 11 15:00:17 2019 +0300
+++ b/nxt/nxt_sprintf.c	Thu Apr 11 16:32:06 2019 +0300
@@ -64,23 +64,6 @@ nxt_sprintf(u_char *buf, u_char *end, co
 }
 
 
-int
-nxt_dprintf(int fd, const char *fmt, ...)
-{
-    size_t   size;
-    u_char   text[2048], *p;
-    va_list  args;
-
-    va_start(args, fmt);
-    p = nxt_vsprintf(text, text + sizeof(text), fmt, args);
-    va_end(args);
-
-    size = p - text;
-
-    return write(fd, text, size);
-}
-
-
 /*
  * nxt_sprintf_t is used:
  *    to pass several parameters of nxt_integer() via single pointer
@@ -602,3 +585,27 @@ nxt_number(nxt_sprintf_t *spf, u_char *b
 
     return buf;
 }
+
+
+NXT_EXPORT
+int nxt_dprint(int fd, u_char *buf, size_t size)
+{
+    return write(fd, buf, size);
+}
+
+
+int
+nxt_dprintf(int fd, const char *fmt, ...)
+{
+    size_t   size;
+    u_char   text[2048], *p;
+    va_list  args;
+
+    va_start(args, fmt);
+    p = nxt_vsprintf(text, text + sizeof(text), fmt, args);
+    va_end(args);
+
+    size = p - text;
+
+    return write(fd, text, size);
+}
diff -r 0c8a6246a4af -r b9d619068453 nxt/nxt_sprintf.h
--- a/nxt/nxt_sprintf.h	Thu Apr 11 15:00:17 2019 +0300
+++ b/nxt/nxt_sprintf.h	Thu Apr 11 16:32:06 2019 +0300
@@ -12,9 +12,13 @@ NXT_EXPORT u_char *nxt_sprintf(u_char *b
 NXT_EXPORT u_char *nxt_vsprintf(u_char *buf, u_char *end, const char *fmt,
     va_list args);
 
+NXT_EXPORT int nxt_dprint(int fd, u_char *buf, size_t size);
 NXT_EXPORT int nxt_dprintf(int fd, const char *fmt, ...);
 
-#define nxt_printf(fmt, ...)                                                  \
+#define nxt_print(buf, size)                                                 \
+    nxt_dprint(STDOUT_FILENO, (u_char *) buf, size)
+
+#define nxt_printf(fmt, ...)                                                 \
     nxt_dprintf(STDOUT_FILENO, fmt, ##__VA_ARGS__)
 
 #define nxt_error(fmt, ...)                                                  \


More information about the nginx-devel mailing list