From f83ed582ac6a4a249b1858bea43ac63155305b97 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Fri, 4 Dec 2009 06:04:11 +0000 Subject: [PATCH] Resolve <data_dir>/qnet/<hub_id>.out case sensitivity issue (e.g. on *nix file systems) where a mixed-case directory would work for including the files in the packet, but the files would not be deleted. The directory name must be the lower-case QWK-ID (e.g. "hubid.out", not "HubID.out" or "HUBID.out") for the files to be included (and deleted) now. --- src/sbbs3/pack_qwk.cpp | 25 ++++++++++++++----------- src/sbbs3/qwk.cpp | 6 ++++-- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/src/sbbs3/pack_qwk.cpp b/src/sbbs3/pack_qwk.cpp index feb40b1489..1a2d4efa79 100644 --- a/src/sbbs3/pack_qwk.cpp +++ b/src/sbbs3/pack_qwk.cpp @@ -318,7 +318,7 @@ bool sbbs_t::pack_qwk(char *packet, ulong *msgcnt, bool prepack) ,cfg.data_dir,useron.number,msg.subj); SAFEPRINTF2(tmp,"%s%s",cfg.temp_dir,msg.subj); if(fexistcase(str) && !fexistcase(tmp)) - mv(str,tmp,1); + mv(str,tmp,/* copy: */TRUE); } size=msgtoqwk(&msg,qwk,mode,INVALID_SUB,0,hdrs); @@ -541,20 +541,23 @@ bool sbbs_t::pack_qwk(char *packet, ulong *msgcnt, bool prepack) return(false); if(/*!prepack && */ useron.rest&FLAG('Q')) { /* If QWK Net node, check for files */ - SAFEPRINTF2(str,"%sqnet/%s.out/",cfg.data_dir,useron.alias); + char id[LEN_QWKID+1]; + SAFECOPY(id,useron.alias); + strlwr(id); + SAFEPRINTF2(str,"%sqnet/%s.out/",cfg.data_dir,id); dir=opendir(str); while(dir!=NULL && (dirent=readdir(dir))!=NULL) { /* Move files into temp dir */ - SAFEPRINTF3(str,"%sqnet/%s.out/%s",cfg.data_dir,useron.alias,dirent->d_name); + SAFEPRINTF3(str,"%sqnet/%s.out/%s",cfg.data_dir,id,dirent->d_name); if(isdir(str)) continue; SAFEPRINTF2(tmp2,"%s%s",cfg.temp_dir,dirent->d_name); - lncntr=0; /* Default pause */ + lncntr=0; /* Defeat pause */ if(online==ON_LOCAL) eprintf(LOG_INFO,"Including %s in packet",str); else lprintf(LOG_INFO,"Including %s in packet",str); bprintf(text[RetrievingFile],str); - if(!mv(str,tmp2,1)) + if(!mv(str,tmp2,/* copy: */TRUE)) netfiles++; } if(dir!=NULL) @@ -591,8 +594,8 @@ bool sbbs_t::pack_qwk(char *packet, ulong *msgcnt, bool prepack) ? cfg.altpath[batdn_alt[i]-1] : cfg.dir[batdn_dir[i]]->path ,tmp); - mv(str,tmp2,1); /* copy the file to temp dir */ - getnodedat(cfg.node_num,&thisnode,1); + mv(str,tmp2,/* copy: */TRUE); /* copy the file to temp dir */ + getnodedat(cfg.node_num,&thisnode,/* copy: */TRUE); thisnode.aux=0xfe; putnodedat(cfg.node_num,&thisnode); CRLF; @@ -615,17 +618,17 @@ bool sbbs_t::pack_qwk(char *packet, ulong *msgcnt, bool prepack) SAFEPRINTF(str,"%sQWK/HELLO",cfg.text_dir); if(fexistcase(str)) { SAFEPRINTF(tmp2,"%sHELLO",cfg.temp_dir); - mv(str,tmp2,1); + mv(str,tmp2,/* copy: */TRUE); } SAFEPRINTF(str,"%sQWK/BBSNEWS",cfg.text_dir); if(fexistcase(str)) { SAFEPRINTF(tmp2,"%sBBSNEWS",cfg.temp_dir); - mv(str,tmp2,1); + mv(str,tmp2,/* copy: */TRUE); } SAFEPRINTF(str,"%sQWK/GOODBYE",cfg.text_dir); if(fexistcase(str)) { SAFEPRINTF(tmp2,"%sGOODBYE",cfg.temp_dir); - mv(str,tmp2,1); + mv(str,tmp2,/* copy: */TRUE); } SAFEPRINTF(str,"%sQWK/BLT-*",cfg.text_dir); glob(str,0,NULL,&g); @@ -635,7 +638,7 @@ bool sbbs_t::pack_qwk(char *packet, ulong *msgcnt, bool prepack) if(isdigit(str[4]) && isdigit(str[9])) { SAFEPRINTF2(str,"%sQWK/%s",cfg.text_dir,fname); SAFEPRINTF2(tmp2,"%s%s",cfg.temp_dir,fname); - mv(str,tmp2,1); + mv(str,tmp2,/* copy: */TRUE); } } globfree(&g); diff --git a/src/sbbs3/qwk.cpp b/src/sbbs3/qwk.cpp index 83f48b1f8f..b4e50386ce 100644 --- a/src/sbbs3/qwk.cpp +++ b/src/sbbs3/qwk.cpp @@ -344,8 +344,10 @@ void sbbs_t::qwk_success(ulong msgcnt, char bi, char prepack) smbmsg_t msg; if(useron.rest&FLAG('Q')) { // Was if(!prepack) only - sprintf(str,"%sqnet/%.8s.out/",cfg.data_dir,useron.alias); - strlwr(str); + char id[LEN_QWKID+1]; + SAFECOPY(id,useron.alias); + strlwr(id); + sprintf(str,"%sqnet/%s.out/",cfg.data_dir,id); delfiles(str,ALLFILES); } -- GitLab