瀏覽代碼

make more config file errors fatal

we really shouldn't just synchronize despite config parsing errors.
Oswald Buddenhagen 12 年之前
父節點
當前提交
18936f6696
共有 1 個文件被更改,包括 18 次插入5 次删除
  1. 18 5
      src/config.c

+ 18 - 5
src/config.c

@@ -57,8 +57,10 @@ get_arg( conffile_t *cfile, int required, int *comment )
 	if (!c || c == '#') {
 		if (comment)
 			*comment = (c == '#');
-		if (required)
+		if (required) {
 			error( "%s:%d: parameter missing\n", cfile->file, cfile->line );
+			cfile->err = 1;
+		}
 		ret = 0;
 	} else {
 		for (quoted = 0, ret = t = p; c; c = *p) {
@@ -73,6 +75,7 @@ get_arg( conffile_t *cfile, int required, int *comment )
 		*t = 0;
 		if (quoted) {
 			error( "%s:%d: missing closing quote\n", cfile->file, cfile->line );
+			cfile->err = 1;
 			ret = 0;
 		}
 	}
@@ -91,9 +94,11 @@ parse_bool( conffile_t *cfile )
 	if (strcasecmp( cfile->val, "no" ) &&
 	    strcasecmp( cfile->val, "false" ) &&
 	    strcasecmp( cfile->val, "off" ) &&
-	    strcmp( cfile->val, "0" ))
+	    strcmp( cfile->val, "0" )) {
 		error( "%s:%d: invalid boolean value '%s'\n",
 		       cfile->file, cfile->line, cfile->val );
+		cfile->err = 1;
+	}
 	return 0;
 }
 
@@ -107,6 +112,7 @@ parse_int( conffile_t *cfile )
 	if (*p) {
 		error( "%s:%d: invalid integer value '%s'\n",
 		       cfile->file, cfile->line, cfile->val );
+		cfile->err = 1;
 		return 0;
 	}
 	return ret;
@@ -128,6 +134,7 @@ parse_size( conffile_t *cfile )
 	if (*p) {
 		fprintf (stderr, "%s:%d: invalid size '%s'\n",
 		         cfile->file, cfile->line, cfile->val);
+		cfile->err = 1;
 		return 0;
 	}
 	return ret;
@@ -171,9 +178,11 @@ getopt_helper( conffile_t *cfile, int *cops, int ops[], char **sync_state )
 				ops[M] |= OP_FLAGS;
 			else if (!strcasecmp( "All", arg ) || !strcasecmp( "Full", arg ))
 				*cops |= XOP_PULL|XOP_PUSH;
-			else if (strcasecmp( "None", arg ) && strcasecmp( "Noop", arg ))
+			else if (strcasecmp( "None", arg ) && strcasecmp( "Noop", arg )) {
 				error( "%s:%d: invalid Sync arg '%s'\n",
 				       cfile->file, cfile->line, arg );
+				cfile->err = 1;
+			}
 		while ((arg = get_arg( cfile, ARG_OPTIONAL, 0 )));
 		ops[M] |= XOP_HAVE_TYPE;
 	} else if (!strcasecmp( "Expunge", cfile->cmd )) {
@@ -185,9 +194,11 @@ getopt_helper( conffile_t *cfile, int *cops, int ops[], char **sync_state )
 				ops[M] |= OP_EXPUNGE;
 			else if (!strcasecmp( "Slave", arg ))
 				ops[S] |= OP_EXPUNGE;
-			else if (strcasecmp( "None", arg ))
+			else if (strcasecmp( "None", arg )) {
 				error( "%s:%d: invalid Expunge arg '%s'\n",
 				       cfile->file, cfile->line, arg );
+				cfile->err = 1;
+			}
 		while ((arg = get_arg( cfile, ARG_OPTIONAL, 0 )));
 		ops[M] |= XOP_HAVE_EXPUNGE;
 	} else if (!strcasecmp( "Create", cfile->cmd )) {
@@ -199,9 +210,11 @@ getopt_helper( conffile_t *cfile, int *cops, int ops[], char **sync_state )
 				ops[M] |= OP_CREATE;
 			else if (!strcasecmp( "Slave", arg ))
 				ops[S] |= OP_CREATE;
-			else if (strcasecmp( "None", arg ))
+			else if (strcasecmp( "None", arg )) {
 				error( "%s:%d: invalid Create arg '%s'\n",
 				       cfile->file, cfile->line, arg );
+				cfile->err = 1;
+			}
 		while ((arg = get_arg( cfile, ARG_OPTIONAL, 0 )));
 		ops[M] |= XOP_HAVE_CREATE;
 	} else if (!strcasecmp( "SyncState", cfile->cmd ))