[MEDIUM] config: remove the limitation of 10 config files

Now we use a linked list, there is no limit anymore.
diff --git a/include/common/defaults.h b/include/common/defaults.h
index 9b8d806..bdc4176 100644
--- a/include/common/defaults.h
+++ b/include/common/defaults.h
@@ -48,9 +48,6 @@
 #define LINESIZE	2048
 #endif
 
-// max # of configuration files
-#define MAX_CFG_FILES   10
-
 // max # args on a configuration line
 #define MAX_LINE_ARGS   64
 
diff --git a/src/haproxy.c b/src/haproxy.c
index d645ee0..d26b0a7 100644
--- a/src/haproxy.c
+++ b/src/haproxy.c
@@ -92,8 +92,8 @@
 
 /*********************************************************************/
 
-static int cfg_nbcfgfiles;      /* number of config files */
-static char *cfg_cfgfile[10];	/* configuration files, stop at NULL */
+/* list of config files */
+static struct list cfg_cfgfiles = LIST_HEAD_INIT(cfg_cfgfiles);
 char *progname = NULL;		/* program name */
 int  pid;			/* current process id */
 int  relative_pid = 1;		/* process id starting at 1 */
@@ -380,6 +380,7 @@
 	char *tmp;
 	char *cfg_pidfile = NULL;
 	int err_code = 0;
+	struct wordlist *wl;
 
 	/*
 	 * Initialize the previously static variables.
@@ -500,12 +501,13 @@
 				case 'm' : global.rlimit_memmax = atol(*argv); break;
 				case 'N' : cfg_maxpconn = atol(*argv); break;
 				case 'f' :
-					if (cfg_nbcfgfiles > MAX_CFG_FILES) {
-						Alert("Cannot load configuration file %s : too many configuration files (max %d).\n",
-						      *argv, MAX_CFG_FILES);
+					wl = (struct wordlist *)calloc(1, sizeof(*wl));
+					if (!wl) {
+						Alert("Cannot load configuration file %s : out of memory.\n", *argv);
 						exit(1);
 					}
-					cfg_cfgfile[cfg_nbcfgfiles++] = *argv;
+					wl->s = *argv;
+					LIST_ADDQ(&cfg_cfgfiles, &wl->list);
 					break;
 				case 'p' : cfg_pidfile = *argv; break;
 				default: usage(old_argv);
@@ -521,7 +523,7 @@
 		(arg_mode & (MODE_DAEMON | MODE_FOREGROUND | MODE_VERBOSE
 			     | MODE_QUIET | MODE_CHECK | MODE_DEBUG));
 
-	if (!cfg_nbcfgfiles)
+	if (LIST_ISEMPTY(&cfg_cfgfiles))
 		usage(old_argv);
 
 	gethostname(hostname, MAX_HOSTNAME_LEN);
@@ -531,17 +533,17 @@
 
 	init_default_instance();
 
-	for (i = 0; i < cfg_nbcfgfiles; i++) {
+	list_for_each_entry(wl, &cfg_cfgfiles, list) {
 		int ret;
 
-		ret = readcfgfile(cfg_cfgfile[i]);
+		ret = readcfgfile(wl->s);
 		if (ret == -1) {
 			Alert("Could not open configuration file %s : %s\n",
-			      cfg_cfgfile[i], strerror(errno));
+			      wl->s, strerror(errno));
 			exit(1);
 		}
 		if (ret & (ERR_ABORT|ERR_FATAL))
-			Alert("Error(s) found in configuration file : %s\n", cfg_cfgfile[i]);
+			Alert("Error(s) found in configuration file : %s\n", wl->s);
 		err_code |= ret;
 		if (err_code & ERR_ABORT)
 			exit(1);
@@ -880,6 +882,11 @@
 	free(fdtab);          fdtab   = NULL;
 	free(oldpids);        oldpids = NULL;
 
+	list_for_each_entry_safe(wl, wlb, &cfg_cfgfiles, list) {
+		LIST_DEL(&wl->list);
+		free(wl);
+	}
+
 	pool_destroy2(pool2_session);
 	pool_destroy2(pool2_buffer);
 	pool_destroy2(pool2_requri);