]> ocean-lang.org Git - ocean/commitdiff
oceani: allow number of command line to be negative.
authorNeilBrown <neil@brown.name>
Sun, 12 Oct 2014 23:36:39 +0000 (10:36 +1100)
committerNeilBrown <neil@brown.name>
Sun, 12 Oct 2014 23:36:39 +0000 (10:36 +1100)
number_parse doesn't expect leading sign, so handle it explicitly.

Signed-off-by: NeilBrown <neil@brown.name>
csrc/oceani.mdc

index 47d5f8a30a1aaffbca3a72240ed907f2c44e6f26..784c680493d9170243d94038a849556a2e439f91 100644 (file)
@@ -395,6 +395,7 @@ when no longer needed.
        static int parse_value(struct value *vl, char *arg)
        {
                struct text tx;
+               int neg = 0;
                switch(vl->vtype) {
                case Vunknown:
                case Vnone:
@@ -405,9 +406,15 @@ when no longer needed.
                        memcpy(vl->str.txt, arg, vl->str.len);
                        break;
                case Vnum:
+                       if (*arg == '-') {
+                               neg = 1;
+                               arg++;
+                       }
                        tx.txt = arg; tx.len = strlen(tx.txt);
                        if (number_parse(vl->num, vl->tail, tx) == 0)
                                mpq_init(vl->num);
+                       else if (neg)
+                               mpq_neg(vl->num, vl->num);
                        break;
                case Vbool:
                        if (strcasecmp(arg, "true") == 0 ||