From 9e839263349aed657dc37cc1cdd6e8a93790e7d3 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Fri, 22 Oct 2004 02:25:23 +0000
Subject: [PATCH] Created iniFileName() to auto-generate full-paths to
 correctly-cased .ini filenames, using file.host.ini, if it exists, in place
 of file.ini.

---
 src/xpdev/ini_file.c | 33 +++++++++++++++++++++++++++++++++
 src/xpdev/ini_file.h |  1 +
 2 files changed, 34 insertions(+)

diff --git a/src/xpdev/ini_file.c b/src/xpdev/ini_file.c
index 0ea9e8ac02..4a599a0059 100644
--- a/src/xpdev/ini_file.c
+++ b/src/xpdev/ini_file.c
@@ -854,6 +854,39 @@ ulong iniGetIpAddress(str_list_t* list, const char* section, const char* key, ul
 
 #endif	/* !NO_SOCKET_SUPPORT */
 
+char* iniFileName(char* dest, size_t maxlen, const char* indir, const char* infname)
+{
+	char	dir[MAX_PATH+1];
+	char	fname[MAX_PATH+1];
+	char	ext[MAX_PATH+1];
+	char*	p;
+
+	SAFECOPY(dir,indir);
+	backslash(dir);
+	SAFECOPY(fname,infname);
+	ext[0]=0;
+	if((p=getfext(fname))!=NULL) {
+		SAFECOPY(ext,p);
+		*p=0;
+	}
+
+#if !defined(NO_SOCKET_SUPPORT)
+	{
+		char hostname[128];
+
+		if(gethostname(hostname,sizeof(hostname))==0) {
+			safe_snprintf(dest,maxlen,"%s%s.%s%s",dir,fname,hostname,ext);
+			if(fexistcase(dest))
+				return(dest);
+		}
+	}
+#endif
+	
+	safe_snprintf(dest,maxlen,"%s%s%s",dir,fname,ext);
+	fexistcase(dest);
+	return(dest);
+}
+
 double iniReadFloat(FILE* fp, const char* section, const char* key, double deflt)
 {
 	char	buf[INI_MAX_VALUE_LEN];
diff --git a/src/xpdev/ini_file.h b/src/xpdev/ini_file.h
index 1f5c2eb314..ab1b9847bc 100644
--- a/src/xpdev/ini_file.h
+++ b/src/xpdev/ini_file.h
@@ -96,6 +96,7 @@ void*		iniFreeNamedStringList(named_string_t** list);
 
 
 /* File I/O Functions */
+char*		iniFileName(char* dest, size_t maxlen, const char* dir, const char* fname);
 FILE*		iniOpenFile(const char* fname);
 str_list_t	iniReadFile(FILE*);
 BOOL		iniWriteFile(FILE*, const str_list_t);
-- 
GitLab