[MINOR] cfgparse: add support for warnings in external functions

Some parsers will need to report warnings in some cases. Let's
use positive values for that.
diff --git a/include/common/cfgparse.h b/include/common/cfgparse.h
index c5777f9..35e5614 100644
--- a/include/common/cfgparse.h
+++ b/include/common/cfgparse.h
@@ -36,7 +36,8 @@
 struct cfg_keyword {
 	int section;                            /* section type for this keyword */
 	const char *kw;                         /* the keyword itself */
-	int (*parse)(char **args,               /* command line and arguments */
+	int (*parse)(                           /* 0=OK, <0=Alert, >0=Warning */
+		     char **args,               /* command line and arguments */
 		     int section_type,          /* current section CFG_{GLOBAL|LISTEN} */
 		     struct proxy *curpx,       /* current proxy (NULL in GLOBAL) */
 		     struct proxy *defpx,       /* default proxy (NULL in GLOBAL) */
diff --git a/src/cfgparse.c b/src/cfgparse.c
index af29a47..91e6c55 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -501,6 +501,7 @@
 	else {
 		struct cfg_kw_list *kwl;
 		int index;
+		int rc;
 
 		list_for_each_entry(kwl, &cfg_keywords.list, list) {
 			for (index = 0; kwl->kw[index].kw != NULL; index++) {
@@ -510,10 +511,15 @@
 					/* prepare error message just in case */
 					snprintf(trash, sizeof(trash),
 						 "error near '%s' in '%s' section", args[0], "global");
-					if (kwl->kw[index].parse(args, CFG_GLOBAL, NULL, NULL, trash, sizeof(trash)) < 0) {
+					rc = kwl->kw[index].parse(args, CFG_GLOBAL, NULL, NULL, trash, sizeof(trash));
+					if (rc < 0) {
 						Alert("parsing [%s:%d] : %s\n", file, linenum, trash);
 						return -1;
 					}
+					else if (rc > 0) {
+						Warning("parsing [%s:%d] : %s\n", file, linenum, trash);
+						return 0;
+					}
 					return 0;
 				}
 			}
@@ -2680,10 +2686,15 @@
 					/* prepare error message just in case */
 					snprintf(trash, sizeof(trash),
 						 "error near '%s' in %s section", args[0], cursection);
-					if (kwl->kw[index].parse(args, CFG_LISTEN, curproxy, &defproxy, trash, sizeof(trash)) < 0) {
+					rc = kwl->kw[index].parse(args, CFG_LISTEN, curproxy, &defproxy, trash, sizeof(trash));
+					if (rc < 0) {
 						Alert("parsing [%s:%d] : %s\n", file, linenum, trash);
 						return -1;
 					}
+					else if (rc > 0) {
+						Warning("parsing [%s:%d] : %s\n", file, linenum, trash);
+						return 0;
+					}
 					return 0;
 				}
 			}