RPM Package Manager, CVS Repository http://rpm5.org/cvs/ ____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: [email protected] Module: rpm Date: 24-Jun-2017 22:32:05 Branch: rpm-5_4 Handle: 2017062420320400 Added files: (Branch: rpm-5_4) rpm/rpmio rpmjss.inp Modified files: (Branch: rpm-5_4) rpm/rpmio Makefile.am rpmjs17.cpp rpmjs24.cpp rpmjs31.cpp rpmjs38.cpp rpmjs45.cpp Log: - rpmjss: evaluate multiple inputs coerced to string. Summary: Revision Changes Path 1.293.2.99 +5 -5 rpm/rpmio/Makefile.am 1.1.2.7 +48 -6 rpm/rpmio/rpmjs17.cpp 1.1.2.8 +48 -6 rpm/rpmio/rpmjs24.cpp 1.1.2.8 +48 -6 rpm/rpmio/rpmjs31.cpp 1.1.2.8 +48 -6 rpm/rpmio/rpmjs38.cpp 1.1.2.9 +47 -6 rpm/rpmio/rpmjs45.cpp 1.1.2.1 +7 -0 rpm/rpmio/rpmjss.inp ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/rpmio/Makefile.am ============================================================================ $ cvs diff -u -r1.293.2.98 -r1.293.2.99 Makefile.am --- rpm/rpmio/Makefile.am 23 Jun 2017 03:39:43 -0000 1.293.2.98 +++ rpm/rpmio/Makefile.am 24 Jun 2017 20:32:04 -0000 1.293.2.99 @@ -556,23 +556,23 @@ rpmjs17_SOURCES = rpmjs17.cpp rpmjs17_CPPFLAGS = -include /usr/include/js-17.0/js/RequiredDefines.h -I/usr/include/js-17.0 -fPIC -DRPMJSS_SELF_TEST -rpmjs17_LDADD = -L/usr/lib64 -lmozjs-17.0 +rpmjs17_LDADD = -L/usr/lib64 -lmozjs-17.0 $(RPMIO_LDADD_COMMON) rpmjs24_SOURCES = rpmjs24.cpp rpmjs24_CPPFLAGS = -include /usr/include/mozjs-24/js/RequiredDefines.h -I/usr/include/mozjs-24 -fPIC -DRPMJSS_SELF_TEST -rpmjs24_LDADD = -L/usr/lib64 -lmozjs-24 +rpmjs24_LDADD = -L/usr/lib64 -lmozjs-24 $(RPMIO_LDADD_COMMON) rpmjs31_SOURCES = rpmjs31.cpp rpmjs31_CPPFLAGS = -include /usr/include/mozjs-31/js/RequiredDefines.h -I/usr/include/mozjs-31 -fPIC -DRPMJSS_SELF_TEST -rpmjs31_LDADD = -L/usr/lib64 -lmozjs-31 +rpmjs31_LDADD = -L/usr/lib64 -lmozjs-31 $(RPMIO_LDADD_COMMON) rpmjs38_SOURCES = rpmjs38.cpp rpmjs38_CPPFLAGS = -include /usr/include/mozjs-38/js/RequiredDefines.h -I/usr/include/mozjs-38 -fPIC -DRPMJSS_SELF_TEST -rpmjs38_LDADD = -L/usr/lib64 -lmozjs-38 +rpmjs38_LDADD = -L/usr/lib64 -lmozjs-38 $(RPMIO_LDADD_COMMON) rpmjs45_SOURCES = rpmjs45.cpp rpmjs45_CPPFLAGS = -include /usr/include/mozjs-45/js/RequiredDefines.h -I/usr/include/mozjs-45 -fPIC -DRPMJSS_SELF_TEST -rpmjs45_LDADD = -L/usr/lib64 -lmozjs-45 +rpmjs45_LDADD = -L/usr/lib64 -lmozjs-45 $(RPMIO_LDADD_COMMON) mozjs: rpmjs185 rpmjs17 rpmjs24 rpmjs31 rpmjs38 rpmjs45 -./rpmjs185 @@ . patch -p0 <<'@@ .' Index: rpm/rpmio/rpmjs17.cpp ============================================================================ $ cvs diff -u -r1.1.2.6 -r1.1.2.7 rpmjs17.cpp --- rpm/rpmio/rpmjs17.cpp 24 Jun 2017 19:09:34 -0000 1.1.2.6 +++ rpm/rpmio/rpmjs17.cpp 24 Jun 2017 20:32:04 -0000 1.1.2.7 @@ -505,8 +505,38 @@ if (!ok) return 1; } - JSString *str = rval.toString(); - char * t = JS_EncodeString(I->cx, str); + + char b[128]; + size_t nb = sizeof(b); + char * t = NULL; + + if (JSVAL_IS_NULL(rval)) { + t = xstrdup(""); + } else + if (JSVAL_IS_VOID(rval)) { + t = xstrdup(""); + } else + if (JSVAL_IS_BOOLEAN(rval)) { + snprintf(b, nb, "%c", (rval.toBoolean() ? 'T' : 'F')); + t = xstrdup(b); + } else + if (JSVAL_IS_INT(rval)) { /* int32_t */ + snprintf(b, nb, "%d", rval.toInt32()); + t = xstrdup(b); + } else + if (JSVAL_IS_DOUBLE(rval)) { + snprintf(b, nb, "%.16g", rval.toDouble()); + t = xstrdup(b); + } else + if (JSVAL_IS_NUMBER(rval)) { + snprintf(b, nb, "%.16g", rval.toNumber()); + t = xstrdup(b); + } else + if (JSVAL_IS_STRING(rval)) { + t = JS_EncodeString(I->cx, rval.toString()); + } else + t = xstrdup(""); + if (resultp) *resultp = t; else @@ -519,6 +549,9 @@ JSIO_t mozjs17 = &_mozjs17; #if defined(RPMJSS_SELF_TEST) +#include <rpmio.h> +#include <argv.h> + struct rpmjss_s _jss; rpmjss jss = &_jss; @@ -530,14 +563,23 @@ JSI_t I = (JSI_t) mozInit(jss); jss->I = I; - { - const char *script = "'hello'+'world, it is '+new Date()"; + const char * _fn = "rpmjss.inp"; + FD_t fd = Fopen(_fn, "r.fpio"); + ARGV_t av = NULL; + rc = argvFgets(&av, fd, 0); + rc = Fclose(fd); + int ac = argvCount(av); + + for (int i = 0; i < ac; i++) { + const char * script = av[i]; const char * result = NULL; - rc = mozRun(jss, &result, script, __FILE__, __LINE__); - fprintf(stderr, "<== result |%s|\n", result); + rc = mozRun(jss, &result, script, _fn, i); + fprintf(stderr, "<== result |%s| from |%s|\n", result, script); result = _free(result); } + av = argvFree(av); + mozFini(jss); return rc; @@ . patch -p0 <<'@@ .' Index: rpm/rpmio/rpmjs24.cpp ============================================================================ $ cvs diff -u -r1.1.2.7 -r1.1.2.8 rpmjs24.cpp --- rpm/rpmio/rpmjs24.cpp 24 Jun 2017 19:09:35 -0000 1.1.2.7 +++ rpm/rpmio/rpmjs24.cpp 24 Jun 2017 20:32:04 -0000 1.1.2.8 @@ -138,8 +138,38 @@ if (!ok) return 1; } - JSString *str = rval.toString(); - char * t = JS_EncodeString(I->cx, str); + + char b[128]; + size_t nb = sizeof(b); + char * t = NULL; + + if (JSVAL_IS_NULL(rval)) { + t = xstrdup(""); + } else + if (JSVAL_IS_VOID(rval)) { + t = xstrdup(""); + } else + if (JSVAL_IS_BOOLEAN(rval)) { + snprintf(b, nb, "%c", (rval.toBoolean() ? 'T' : 'F')); + t = xstrdup(b); + } else + if (JSVAL_IS_INT(rval)) { /* int32_t */ + snprintf(b, nb, "%d", rval.toInt32()); + t = xstrdup(b); + } else + if (JSVAL_IS_DOUBLE(rval)) { + snprintf(b, nb, "%.16g", rval.toDouble()); + t = xstrdup(b); + } else + if (JSVAL_IS_NUMBER(rval)) { + snprintf(b, nb, "%.16g", rval.toNumber()); + t = xstrdup(b); + } else + if (JSVAL_IS_STRING(rval)) { + t = JS_EncodeString(I->cx, rval.toString()); + } else + t = xstrdup(""); + if (resultp) *resultp = t; else @@ -152,6 +182,9 @@ JSIO_t mozjs24 = &_mozjs24; #if defined(RPMJSS_SELF_TEST) +#include <rpmio.h> +#include <argv.h> + struct rpmjss_s _jss; rpmjss jss = &_jss; @@ -163,14 +196,23 @@ JSI_t I = (JSI_t) mozInit(jss); jss->I = I; - { - const char *script = "'hello'+'world, it is '+new Date()"; + const char * _fn = "rpmjss.inp"; + FD_t fd = Fopen(_fn, "r.fpio"); + ARGV_t av = NULL; + rc = argvFgets(&av, fd, 0); + rc = Fclose(fd); + int ac = argvCount(av); + + for (int i = 0; i < ac; i++) { + const char * script = av[i]; const char * result = NULL; - rc = mozRun(jss, &result, script, __FILE__, __LINE__); - fprintf(stderr, "<== result |%s|\n", result); + rc = mozRun(jss, &result, script, _fn, i); + fprintf(stderr, "<== result |%s| from |%s|\n", result, script); result = _free(result); } + av = argvFree(av); + mozFini(jss); return rc; @@ . patch -p0 <<'@@ .' Index: rpm/rpmio/rpmjs31.cpp ============================================================================ $ cvs diff -u -r1.1.2.7 -r1.1.2.8 rpmjs31.cpp --- rpm/rpmio/rpmjs31.cpp 24 Jun 2017 19:09:35 -0000 1.1.2.7 +++ rpm/rpmio/rpmjs31.cpp 24 Jun 2017 20:32:04 -0000 1.1.2.8 @@ -135,8 +135,38 @@ if (!ok) return 1; } - JSString *str = rval.toString(); - char * t = JS_EncodeString(I->cx, str); + + char b[128]; + size_t nb = sizeof(b); + char * t = NULL; + + if (JSVAL_IS_NULL(rval)) { + t = xstrdup(""); + } else + if (JSVAL_IS_VOID(rval)) { + t = xstrdup(""); + } else + if (JSVAL_IS_BOOLEAN(rval)) { + snprintf(b, nb, "%c", (rval.toBoolean() ? 'T' : 'F')); + t = xstrdup(b); + } else + if (JSVAL_IS_INT(rval)) { /* int32_t */ + snprintf(b, nb, "%d", rval.toInt32()); + t = xstrdup(b); + } else + if (JSVAL_IS_DOUBLE(rval)) { + snprintf(b, nb, "%.16g", rval.toDouble()); + t = xstrdup(b); + } else + if (JSVAL_IS_NUMBER(rval)) { + snprintf(b, nb, "%.16g", rval.toNumber()); + t = xstrdup(b); + } else + if (JSVAL_IS_STRING(rval)) { + t = JS_EncodeString(I->cx, rval.toString()); + } else + t = xstrdup(""); + if (resultp) *resultp = t; else @@ -149,6 +179,9 @@ JSIO_t mozjs31 = &_mozjs31; #if defined(RPMJSS_SELF_TEST) +#include <rpmio.h> +#include <argv.h> + struct rpmjss_s _jss; rpmjss jss = &_jss; @@ -160,14 +193,23 @@ JSI_t I = (JSI_t) mozInit(jss); jss->I = I; - { - const char *script = "'hello'+'world, it is '+new Date()"; + const char * _fn = "rpmjss.inp"; + FD_t fd = Fopen(_fn, "r.fpio"); + ARGV_t av = NULL; + rc = argvFgets(&av, fd, 0); + rc = Fclose(fd); + int ac = argvCount(av); + + for (int i = 0; i < ac; i++) { + const char * script = av[i]; const char * result = NULL; - rc = mozRun(jss, &result, script, __FILE__, __LINE__); - fprintf(stderr, "<== result |%s|\n", result); + rc = mozRun(jss, &result, script, _fn, i); + fprintf(stderr, "<== result |%s| from |%s|\n", result, script); result = _free(result); } + av = argvFree(av); + mozFini(jss); return rc; @@ . patch -p0 <<'@@ .' Index: rpm/rpmio/rpmjs38.cpp ============================================================================ $ cvs diff -u -r1.1.2.7 -r1.1.2.8 rpmjs38.cpp --- rpm/rpmio/rpmjs38.cpp 24 Jun 2017 19:09:35 -0000 1.1.2.7 +++ rpm/rpmio/rpmjs38.cpp 24 Jun 2017 20:32:04 -0000 1.1.2.8 @@ -135,8 +135,38 @@ if (!ok) return 1; } - JSString *str = rval.toString(); - char * t = JS_EncodeString(I->cx, str); + + char b[128]; + size_t nb = sizeof(b); + char * t = NULL; + + if (rval.isNull()) { + t = xstrdup(""); + } else + if (rval.isUndefined()) { + t = xstrdup(""); + } else + if (rval.isBoolean()) { + snprintf(b, nb, "%c", (rval.toBoolean() ? 'T' : 'F')); + t = xstrdup(b); + } else + if (rval.isInt32()) { + snprintf(b, nb, "%d", rval.toInt32()); + t = xstrdup(b); + } else + if (rval.isDouble()) { + snprintf(b, nb, "%.16g", rval.toDouble()); + t = xstrdup(b); + } else + if (rval.isNumber()) { + snprintf(b, nb, "%.16g", rval.toNumber()); + t = xstrdup(b); + } else + if (rval.isString()) { + t = JS_EncodeString(I->cx, rval.toString()); + } else + t = xstrdup(""); + if (resultp) *resultp = t; else @@ -149,6 +179,9 @@ JSIO_t mozjs38 = &_mozjs38; #if defined(RPMJSS_SELF_TEST) +#include <rpmio.h> +#include <argv.h> + struct rpmjss_s _jss; rpmjss jss = &_jss; @@ -160,14 +193,23 @@ JSI_t I = (JSI_t) mozInit(jss); jss->I = I; - { - const char *script = "'hello'+'world, it is '+new Date()"; + const char * _fn = "rpmjss.inp"; + FD_t fd = Fopen(_fn, "r.fpio"); + ARGV_t av = NULL; + rc = argvFgets(&av, fd, 0); + rc = Fclose(fd); + int ac = argvCount(av); + + for (int i = 0; i < ac; i++) { + const char * script = av[i]; const char * result = NULL; - rc = mozRun(jss, &result, script, __FILE__, __LINE__); - fprintf(stderr, "<== result |%s|\n", result); + rc = mozRun(jss, &result, script, _fn, i); + fprintf(stderr, "<== result |%s| from |%s|\n", result, script); result = _free(result); } + av = argvFree(av); + mozFini(jss); return rc; @@ . patch -p0 <<'@@ .' Index: rpm/rpmio/rpmjs45.cpp ============================================================================ $ cvs diff -u -r1.1.2.8 -r1.1.2.9 rpmjs45.cpp --- rpm/rpmio/rpmjs45.cpp 24 Jun 2017 19:09:35 -0000 1.1.2.8 +++ rpm/rpmio/rpmjs45.cpp 24 Jun 2017 20:32:04 -0000 1.1.2.9 @@ -2319,8 +2319,37 @@ return 1; } - JSString *str = rval.toString(); - char * t = JS_EncodeString(I->cx, str); + char b[128]; + size_t nb = sizeof(b); + char * t = NULL; + + if (rval.isNull()) { + t = xstrdup(""); + } else + if (rval.isUndefined()) { + t = xstrdup(""); + } else + if (rval.isBoolean()) { + snprintf(b, nb, "%c", (rval.toBoolean() ? 'T' : 'F')); + t = xstrdup(b); + } else + if (rval.isInt32()) { /* int32_t */ + snprintf(b, nb, "%d", rval.toInt32()); + t = xstrdup(b); + } else + if (rval.isDouble()) { + snprintf(b, nb, "%.16g", rval.toDouble()); + t = xstrdup(b); + } else + if (rval.isNumber()) { + snprintf(b, nb, "%.16g", rval.toNumber()); + t = xstrdup(b); + } else + if (rval.isString()) { + t = JS_EncodeString(I->cx, rval.toString()); + } else + t = xstrdup(""); + if (resultp) *resultp = t; else @@ -2333,6 +2362,9 @@ JSIO_t mozjs45 = &_mozjs45; #if defined(RPMJSS_SELF_TEST) +#include <rpmio.h> +#include <argv.h> + struct rpmjss_s _jss; rpmjss jss = &_jss; @@ -2344,14 +2376,23 @@ JSI_t I = (JSI_t) mozInit(jss); jss->I = I; - { - const char *script = "'hello'+'world, it is '+new Date()"; + const char * _fn = "rpmjss.inp"; + FD_t fd = Fopen(_fn, "r.fpio"); + ARGV_t av = NULL; + rc = argvFgets(&av, fd, 0); + rc = Fclose(fd); + int ac = argvCount(av); + + for (int i = 0; i < ac; i++) { + const char * script = av[i]; const char * result = NULL; - rc = mozRun(jss, &result, script, __FILE__, __LINE__); - fprintf(stderr, "<== result |%s|\n", result); + rc = mozRun(jss, &result, script, _fn, i); + fprintf(stderr, "<== result |%s| from |%s|\n", result, script); result = _free(result); } + av = argvFree(av); + mozFini(jss); return rc; @@ . patch -p0 <<'@@ .' Index: rpm/rpmio/rpmjss.inp ============================================================================ $ cvs diff -u -r0 -r1.1.2.1 rpmjss.inp --- /dev/null 2017-06-24 22:30:40.000000000 +0200 +++ rpmjss.inp 2017-06-24 22:32:05.025593421 +0200 @@ -0,0 +1,7 @@ +'hello'+'world, it is '+new Date(); +"string"; +42; +1 + 2; +true; +false; +null; @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository [email protected]
