Allow signed integers as command parameter
authorH.G.Muller <hgm@hgm-xboard.(none)>
Fri, 8 May 2015 10:59:16 +0000 (12:59 +0200)
committerH.G.Muller <hgm@hgm-xboard.(none)>
Fri, 8 May 2015 10:59:16 +0000 (12:59 +0200)
Strings starting with '-' (or other punctuation) were classified as a
single-character text parameter, making entry of negative numbers
impossible. A parameter described by 'j' in the command list now indicates
a '-' followed by digits should be interpreted as a negative number.

lasker-2.2.3/src/command.c

index 2286cd6..236e621 100644 (file)
@@ -204,6 +204,7 @@ static int get_parameters(int command, char *parameters, param_list params)
       break;
 
     case 'i':
+    case 'j':
     case 'n':                  /* optional or required word or integer */
       parameters = eatwhite(parameters);
       if (!*parameters)
@@ -214,7 +215,7 @@ static int get_parameters(int command, char *parameters, param_list params)
       } else {
        (params)[i].type = TYPE_INT;
       }
-      if (ispunct(*parameters)) {
+      if (ispunct(*parameters) && (c != 'j' || (params)[i].type != TYPE_INT)) {
        punc[0] = *parameters;
        (params)[i].val.word = punc;
        (params)[i].type = TYPE_WORD;