int cmd_config(int argc,char **argv,struct sub_command* cmd) { char* home=configdir(); char* path=cat(home,"config",NULL); if(argc==1) { printf("oneshot:\n"); print_opts(local_opt); printf("local:\n"); print_opts(global_opt); }else { struct opts* opt=global_opt; struct opts** opts=&opt; // TBD parse options if(argc==2) { unset_opt(opts, argv[1]); save_opts(path,opt); }else { if(strcmp(argv[1],"set")==0) { set_opt(opts, argv[2],(char*)argv[3],0); save_opts(path,opt); }else if (strcmp(argv[1],"show")==0) { printf("%s\n",_get_opt(opt,argv[2])); }else { set_opt(opts, argv[1],(char*)argv[2],0); save_opts(path,opt); } } } s(home),s(path); return 0; }
/* Could be optimized further probably, but works for the most part */ int main(int argc, char *argv[]) { int i, j; int steps; int pen_position = PEN_UP; int coord[2] = { 0, 0 }; short floor[MAX_SIZE][MAX_SIZE]; int current_command, current_direction = NORTH; for(i = 0; i < MAX_SIZE; i++) { for(j = 0; j < MAX_SIZE; j++) { floor[i][j] = 0; } } while(1) { print_opts(); scanf("%d", ¤t_command); printf("\n"); switch(current_command) { case PEN_UP: pen_position = PEN_UP; printf("Pen is up now dog.\n"); break; case PEN_DOWN: pen_position = PEN_DOWN; printf("Pen is down now dog.\n"); break; case TURN_RIGHT: turn(¤t_direction, TURN_RIGHT); printf("I just turned right dog.\n"); break; case TURN_LEFT: turn(¤t_direction, TURN_LEFT); printf("I just turned left dog.\n"); break; case MOVE_FORWARD: printf("How many motherfucking steps do you want to take? "); scanf("%d", &steps); move(floor, ¤t_direction, coord, steps, pen_position); printf("If your move was valid, I just moved %d steps dog.\n", steps); break; case PRINT_ARR: print_arr(floor); break; case END_OF_DATA: printf("Thank you goodbye\n"); exit(EXIT_SUCCESS); break; default: printf("Invalid command, please try again\n"); break; } } return 0; }