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]

Reply via email to