#include #include #include #include "rubiks.h" void usage(char *av0) { printf("Usage: %s action [-f filename] [-c count=20] [-move movment=20]\n", av0); printf("\taction: generate|gen create a new grid\n"); } static int getInt(char *params, char *av0) { int varNum; if (!params) { fprintf(stderr, "Expected number\n"); usage(av0); return -1; } if ((varNum = atoi(params)) <= 0) { fprintf(stderr, "Invalid number\n"); usage(av0); return -1; } return varNum; } int parse_params(char **params, t_params *p, char *av0) { int varNum; p->count = 20; p->file = NULL; p->nbMovment = 20; for (int i=0; params[i]; ++i) { if (!strcmp(params[i], "-f")) { if (!params[i+1]) { fprintf(stderr, "Error: expected filename\n"); usage(av0); return 0; } p->file = strdup(params[i+1]); i++; } else if (!strcmp(params[i], "-c")) { if ((p->count = getInt(params[1+i], av0)) == -1) return -1; i++; } else if (!strcmp(params[i], "-move")) { if ((p->nbMovment = getInt(params[1+i], av0)) == -1) return -1; i++; } else { fprintf(stderr, "Invalid token: %s\n", params[i]); usage(av0); return -1; } } return 1; }