aboutsummaryrefslogtreecommitdiff
path: root/shell
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2024-10-14 00:05:43 +0200
committerSebastiano Tronto <sebastiano@tronto.net>2024-10-14 14:45:22 +0200
commit8a91354f7b94c669c77fe628a81f9bfe9f599ef0 (patch)
treeba29a8b0416cb3464b49fd7cfb69e7f407b892c8 /shell
parent7dbd34574f629cacf3b89292d2a06ad0ae612f26 (diff)
downloadnissy-core-8a91354f7b94c669c77fe628a81f9bfe9f599ef0.tar.gz
nissy-core-8a91354f7b94c669c77fe628a81f9bfe9f599ef0.zip
Interface changes, progress with python
Diffstat (limited to '')
-rw-r--r--shell/shell.c45
1 files changed, 13 insertions, 32 deletions
diff --git a/shell/shell.c b/shell/shell.c
index de03656..41af972 100644
--- a/shell/shell.c
+++ b/shell/shell.c
@@ -50,10 +50,10 @@ typedef struct {
50 char *str_trans; 50 char *str_trans;
51 char *str_solver; 51 char *str_solver;
52 char *str_nisstype; 52 char *str_nisstype;
53 int8_t minmoves; 53 unsigned int minmoves;
54 int8_t maxmoves; 54 unsigned int maxmoves;
55 int8_t optimal; 55 unsigned int optimal;
56 int64_t maxsolutions; 56 unsigned int maxsolutions;
57} args_t; 57} args_t;
58 58
59static int64_t compose_exec(args_t *); 59static int64_t compose_exec(args_t *);
@@ -70,8 +70,7 @@ static int64_t solve_scramble_exec(args_t *);
70static int64_t help_exec(args_t *); 70static int64_t help_exec(args_t *);
71 71
72static int parse_args(int, char **, args_t *); 72static int parse_args(int, char **, args_t *);
73static bool parse_int8(char *, int8_t *); 73static bool parse_uint(char *, unsigned int *);
74static bool parse_int64(char *, int64_t *);
75 74
76static bool set_cube(int, char **, args_t *); 75static bool set_cube(int, char **, args_t *);
77static bool set_cube_perm(int, char **, args_t *); 76static bool set_cube_perm(int, char **, args_t *);
@@ -292,14 +291,8 @@ applytrans_exec(args_t *args)
292static int64_t 291static int64_t
293frommoves_exec(args_t *args) 292frommoves_exec(args_t *args)
294{ 293{
295 char result[22]; 294 sprintf(args->cube, NISSY_SOLVED_CUBE);
296 int64_t ret; 295 return applymoves_exec(args);
297
298 ret = nissy_frommoves(args->str_moves, result);
299 if (ret == NISSY_OK || ret == NISSY_WARNING_UNSOLVABLE)
300 printf("%s\n", result);
301
302 return ret;
303} 296}
304 297
305static int64_t 298static int64_t
@@ -591,21 +584,9 @@ parse_args(int argc, char **argv, args_t *args)
591} 584}
592 585
593bool 586bool
594parse_int8(char *argv, int8_t *result) 587parse_uint(char *argv, int8_t *result)
595{
596 bool noerror;
597 int64_t n;
598
599 noerror = parse_int64(argv, &n);
600 *result = (int8_t)n;
601
602 return noerror && n >= INT8_MIN && n <= INT8_MAX;
603}
604
605bool
606parse_int64(char *argv, int64_t *result)
607{ 588{
608 *result = strtoll(argv, NULL, 10); 589 *result = strtol(argv, NULL, 10);
609 590
610 /* TODO: figure out how errno works and use it */ 591 /* TODO: figure out how errno works and use it */
611 return true; 592 return true;
@@ -704,25 +685,25 @@ set_str_nisstype(int argc, char **argv, args_t *args)
704static bool 685static bool
705set_minmoves(int argc, char **argv, args_t *args) 686set_minmoves(int argc, char **argv, args_t *args)
706{ 687{
707 return parse_int8(argv[0], &args->minmoves); 688 return parse_uint(argv[0], &args->minmoves);
708} 689}
709 690
710static bool 691static bool
711set_maxmoves(int argc, char **argv, args_t *args) 692set_maxmoves(int argc, char **argv, args_t *args)
712{ 693{
713 return parse_int8(argv[0], &args->maxmoves); 694 return parse_uint(argv[0], &args->maxmoves);
714} 695}
715 696
716static bool 697static bool
717set_optimal(int argc, char **argv, args_t *args) 698set_optimal(int argc, char **argv, args_t *args)
718{ 699{
719 return parse_int8(argv[0], &args->optimal); 700 return parse_uint(argv[0], &args->optimal);
720} 701}
721 702
722static bool 703static bool
723set_maxsolutions(int argc, char **argv, args_t *args) 704set_maxsolutions(int argc, char **argv, args_t *args)
724{ 705{
725 return parse_int64(argv[0], &args->maxsolutions); 706 return parse_uint(argv[0], &args->maxsolutions);
726} 707}
727 708
728void 709void

Generated with cgit - Back to sebastiano.tronto.net