main.c (1050B)
1 /* main.c - calculadora: ./calc (terminal), ./calc --gui, ./calc --eval "texto", 2 * ./calc --selftest [--deep] */ 3 #include <stdio.h> 4 #include <stdlib.h> 5 #include <string.h> 6 #include <time.h> 7 #include "selftest.h" 8 #include "calc.h" 9 #include "store.h" 10 11 int gui_run(Calc *c, int scale); 12 int tui_run(Calc *c); 13 14 static uint32_t rnd(void) { return (uint32_t)rand(); } 15 16 int main(int argc, char **argv) 17 { 18 bool deep = false, gui = false; 19 int scale = 2; 20 for (int i = 1; i < argc; i++) { 21 if (!strcmp(argv[i], "--deep")) deep = true; 22 else if (!strcmp(argv[i], "--gui")) gui = true; 23 else if (!strcmp(argv[i], "--scale") && i + 1 < argc) scale = atoi(argv[++i]); 24 } 25 for (int i = 1; i < argc; i++) { 26 if (!strcmp(argv[i], "--selftest")) return selftest_run(deep); 27 if (!strcmp(argv[i], "--eval") && i + 1 < argc) return eval_cli(argv[i + 1]); 28 } 29 srand((unsigned)time(0)); 30 static Calc c; 31 calc_init(&c); 32 c.rand = rnd; 33 store_load(&c); 34 return gui ? gui_run(&c, scale) : tui_run(&c); 35 }