exit(2);\r
}\r
\r
+int\r
+ValidateInt(char *s)\r
+{\r
+ char *p = s;\r
+ if(*p == '-' || *p == '+') p++;\r
+ while(*p) if(!isdigit(*p++)) ExitArgError("Bad integer value", s);\r
+ return atoi(s);\r
+}\r
+\r
/* Command line font name parser. NULL name means do nothing.\r
Syntax like "Courier New:10.0 bi" or "Arial:10" or "Arial:10b"\r
For backward compatibility, syntax without the colon is also\r
\r
switch (ad->argType) {\r
case ArgInt:\r
- *(int *) ad->argLoc = atoi(argValue);\r
+ *(int *) ad->argLoc = ValidateInt(argValue);\r
break;\r
\r
case ArgX:\r
- *(int *) ad->argLoc = atoi(argValue) + boardX; // [HGM] placement: translate stored relative to absolute \r
+ *(int *) ad->argLoc = ValidateInt(argValue) + boardX; // [HGM] placement: translate stored relative to absolute \r
break;\r
\r
case ArgY:\r
- *(int *) ad->argLoc = atoi(argValue) + boardY; // (this is really kludgey, it should be done where used...)\r
+ *(int *) ad->argLoc = ValidateInt(argValue) + boardY; // (this is really kludgey, it should be done where used...)\r
break;\r
\r
case ArgZ:\r
- *(int *) ad->argLoc = atoi(argValue);\r
+ *(int *) ad->argLoc = ValidateInt(argValue);\r
EnsureOnScreen(&boardX, &boardY, minX, minY); \r
break;\r
\r
}\r
// [HGM] movenum: allow move number to be typed in any mode\r
if(sscanf(move, "%d", &n) == 1 && n != 0 ) {\r
- currentMove = 2*n-1;\r
- if(currentMove > forwardMostMove) currentMove = forwardMostMove;\r
- if(currentMove < backwardMostMove) currentMove = backwardMostMove;\r
+ ToNrEvent(2*n-1);\r
EndDialog(hDlg, TRUE);\r
- DrawPosition(TRUE, boards[currentMove]);\r
- if(currentMove > backwardMostMove) DisplayMove(currentMove - 1);\r
- else DisplayMessage("", "");\r
return TRUE;\r
}\r
}\r