commit 86e7d7b44cdbcae02b5e082c6e8777e4baaee28a from: Omar Polo date: Sat Jun 19 14:00:09 2021 UTC start to implement `set' in config commit - 2ca05f73fc0c998168daa8967835a1c08fbbad05 commit + 86e7d7b44cdbcae02b5e082c6e8777e4baaee28a blob - 0b5437fa1cdd76e9928e66eddfca372c998ef11f blob + 7a8f5b61a0078503c9596e80a871d8d34c97dae4 --- defaults.c +++ defaults.c @@ -100,3 +100,15 @@ config_setprfx(const char *name, int cont, const char return 0; } + +int +config_setvari(const char *var, int val) +{ + return 0; +} + +int +config_setvars(const char *var, char *val) +{ + return 0; +} blob - dbcecbb213fe3d69bc0a31bccf54df25871e020f blob + e4ffbe003932bced6230759deadea7ce6a293965 --- parse.y +++ parse.y @@ -49,6 +49,8 @@ int parse_errors = 0; static void yyerror(const char *, ...); static int yylex(void); static void setprfx(int, const char *); +static void setvari(char *, int); +static void setvars(char *, char *); %} @@ -73,8 +75,8 @@ rule : set | unbind ; -set : TSET TSTRING '=' TSTRING { printf("set %s = \"%s\"\n", $2, $4); } - | TSET TSTRING '=' TNUMBER { printf("set %s = %d\n", $2, $4); } +set : TSET TSTRING '=' TSTRING { setvars($2, $4); } + | TSET TSTRING '=' TNUMBER { setvari($2, $4); } ; style : TSTYLE TSTRING { current_style = $2; } styleopt @@ -278,8 +280,28 @@ setprfx(int cont, const char *name) if (!config_setprfx(current_style, cont, name)) yyerror("invalid style %s", name); +} + +static void +setvari(char *var, int val) +{ + if (!config_setvari(var, val)) + yyerror("invalid variable or value: %s = %d", + var, val); + + free(var); } +static void +setvars(char *var, char *val) +{ + if (!config_setvars(var, val)) + yyerror("invalid variable or value: %s = \"%s\"", + var, val); + + free(var); +} + void parseconfig(const char *filename, int fonf) { blob - 78f360bb6264efefa0d40f0a66ee9ef7005c74d7 blob + 04a61dd49ea9af975cc134b144de452d33e2f64d --- telescope.h +++ telescope.h @@ -232,6 +232,8 @@ struct keymap { /* defaults.c */ int config_setprfx(const char *, int, const char *); +int config_setvari(const char *, int); +int config_setvars(const char *, char *); /* fs.c */ int fs_init(void);