diff --git a/src/xpdev/ini_file.c b/src/xpdev/ini_file.c index 0ea9e8ac0219b97921ce352f58986f6d0a5a4130..4a599a0059d01097cc2f660282e5d76c6cface5c 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 1f5c2eb3146daa616bf8b6d307f28e4709c5c803..ab1b9847bc0ebf3107728725092a1357133dfc2e 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);