From 2ff179412655cdd64e1b2baff565f9afc39ec020 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Wed, 7 Aug 2002 01:33:39 +0000 Subject: [PATCH] Options can now be specified with '-' as well as '/' (legacy compatibility). Displays help if the directory code specified does not start with a alphanum. Updated brace style. --- src/sbbs3/addfiles.c | 172 ++++++++++++++++++++++++++++++------------- 1 file changed, 120 insertions(+), 52 deletions(-) diff --git a/src/sbbs3/addfiles.c b/src/sbbs3/addfiles.c index fb9bf4318f..3f99868898 100644 --- a/src/sbbs3/addfiles.c +++ b/src/sbbs3/addfiles.c @@ -298,13 +298,14 @@ void addlist(char *inpath, file_t f, uint dskip, uint sskip) if(exist) { putfiledat(&scfg,&f); if(!(mode&NO_NEWDATE)) - update_uldate(&scfg, &f); } + update_uldate(&scfg, &f); + } else addfiledat(&scfg,&f); if(f.misc&FM_EXTDESC) { truncsp(ext); - putextdesc(&scfg,f.dir,f.datoffset,ext); } - + putextdesc(&scfg,f.dir,f.datoffset,ext); + } if(mode&UL_STATS) updatestats(f.cdt); files++; @@ -325,7 +326,9 @@ void addlist(char *inpath, file_t f, uint dskip, uint sskip) if((stream=fopen(listpath,"r"))==NULL) { printf("Can't open: %s\n" " or: %s\n",inpath,listpath); - return; } } + return; + } + } printf("Adding %s to %s %s\n\n" ,listpath,scfg.lib[scfg.dir[f.dir]->lib]->sname,scfg.dir[f.dir]->sname); @@ -371,7 +374,9 @@ void addlist(char *inpath, file_t f, uint dskip, uint sskip) if(mode&ULDATE_ONLY) { f.dateuled=time(NULL); update_uldate(&scfg, &f); - continue; } } + continue; + } + } sprintf(filepath,"%s%s",cur_altpath ? scfg.altpath[cur_altpath-1] : scfg.dir[f.dir]->path,fname); @@ -379,17 +384,20 @@ void addlist(char *inpath, file_t f, uint dskip, uint sskip) if(mode&FILE_DATE) { /* get the file date and put into desc */ l=fdate(filepath); unixtodstr(&scfg,l,f.desc); - strcat(f.desc," "); } + strcat(f.desc," "); + } if(mode&TODAYS_DATE) { /* put today's date in desc */ l=time(NULL); unixtodstr(&scfg,l,f.desc); - strcat(f.desc," "); } + strcat(f.desc," "); + } if(dskip && strlen(curline)>=dskip) p=curline+dskip; else { p++; - while(*p==SP) p++; } + while(*p==SP) p++; + } sprintf(tmp,"%.*s",(int)(LEN_FDESC-strlen(f.desc)),p); strcat(f.desc,tmp); @@ -397,7 +405,8 @@ void addlist(char *inpath, file_t f, uint dskip, uint sskip) if(!(mode&NO_EXTEND)) { memset(ext,0,513); f.misc|=FM_EXTDESC; - sprintf(ext,"%s\r\n",p); } + sprintf(ext,"%s\r\n",p); + } if(nextline[0]==SP) { strcpy(str,nextline); /* tack on to end of desc */ @@ -408,7 +417,10 @@ void addlist(char *inpath, file_t f, uint dskip, uint sskip) truncsp(p); if(p[0]) { strcat(f.desc," "); - strcat(f.desc,p); } } } + strcat(f.desc,p); + } + } + } while(!feof(stream) && !ferror(stream) && strlen(ext)<512) { if(nextline[0]!=SP) @@ -420,9 +432,12 @@ void addlist(char *inpath, file_t f, uint dskip, uint sskip) p=nextline+dskip; while(*p==SP) p++; strcat(ext,p); - strcat(ext,"\r\n"); } + strcat(ext,"\r\n"); + } nextline[0]=0; - fgets(nextline,255,stream); } } + fgets(nextline,255,stream); + } + } if(sskip) l=atol(fname+sskip); @@ -430,7 +445,9 @@ void addlist(char *inpath, file_t f, uint dskip, uint sskip) l=flength(filepath); if(l<1L) { printf("%s not found.\n",filepath); - continue; } } + continue; + } + } if(mode&FILE_ID) { for(i=0;i<scfg.total_fextrs;i++) @@ -464,7 +481,8 @@ void addlist(char *inpath, file_t f, uint dskip, uint sskip) sprintf(f.desc,"%.*s",LEN_FDESC,tmpext+i); for(i=0;f.desc[i]>=SP && i<LEN_FDESC;i++) ; - f.desc[i]=0; } + f.desc[i]=0; + } close(file); f.misc|=FM_EXTDESC; } @@ -480,20 +498,24 @@ void addlist(char *inpath, file_t f, uint dskip, uint sskip) if(exist) { putfiledat(&scfg,&f); if(!(mode&NO_NEWDATE)) - update_uldate(&scfg, &f); } + update_uldate(&scfg, &f); + } else addfiledat(&scfg,&f); if(f.misc&FM_EXTDESC) { truncsp(ext); - putextdesc(&scfg,f.dir,f.datoffset,ext); } + putextdesc(&scfg,f.dir,f.datoffset,ext); + } if(mode&UL_STATS) updatestats(l); - files++; } + files++; + } fclose(stream); if(mode&DEL_LIST && !(mode&SYNC_LIST)) { printf("\nDeleting %s\n",listpath); - remove(listpath); } + remove(listpath); + } } @@ -512,21 +534,25 @@ void synclist(char *inpath, int dirnum) sprintf(str,"%s%s.ixb",scfg.dir[dirnum]->data_dir,scfg.dir[dirnum]->code); if((file=nopen(str,O_RDONLY|O_BINARY))==-1) { printf("ERR_OPEN %s\n",str); - return; } + return; + } length=filelength(file); if(length%F_IXBSIZE) { close(file); printf("ERR_LEN (%ld) of %s\n",length,str); - return; } + return; + } if((ixbbuf=(uchar HUGE16 *)MALLOC(length))==NULL) { close(file); printf("ERR_ALLOC %s\n",str); - return; } + return; + } if(lread(file,ixbbuf,length)!=length) { close(file); FREE((char *)ixbbuf); printf("ERR_READ %s\n",str); - return; } + return; + } close(file); strcpy(listpath,inpath); @@ -536,7 +562,9 @@ void synclist(char *inpath, int dirnum) if((stream=fopen(listpath,"r"))==NULL) { printf("Can't open: %s\n" " or: %s\n",inpath,listpath); - return; } } + return; + } + } printf("\nSynchronizing %s with %s %s\n\n" ,listpath,scfg.lib[scfg.dir[dirnum]->lib]->sname,scfg.dir[dirnum]->sname); @@ -559,7 +587,8 @@ void synclist(char *inpath, int dirnum) p=strchr(str,SP); if(p) *p=0; if(!stricmp(str,fname)) - found=1; } + found=1; + } if(found) continue; padfname(fname,f.name); @@ -569,7 +598,8 @@ void synclist(char *inpath, int dirnum) getfiledat(&scfg,&f); if(f.opencount) { printf("currently OPEN by %u users\n",f.opencount); - continue; } + continue; + } removefiledat(&scfg,&f); sprintf(str,"%s%s" ,f.altpath>0 && f.altpath<=scfg.altpaths ? scfg.altpath[f.altpath-1] @@ -577,16 +607,18 @@ void synclist(char *inpath, int dirnum) if(remove(str)) printf("Error removing %s\n",str); removed++; - printf("Removed from database\n"); } + printf("Removed from database\n"); + } if(mode&DEL_LIST) { printf("\nDeleting %s\n",listpath); - remove(listpath); } + remove(listpath); + } } -char *usage="\nusage: addfiles code [.alt_path] [/opts] [\"*user\"] +list " +char *usage="\nusage: addfiles code [.alt_path] [-opts] [\"*user\"] +list " "[desc_off] [size_off]" - "\n or: addfiles code [.alt_path] [/opts] [\"*user\"] file " + "\n or: addfiles code [.alt_path] [-opts] [\"*user\"] file " "\"description\"\n" "\navailable opts:" "\n a import ASCII only (no extended ASCII)" @@ -635,7 +667,8 @@ int main(int argc, char **argv) if(argc<2) { printf(usage); - return(1); } + return(1); + } p=getenv("SBBSCTRL"); if(p==NULL) { @@ -647,12 +680,11 @@ int main(int argc, char **argv) memset(&scfg,0,sizeof(scfg)); scfg.size=sizeof(scfg); SAFECOPY(scfg.ctrl_dir,p); - printf("Reading configuration files from %s\n",scfg.ctrl_dir); + printf("\nReading configuration files from %s\n",scfg.ctrl_dir); if(!load_cfg(&scfg,NULL,TRUE,error)) { fprintf(stderr,"!ERROR loading configuration files: %s\n",error); exit(1); } - printf("\n\n"); prep_dir(scfg.data_dir, scfg.temp_dir); if(!(scfg.sys_misc&SM_LOCAL_TZ)) @@ -662,15 +694,22 @@ int main(int argc, char **argv) if(argv[1][1]) SAFECOPY(auto_name,argv[1]+1); mode|=AUTO_ADD; - i=0; } - else { + i=0; + } else { + if(!isalnum(argv[1][0]) && argc==2) { + printf(usage); + return(1); + } + for(i=0;i<scfg.total_dirs;i++) if(!stricmp(scfg.dir[i]->code,argv[1])) break; if(i>=scfg.total_dirs) { printf("Directory code '%s' not found.\n",argv[1]); - exit(1); } } + exit(1); + } + } memset(&f,0,sizeof(file_t)); f.dir=i; @@ -679,7 +718,10 @@ int main(int argc, char **argv) for(j=2;j<argc;j++) { if(argv[j][0]=='*') /* set the uploader name */ sprintf(f.uler,"%.25s",argv[j]+1); - else if(argv[j][0]=='/') { /* options */ + else + if(argv[j][0]=='-' + || argv[j][0]=='/' + ) { /* options */ for(i=1;argv[j][i];i++) switch(toupper(argv[j][i])) { case 'A': @@ -726,7 +768,9 @@ int main(int argc, char **argv) break; default: printf(usage); - return(1); } } + return(1); + } + } else if(argv[j][0]=='+') { /* filelist - FILES.BBS */ listgiven=1; if(argc > j+1 @@ -734,19 +778,25 @@ int main(int argc, char **argv) if(argc > j+2 && isdigit(argv[j+2][0])) { /* skip x characters before size */ addlist(argv[j]+1,f,atoi(argv[j+1]),atoi(argv[j+2])); - j+=2; } + j+=2; + } else { addlist(argv[j]+1,f,atoi(argv[j+1]),0); - j++; } } + j++; + } + } else addlist(argv[j]+1,f,0,0); if(mode&SYNC_LIST) - synclist(argv[j]+1,f.dir); } + synclist(argv[j]+1,f.dir); + } else if(argv[j][0]=='.') { /* alternate file path */ cur_altpath=atoi(argv[j]+1); if(cur_altpath>scfg.altpaths) { printf("Invalid alternate path.\n"); - exit(1); } } + exit(1); + } + } else { namegiven=1; padfname(argv[j],f.name); @@ -754,7 +804,8 @@ int main(int argc, char **argv) strupr(f.name); if(j+1==argc) { printf("%s no description given.\n",f.name); - continue; } + continue; + } sprintf(str,"%s%s",cur_altpath ? scfg.altpath[cur_altpath-1] : scfg.dir[f.dir]->path,argv[j]); if(mode&FILE_DATE) @@ -766,7 +817,8 @@ int main(int argc, char **argv) l=flength(str); if(l==-1) { printf("%s not found.\n",str); - continue; } + continue; + } exist=findfile(&scfg,f.dir,f.name); if(exist) { if(mode&NO_UPDATE) @@ -775,7 +827,9 @@ int main(int argc, char **argv) if(mode&ULDATE_ONLY) { f.dateuled=time(NULL); update_uldate(&scfg, &f); - continue; } } + continue; + } + } f.cdt=l; f.dateuled=time(NULL); f.altpath=cur_altpath; @@ -804,13 +858,18 @@ int main(int argc, char **argv) sprintf(f.desc,"%.*s",LEN_FDESC,ext); for(i=0;f.desc[i]>=SP && i<LEN_FDESC;i++) ; - f.desc[i]=0; } + f.desc[i]=0; + } close(file); - f.misc|=FM_EXTDESC; } } } + f.misc|=FM_EXTDESC; + } + } + } if(exist) { putfiledat(&scfg,&f); if(!(mode&NO_NEWDATE)) - update_uldate(&scfg, &f); } + update_uldate(&scfg, &f); + } else addfiledat(&scfg,&f); @@ -819,7 +878,9 @@ int main(int argc, char **argv) if(mode&UL_STATS) updatestats(l); - files++; } } + files++; + } + } if(mode&AUTO_ADD) { for(i=0;i<scfg.total_dirs;i++) { @@ -828,21 +889,26 @@ int main(int argc, char **argv) f.dir=i; if(mode&SEARCH_DIR) { addlist("",f,0,0); - continue; } + continue; + } sprintf(str,"%s.lst",scfg.dir[f.dir]->code); if(fexistcase(str) && flength(str)>0L) { printf("Auto-adding %s\n",str); addlist(str,f,0,0); if(mode&SYNC_LIST) synclist(str,i); - continue; } + continue; + } sprintf(str,"%s%s",scfg.dir[f.dir]->path,auto_name); if(fexistcase(str) && flength(str)>0L) { printf("Auto-adding %s\n",str); addlist(str,f,0,0); if(mode&SYNC_LIST) synclist(str,i); - continue; } } } + continue; + } + } + } else { if(!listgiven && !namegiven) { @@ -851,7 +917,9 @@ int main(int argc, char **argv) strcpy(str,"FILES.BBS"); addlist(str,f,0,0); if(mode&SYNC_LIST) - synclist(str,f.dir); } } + synclist(str,f.dir); + } + } printf("\n%lu file(s) added.",files); if(removed) -- GitLab