[MINOR] more friendly reports of wrong uses of the usesrc keyword

It was difficult to find how to enter the "usesrc" keyword. Now the
configuration checker is a bit more friendly and tries to identify
most mistakes and gives some hints back.
diff --git a/src/cfgparse.c b/src/cfgparse.c
index 8971ca6..ae5433e 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -1193,18 +1193,23 @@
 			}
 			else if (!strcmp(args[cur_arg], "source")) {  /* address to which we bind when connecting */
 				if (!*args[cur_arg + 1]) {
+#ifdef CONFIG_HAP_CTTPROXY
+					Alert("parsing [%s:%d] : '%s' expects <addr>[:<port>], and optional '%s' <addr> as argument.\n",
+					      file, linenum, "source", "usesrc");
+#else
 					Alert("parsing [%s:%d] : '%s' expects <addr>[:<port>] as argument.\n",
 					      file, linenum, "source");
+#endif
 					return -1;
 				}
 				newsrv->state |= SRV_BIND_SRC;
 				newsrv->source_addr = *str2sa(args[cur_arg + 1]);
 				cur_arg += 2;
-#ifdef CONFIG_HAP_CTTPROXY
 				if (!strcmp(args[cur_arg], "usesrc")) {  /* address to use outside */
+#ifdef CONFIG_HAP_CTTPROXY
 					if (newsrv->source_addr.sin_addr.s_addr == INADDR_ANY) {
-						Alert("parsing [%s:%d] : '%s' requires an explicit 'source' address.\n",
-						      file, linenum, "usesrc");
+						Alert("parsing [%s:%d] : '%s' requires an explicit '%s' address.\n",
+						      file, linenum, "usesrc", "source");
 						return -1;
 					}
 					if (!*args[cur_arg + 1]) {
@@ -1222,9 +1227,20 @@
 					}
 					global.last_checks |= LSTCHK_CTTPROXY | LSTCHK_NETADM;
 					cur_arg += 2;
-				}
+#else	/* no CTTPROXY support */
+					Alert("parsing [%s:%d] : '%s' not allowed here because support for cttproxy was not compiled in.\n",
+						      file, linenum, "usesrc");
+						return -1;
 #endif
+				}
 			}
+#ifdef CONFIG_HAP_CTTPROXY
+			else if (!strcmp(args[cur_arg], "usesrc")) {  /* address to use outside: needs "source" first */
+				Alert("parsing [%s:%d] : '%s' only allowed after a '%s' statement.\n",
+				      file, linenum, "usesrc", "source");
+				return -1;
+			}
+#endif
 			else {
 				Alert("parsing [%s:%d] : server %s only supports options 'backup', 'cookie', 'check', 'inter', 'rise', 'fall', 'port', 'source', 'minconn', 'maxconn' and 'weight'.\n",
 				      file, linenum, newsrv->id);
@@ -1323,15 +1339,20 @@
 			return 0;
 
 		if (!*args[1]) {
+#ifdef CONFIG_HAP_CTTPROXY
+			Alert("parsing [%s:%d] : '%s' expects <addr>[:<port>], and optional '%s' <addr> as argument.\n",
+			      file, linenum, "source", "usesrc");
+#else
 			Alert("parsing [%s:%d] : '%s' expects <addr>[:<port>] as argument.\n",
 			      file, linenum, "source");
+#endif
 			return -1;
 		}
 	
 		curproxy->source_addr = *str2sa(args[1]);
 		curproxy->options |= PR_O_BIND_SRC;
-#ifdef CONFIG_HAP_CTTPROXY
 		if (!strcmp(args[2], "usesrc")) {  /* address to use outside */
+#ifdef CONFIG_HAP_CTTPROXY
 			if (curproxy->source_addr.sin_addr.s_addr == INADDR_ANY) {
 				Alert("parsing [%s:%d] : '%s' requires an explicit 'source' address.\n",
 				      file, linenum, "usesrc");
@@ -1352,9 +1373,20 @@
 				curproxy->tproxy_addr = *str2sa(args[3]);
 			}
 			global.last_checks |= LSTCHK_CTTPROXY | LSTCHK_NETADM;
-		}
+#else	/* no CTTPROXY support */
+			Alert("parsing [%s:%d] : '%s' not allowed here because support for cttproxy was not compiled in.\n",
+			      file, linenum, "usesrc");
+			return -1;
 #endif
+		}
 	}
+#ifdef CONFIG_HAP_CTTPROXY
+	else if (!strcmp(args[0], "usesrc")) {  /* address to use outside: needs "source" first */
+		Alert("parsing [%s:%d] : '%s' only allowed after a '%s' statement.\n",
+		      file, linenum, "usesrc", "source");
+		return -1;
+	}
+#endif
 	else if (!strcmp(args[0], "cliexp") || !strcmp(args[0], "reqrep")) {  /* replace request header from a regex */
 		regex_t *preg;
 		if (curproxy == &defproxy) {