diff --git a/src/sbbs3/scfg/scfgmsg.c b/src/sbbs3/scfg/scfgmsg.c index 3ea06848a5cf5fcea551336b0640c754b0c85726..97bfc7f96b05563638204a6adc9f747d24cc7910 100644 --- a/src/sbbs3/scfg/scfgmsg.c +++ b/src/sbbs3/scfg/scfgmsg.c @@ -115,15 +115,17 @@ void clearptrs(int subnum) void msgs_cfg() { static int dflt,msgs_dflt,bar; - char str[256],str2[256],done=0,*p; - char tmp[128]; - char tmp_code[16]; - int j,k,q,s; - int i,file,ptridx,n; - long ported; - sub_t tmpsub; + char str[256],str2[256],done=0; + char* p; + char* tp; + char tmp[128]; + char tmp_code[16]; + int j,k,l,q,s; + int i,file,ptridx,n; + long ported; + sub_t tmpsub; static grp_t savgrp; - FILE *stream; + FILE* stream; while(1) { for(i=0;i<cfg.total_grps && i<MAX_OPTS;i++) @@ -389,8 +391,7 @@ of CRCs, maximum age of messages, storage method, and data directory. q=uifc.changes; strcpy(opt[k++],"SUBS.TXT (Synchronet)"); strcpy(opt[k++],"AREAS.BBS (MSG)"); - strcpy(opt[k++],"AREAS.BBS (SMB)"); - strcpy(opt[k++],"AREAS.BBS (SBBSECHO)"); + strcpy(opt[k++],"AREAS.BBS (SBBSecho)"); strcpy(opt[k++],"FIDONET.NA (Fido)"); opt[k][0]=0; SETHELP(WHERE); @@ -407,14 +408,13 @@ export the current message group into. break; if(k==0) sprintf(str,"%sSUBS.TXT",cfg.ctrl_dir); - else if(k==1 || k==2) + else if(k==1) sprintf(str,"AREAS.BBS"); - else if(k==3) + else if(k==2) sprintf(str,"%sAREAS.BBS",cfg.data_dir); - else if(k==4) + else if(k==3) sprintf(str,"FIDONET.NA"); - strupr(str); - if(k && k<4) + if(k && k<3) if(uifc.input(WIN_MID|WIN_SAV,0,0,"Uplinks" ,str2,40,0)<=0) { uifc.changes=q; @@ -456,28 +456,14 @@ export the current message group into. fprintf(stream,"%-30s %-20s %s\r\n" ,str,stou(cfg.sub[j]->sname),str2); continue; } - if(k==2) { /* AREAS.BBS SMB */ - if(!cfg.sub[j]->data_dir[0]) - sprintf(str,"%ssubs/%s%s" - ,cfg.data_dir - ,cfg.grp[cfg.sub[j]->grp]->code_prefix - ,cfg.sub[j]->code_suffix); - else - sprintf(str,"%s%s%s" - ,cfg.sub[j]->data_dir - ,cfg.grp[cfg.sub[j]->grp]->code_prefix - ,cfg.sub[j]->code_suffix); - fprintf(stream,"%-30s %-20s %s\r\n" - ,str,stou(cfg.sub[j]->sname),str2); - continue; } - if(k==3) { /* AREAS.BBS SBBSECHO */ + if(k==2) { /* AREAS.BBS SBBSecho */ fprintf(stream,"%s%-30s %-20s %s\r\n" ,cfg.grp[cfg.sub[j]->grp]->code_prefix ,cfg.sub[j]->code_suffix ,stou(cfg.sub[j]->sname) ,str2); continue; } - if(k==4) { /* FIDONET.NA */ + if(k==3) { /* FIDONET.NA */ fprintf(stream,"%-20s %s\r\n" ,stou(cfg.sub[j]->sname),cfg.sub[j]->lname); continue; } @@ -520,8 +506,7 @@ export the current message group into. k=0; strcpy(opt[k++],"SUBS.TXT (Synchronet)"); strcpy(opt[k++],"AREAS.BBS (Generic)"); - strcpy(opt[k++],"AREAS.BBS (SMB)"); - strcpy(opt[k++],"AREAS.BBS (SBBSECHO)"); + strcpy(opt[k++],"AREAS.BBS (SBBSecho)"); strcpy(opt[k++],"FIDONET.NA (Fido)"); opt[k][0]=0; SETHELP(WHERE); @@ -538,13 +523,12 @@ import into the current message group. break; if(k==0) sprintf(str,"%sSUBS.TXT",cfg.ctrl_dir); - else if(k==1 || k==2) + else if(k==1) sprintf(str,"AREAS.BBS"); - else if(k==3) + else if(k==2) sprintf(str,"%sAREAS.BBS",cfg.data_dir); - else if(k==4) + else if(k==3) sprintf(str,"FIDONET.NA"); - strupr(str); if(uifc.input(WIN_MID|WIN_SAV,0,0,"Filename" ,str,40,K_EDIT)<=0) break; @@ -567,61 +551,43 @@ import into the current message group. (SUB_FIDO|SUB_NAME|SUB_TOUSER|SUB_QUOTE|SUB_HYPER); if(k==1) { /* AREAS.BBS Generic/*.MSG */ p=str; - while(*p && *p<=' ') p++; // Find path - while(*p && *p>' ') p++; // Skip path - while(*p && *p<=' ') p++; // Find tag - truncstr(p," \t"); - SAFECOPY(tmp_code,p); - SAFECOPY(tmpsub.sname,utos(p)); + SKIP_WHITESPACE(p); /* Find path */ + FIND_WHITESPACE(p); /* Skip path */ + SKIP_WHITESPACE(p); /* Find tag */ + truncstr(p," \t"); /* Truncate tag */ + SAFECOPY(tmp_code,p); /* Copy tag to internal code */ SAFECOPY(tmpsub.lname,utos(p)); - SAFECOPY(tmpsub.qwkname,utos(p)); + SAFECOPY(tmpsub.sname,tmpsub.lname); + SAFECOPY(tmpsub.qwkname,tmpsub.qwkname); } - if(k==2) { /* AREAS.BBS SMB */ - p=strrchr(str,'\\'); - if(p==NULL) p=strrchr(str,'/'); - if(p) *p=0; - else p=str; - sprintf(tmpsub.data_dir,"%.*s",LEN_DIR,str); - p++; - SAFECOPY(tmp_code,p); - while(*p && *p<=SP) p++; - sprintf(tmpsub.sname,"%.*s",LEN_SSNAME,p); - p=strchr(tmpsub.sname,SP); - if(p) *p=0; - strcpy(tmpsub.sname,utos(tmpsub.sname)); - sprintf(tmpsub.lname,"%.*s",LEN_SLNAME - ,tmpsub.sname); - sprintf(tmpsub.qwkname,"%.*s",10 - ,tmpsub.sname); - } - else if(k==3) { /* AREAS.BBS SBBSECHO */ + else if(k==2) { /* AREAS.BBS SBBSecho */ p=str; - while(*p && *p>SP) p++; - *p=0; - SAFECOPY(tmp_code,str); - p++; - while(*p && *p<=SP) p++; - sprintf(tmpsub.sname,"%.*s",LEN_SSNAME,p); - p=strchr(tmpsub.sname,SP); - if(p) *p=0; - strcpy(tmpsub.sname,utos(tmpsub.sname)); - sprintf(tmpsub.lname,"%.*s",LEN_SLNAME - ,tmpsub.sname); - sprintf(tmpsub.qwkname,"%.*s",10 - ,tmpsub.sname); - } - else if(k==4) { /* FIDONET.NA */ + SKIP_WHITESPACE(p); /* Find internal code */ + tp=p; + FIND_WHITESPACE(tp); + *tp=0; /* Truncate internal code */ + SAFECOPY(tmp_code,p); /* Copy internal code suffix */ + p=tp+1; + SKIP_WHITESPACE(p); /* Find echo tag */ + SAFECOPY(tmpsub.lname,truncstr(utos(p)," \t")); + SAFECOPY(tmpsub.sname,tmpsub.lname); + SAFECOPY(tmpsub.qwkname,tmpsub.sname); + } + else if(k==3) { /* FIDONET.NA */ p=str; - while(*p && *p>SP) p++; - *p=0; - SAFECOPY(tmp_code,str); - sprintf(tmpsub.sname,"%.*s",LEN_SSNAME,utos(str)); - sprintf(tmpsub.qwkname,"%.10s",tmpsub.sname); - p++; - while(*p && *p<=SP) p++; - sprintf(tmpsub.lname,"%.*s",LEN_SLNAME,p); - } - ported++; } + SKIP_WHITESPACE(p); /* Find echo tag */ + tp=p; + FIND_WHITESPACE(tp); /* Find end of tag */ + *tp=0; /* Truncate echo tag */ + SAFECOPY(tmp_code,p); /* Copy tag to internal code suffix */ + SAFECOPY(tmpsub.sname,utos(p)); /* ... to short name, converting underscores to spaces */ + SAFECOPY(tmpsub.qwkname,tmpsub.sname); /* ... to QWK name .... */ + p=tp+1; + SKIP_WHITESPACE(p); /* Find description */ + SAFECOPY(tmpsub.lname,p); /* Copy description to long name */ + } + ported++; + } else { memset(&tmpsub,0,sizeof(sub_t)); tmpsub.grp=i; @@ -688,10 +654,16 @@ import into the current message group. while(!feof(stream) && strcmp(str,"***END-OF-SUB***")) { if(!fgets(str,128,stream)) break; - truncsp(str); } } + truncsp(str); + } + } - prep_code(tmp_code); /* Strip invalid chars */ - SAFECOPY(tmpsub.code_suffix,tmp_code); /* THEN truncate to valid length */ + p=tmp_code; + l=strlen(cfg.grp[i]->code_prefix); + if(l && strnicmp(p,cfg.grp[i]->code_prefix,l)==0 && strlen(p)!=l) + p+=l; /* Skip code prefix, if supplied */ + prep_code(p); /* Strip invalid chars */ + SAFECOPY(tmpsub.code_suffix,p); /* THEN truncate to valid length */ truncsp(tmpsub.sname); truncsp(tmpsub.lname);