فهرست منبع

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