Commit Diff


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);