[PATCH 2/5] better regcomp failure messages

From: M Farkas-Dyck <strake888_AT_gmail.com>
Date: Fri, 16 May 2014 06:42:52 +0000

---
 sandy.c | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/sandy.c b/sandy.c
index 5e519b7..05851a5 100644
--- a/sandy.c
+++ b/sandy.c
_AT_@ -276,6 +276,16 @@ static regex_t *cmd_res[LENGTH(cmds)];
 static regex_t *syntax_file_res[LENGTH(syntaxes)];
 static regex_t *syntax_res[LENGTH(syntaxes)][SYN_COLORS];
 
+static int
+xregcomp(regex_t *p_re, const char *s, int flags) {
+	int c=regcomp(p_re, s, flags);
+	if(c != 0) {
+		uint8_t msg[4096];
+		regerror(c, p_re, msg, 4096);
+		i_die(msg);
+	}
+}
+
 /* F_* FUNCTIONS
 	Can be linked to an action or keybinding. Always return void and take const Arg* */
 
_AT_@ -485,7 +495,7 @@ f_syntax(const Arg *arg) {
 				   : !regexec(syntax_file_res[i], filename, 1, NULL, 0)) {
 			for(j=0; j<SYN_COLORS; j++) {
 				if((syntx >= 0) && syntax_res[syntx][j]) regfree(syntax_res[syntx][j]);
-				if(syntaxes[i].re_text[j] && regcomp(syntax_res[i][j], syntaxes[i].re_text[j], REG_EXTENDED|REG_NEWLINE)) i_die("Faulty regex.\n");
+				xregcomp(syntax_res[i][j], syntaxes[i].re_text[j], REG_EXTENDED|REG_NEWLINE);
 			}
 			syntx=i;
 			setenv(envs[EnvSyntax], syntaxes[syntx].name, 1);
_AT_@ -1182,12 +1192,12 @@ i_setup(void){
 
 	for(i=0; i<LENGTH(cmds); i++) {
 		if((cmd_res[i]=(regex_t*)calloc(1, sizeof (regex_t))) == NULL) i_die("Can't malloc.\n");
-		if(regcomp(cmd_res[i], cmds[i].re_text, REG_EXTENDED|REG_ICASE|REG_NEWLINE)) i_die("Faulty regex.\n");
+		xregcomp(cmd_res[i], cmds[i].re_text, REG_EXTENDED|REG_ICASE|REG_NEWLINE);
 	}
 
 	for(i=0; i<LENGTH(syntaxes); i++) {
 		if((syntax_file_res[i]=(regex_t*)calloc(1, sizeof (regex_t))) == NULL) i_die("Can't malloc.\n");
-		if(regcomp(syntax_file_res[i], syntaxes[i].file_re_text, REG_EXTENDED|REG_NOSUB|REG_ICASE|REG_NEWLINE)) i_die("Faulty regex.\n");
+		xregcomp(syntax_file_res[i], syntaxes[i].file_re_text, REG_EXTENDED|REG_NOSUB|REG_ICASE|REG_NEWLINE);
 		for(j=0; j<SYN_COLORS; j++)
 			if((syntax_res[i][j]=(regex_t*)calloc(1, sizeof (regex_t))) == NULL) i_die("Can't malloc.\n");
 	}
-- 
2.0.0
Received on Mon Sep 17 2001 - 00:00:00 CEST

This archive was generated by hypermail 2.3.0 : Mon Jun 30 2014 - 07:24:03 CEST