commit - 319d405008bb0034368a710f5a2c4028fef919ef
commit + c0c6ae4a59ce0ecc749f0507f9ee44f8df7dfafc
blob - 6f26e84ee9a5f11d669e3571eb67acfa8e889bdf
blob + 6bea602f9d9fddd05276de1ce90261117e41e24b
--- isscrolls.h
+++ isscrolls.h
#define MAX_PTP_LEN 201
#define MAX_CHAR_LEN 100
#define MAX_PROGRESS 10
+#define MAX_STAT_LEN 20
#define ANSI_COLOR_RED "\x1b[31m"
#define ANSI_COLOR_GREEN "\x1b[32m"
int progress_roll(double[]);
void ask_for_journey_difficulty(void);
int get_int_from_cmd(const char *);
+int get_args_from_cmd(char *, char *, int*);
/* isscrolls.c */
void cmd_quit(char *);
blob - daa4ae40e2be8e142ef0ecfa369b21b5c12a1481
blob + ae0708741b8923c117fe7baafa41581ed261f4e8
--- rolls.c
+++ rolls.c
return ival;
}
+
+int
+get_args_from_cmd(char *cmd, char *stat, int *ival)
+{
+ char *tokens[MAXTOKENS];
+ char *ep;
+ char *p, *last;
+ int i = 0;
+ long lval = -1;
+
+ /* Parse the argument line into max tokens, separated by space */
+ for ((p = strtok_r(cmd, " ", &last)); p;
+ (p = strtok_r(NULL, " ", &last))) {
+ if (i < MAXTOKENS - 1)
+ tokens[i++] = p;
+ }
+ tokens[i] = NULL;
+ /* First token is a stat */
+ i = 0;
+ if (tokens[i] == NULL)
+ return -10;
+ else if (strlen(tokens[i]) == 0)
+ return -11;
+
+ log_debug("stat token: %s\n", tokens[i]);
+ snprintf(stat, MAX_STAT_LEN, "%s", tokens[i]);
+
+ /* Second token is a bonus value*/
+ errno = 0;
+ i++;
+ /* It's OK to have no bonus, so the token can be NULL and we can return */
+ if (tokens[i] == NULL)
+ return 0;
+ else
+ log_debug("bonus token: %s\n", tokens[i]);
+
+ lval = strtol(tokens[i], &ep, 10);
+ if (cmd[0] == '\0' || *ep != '\0') {
+ printf("Please provide a number as argument\n");
+ return -20;
+ }
+ if ((errno == ERANGE || lval <= 0 || lval > 10)) {
+ printf("Please provide a number between 1 and 10\n");
+ return -22;
+ }
+ *ival = lval;
+
+ return 0;
+}