diff --git a/src/xpdev/ini_file.c b/src/xpdev/ini_file.c
index 7c5601a72bf982652ee4519418b97c6f4646c472..af44d4160fffdb0b1fc7ceea2c06c21d63b8a6cf 100644
--- a/src/xpdev/ini_file.c
+++ b/src/xpdev/ini_file.c
@@ -2307,6 +2307,7 @@ BOOL iniCloseFile(FILE* fp)
 str_list_t iniReadFile(FILE* fp)
 {
 	char		str[INI_MAX_LINE_LEN];
+	char		err[512];
 	char*		p;
 	size_t		i;
 	size_t		inc_len;
@@ -2328,19 +2329,29 @@ str_list_t iniReadFile(FILE* fp)
 			p=list[i]+inc_len;
 			SKIP_WHITESPACE(p);
 			truncsp(p);
-			if(inc_counter >= INI_INCLUDE_MAX)
-				SAFEPRINTF2(str, ";%s - MAXIMUM INCLUDES REACHED: %u", list[i], INI_INCLUDE_MAX);
-			else if((insert_fp=fopen(p,"r"))==NULL)
-				SAFEPRINTF2(str, ";%s - FAILURE: %s", list[i], STRERROR(errno));
-			else
-				SAFEPRINTF(str, ";%s", list[i]);
+			glob_t gl;
+ 			glob(p, GLOB_MARK, NULL, &gl);
+			safe_snprintf(str, sizeof(str), "; %s - %lu matches found", list[i], (ulong)gl.gl_pathc);
 			strListReplace(list, i, str);
-			if(insert_fp!=NULL) {
-				strListInsertFile(insert_fp, &list, i+1, INI_MAX_LINE_LEN);
-				fclose(insert_fp);
-				insert_fp=NULL;
-				inc_counter++;
+			for(size_t j = 0; j < gl.gl_pathc; j++) {
+				char* fname = gl.gl_pathv[j];
+				if(*lastchar(fname) == '/')
+					continue;
+				if(inc_counter >= INI_INCLUDE_MAX)
+					SAFEPRINTF2(str, "; %s - MAXIMUM INCLUDES REACHED: %u", fname, INI_INCLUDE_MAX);
+				else if((insert_fp=fopen(fname,"r"))==NULL)
+					SAFEPRINTF2(str, "; %s - FAILURE: %s", fname, safe_strerror(errno, err, sizeof(err)));
+				else
+					SAFEPRINTF(str, "; %s", fname);
+				strListInsert(&list, str, i + 1);
+				if(insert_fp!=NULL) {
+					strListInsertFile(insert_fp, &list, i + 2, INI_MAX_LINE_LEN);
+					fclose(insert_fp);
+					insert_fp=NULL;
+					inc_counter++;
+				}
 			}
+			globfree(&gl);
 		}
 	}