From bd320417ee81d4229a7be8290d680f0763fbb2c0 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Fri, 22 Aug 2003 10:07:32 +0000 Subject: [PATCH] Created getfilepath() function return full path of file_t reference. --- src/sbbs3/addfiles.c | 5 +---- src/sbbs3/file.cpp | 36 ++++++++++++------------------------ src/sbbs3/filedat.c | 21 +++++++++++++++++---- src/sbbs3/sbbs.h | 1 + 4 files changed, 31 insertions(+), 32 deletions(-) diff --git a/src/sbbs3/addfiles.c b/src/sbbs3/addfiles.c index 79b482404a..db8f9ea81e 100644 --- a/src/sbbs3/addfiles.c +++ b/src/sbbs3/addfiles.c @@ -629,10 +629,7 @@ void synclist(char *inpath, int dirnum) continue; } removefiledat(&scfg,&f); - sprintf(str,"%s%s" - ,f.altpath>0 && f.altpath<=scfg.altpaths ? scfg.altpath[f.altpath-1] - : scfg.dir[f.dir]->path,fname); - if(remove(str)) + if(remove(getfilepath(&scfg,&f,str)) printf("Error removing %s\n",str); removed++; printf("Removed from database\n"); diff --git a/src/sbbs3/file.cpp b/src/sbbs3/file.cpp index 49cd2c6b04..da8a50302a 100644 --- a/src/sbbs3/file.cpp +++ b/src/sbbs3/file.cpp @@ -42,9 +42,10 @@ /****************************************************************************/ void sbbs_t::fileinfo(file_t* f) { - char fname[13],ext[513]; + char ext[513]; char tmp[512]; char path[MAX_PATH+1]; + char fpath[MAX_PATH+1]; uint i,j; for(i=0;i<usrlibs;i++) @@ -54,29 +55,14 @@ void sbbs_t::fileinfo(file_t* f) if(usrdir[i][j]==f->dir) break; - unpadfname(f->name,fname); - - sprintf(path,"%s%s",f->altpath>0 && f->altpath<=cfg.altpaths - ? cfg.altpath[f->altpath-1]:cfg.dir[f->dir]->path - ,fname); + getfilepath(&cfg,f,path); bprintf(text[FiLib],i+1,cfg.lib[cfg.dir[f->dir]->lib]->lname); bprintf(text[FiDir],j+1,cfg.dir[f->dir]->lname); - bprintf(text[FiFilename],fname); -#ifdef _WIN32 - if(f->size!=-1) { - - WIN32_FIND_DATA finddata; - HANDLE h=FindFirstFile(path,&finddata); - - if(h!=INVALID_HANDLE_VALUE) { - - if(stricmp(finddata.cFileName,fname)) - bprintf(text[FiFilename],finddata.cFileName); - - FindClose(h); - } - } -#endif + bprintf(text[FiFilename],getfname(path)); + SAFECOPY(fpath,path); + fexistcase(fpath); + if(strcmp(path,fpath)) /* Different "actual" filename */ + bprintf(text[FiFilename],getfname(fpath)); if(f->size!=-1L) bprintf(text[FiFileSize],ultoac(f->size,tmp)); @@ -94,9 +80,11 @@ void sbbs_t::fileinfo(file_t* f) if(f->altpath) { if(f->altpath<=cfg.altpaths) { if(SYSOP) - bprintf(text[FiAlternatePath],cfg.altpath[f->altpath-1]); } + bprintf(text[FiAlternatePath],cfg.altpath[f->altpath-1]); + } else - bprintf(text[InvalidAlternatePathN],f->altpath); } + bprintf(text[InvalidAlternatePathN],f->altpath); + } CRLF; if(f->misc&FM_EXTDESC) { getextdesc(&cfg,f->dir,f->datoffset,ext); diff --git a/src/sbbs3/filedat.c b/src/sbbs3/filedat.c index 8260e6044e..17be54baf2 100644 --- a/src/sbbs3/filedat.c +++ b/src/sbbs3/filedat.c @@ -44,7 +44,7 @@ /****************************************************************************/ BOOL DLLCALL getfiledat(scfg_t* cfg, file_t* f) { - char buf[F_LEN+1],str[256],tmp[128]; + char buf[F_LEN+1],str[256]; int file; long length; @@ -73,9 +73,7 @@ BOOL DLLCALL getfiledat(scfg_t* cfg, file_t* f) f->cdt=atol(str); if(!f->size) { /* only read disk if this is null */ - sprintf(str,"%s%s" - ,f->altpath>0 && f->altpath<=cfg->altpaths ? cfg->altpath[f->altpath-1] - : cfg->dir[f->dir]->path,unpadfname(f->name,tmp)); + getfilepath(cfg,f,str); f->size=flength(str); f->date=fdate(str); /* @@ -655,3 +653,18 @@ int DLLCALL update_uldate(scfg_t* cfg, file_t* f) close(file); return(0); } + +/****************************************************************************/ +/* Returns full path to specified file */ +/****************************************************************************/ +char* DLLCALL getfilepath(scfg_t* cfg, file_t* f, char* path) +{ + char fname[MAX_PATH+1]; + + unpadfname(f->name,fname); + sprintf(path,"%s%s",f->altpath>0 && f->altpath<=cfg->altpaths + ? cfg->altpath[f->altpath-1] : cfg->dir[f->dir]->path + ,fname); + + return(path); +} diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h index 36e75c4516..a4a194373b 100644 --- a/src/sbbs3/sbbs.h +++ b/src/sbbs3/sbbs.h @@ -782,6 +782,7 @@ extern "C" { DLLEXPORT BOOL DLLCALL putfiledat(scfg_t* cfg, file_t* f); DLLEXPORT void DLLCALL putextdesc(scfg_t* cfg, uint dirnum, ulong datoffset, char *ext); DLLEXPORT void DLLCALL getextdesc(scfg_t* cfg, uint dirnum, ulong datoffset, char *ext); + DLLEXPORT char* DLLCALL getfilepath(scfg_t* cfg, file_t* f, char* path); DLLEXPORT BOOL DLLCALL removefiledat(scfg_t* cfg, file_t* f); DLLEXPORT BOOL DLLCALL addfiledat(scfg_t* cfg, file_t* f); -- GitLab