From 7b87b898c47e4a186f64a7e257dbd6a3957eb8c7 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Mon, 18 Feb 2002 12:18:35 +0000 Subject: [PATCH] Added support for external signature file. --- src/sbbs3/newuser.cpp | 3 ++ src/sbbs3/useredit.cpp | 82 ++++++++++++++++++++++-------------------- src/sbbs3/writemsg.cpp | 15 ++++++++ 3 files changed, 61 insertions(+), 39 deletions(-) diff --git a/src/sbbs3/newuser.cpp b/src/sbbs3/newuser.cpp index 145d8d2b02..c0358676d7 100644 --- a/src/sbbs3/newuser.cpp +++ b/src/sbbs3/newuser.cpp @@ -468,6 +468,9 @@ void sbbs_t::newuser() remove(str); sprintf(str,"%suser/%04u.msg",cfg.data_dir,useron.number); /* delete ex-comment */ remove(str); + sprintf(str,"%suser/%04u.sig",cfg.data_dir,useron.number); /* delete signature */ + remove(str); + if(cfg.newuser_mod[0]) exec_bin(cfg.newuser_mod,&main_csi); user_event(EVENT_NEWUSER); diff --git a/src/sbbs3/useredit.cpp b/src/sbbs3/useredit.cpp index e34c43dd5b..365a0ada19 100644 --- a/src/sbbs3/useredit.cpp +++ b/src/sbbs3/useredit.cpp @@ -948,45 +948,49 @@ void sbbs_t::maindflts(user_t* user) putuserrec(&cfg,user->number,U_MISC,8,ultoa(user->misc,str,16)); break; case 'W': - if(noyes(text[NewPasswordQ])) - break; - bputs(text[CurrentPassword]); - console|=CON_R_ECHOX; - if(!(cfg.sys_misc&SM_ECHO_PW)) - console|=CON_L_ECHOX; - ch=getstr(str,LEN_PASS,K_UPPER); - console&=~(CON_R_ECHOX|CON_L_ECHOX); - if(strcmp(str,user->pass)) { - bputs(text[WrongPassword]); - pause(); - break; } - bputs(text[NewPassword]); - if(!getstr(str,LEN_PASS,K_UPPER|K_LINE)) - break; - truncsp(str); - if(!chkpass(str,user,false)) { - CRLF; - pause(); - break; } - bputs(text[VerifyPassword]); - console|=CON_R_ECHOX; - if(!(cfg.sys_misc&SM_ECHO_PW)) - console|=CON_L_ECHOX; - getstr(tmp,LEN_PASS,K_UPPER); - console&=~(CON_R_ECHOX|CON_L_ECHOX); - if(strcmp(str,tmp)) { - bputs(text[WrongPassword]); - pause(); - break; } - if(!online) - break; - putuserrec(&cfg,user->number,U_PASS,LEN_PASS,str); - now=time(NULL); - putuserrec(&cfg,user->number,U_PWMOD,8,ultoa(now,tmp,16)); - bputs(text[PasswordChanged]); - sprintf(str,"%s changed password",useron.alias); - logline(nulstr,str); - pause(); + if(!noyes(text[NewPasswordQ])) { + bputs(text[CurrentPassword]); + console|=CON_R_ECHOX; + if(!(cfg.sys_misc&SM_ECHO_PW)) + console|=CON_L_ECHOX; + ch=getstr(str,LEN_PASS,K_UPPER); + console&=~(CON_R_ECHOX|CON_L_ECHOX); + if(strcmp(str,user->pass)) { + bputs(text[WrongPassword]); + pause(); + break; } + bputs(text[NewPassword]); + if(!getstr(str,LEN_PASS,K_UPPER|K_LINE)) + break; + truncsp(str); + if(!chkpass(str,user,false)) { + CRLF; + pause(); + break; } + bputs(text[VerifyPassword]); + console|=CON_R_ECHOX; + if(!(cfg.sys_misc&SM_ECHO_PW)) + console|=CON_L_ECHOX; + getstr(tmp,LEN_PASS,K_UPPER); + console&=~(CON_R_ECHOX|CON_L_ECHOX); + if(strcmp(str,tmp)) { + bputs(text[WrongPassword]); + pause(); + break; } + if(!online) + break; + putuserrec(&cfg,user->number,U_PASS,LEN_PASS,str); + now=time(NULL); + putuserrec(&cfg,user->number,U_PWMOD,8,ultoa(now,tmp,16)); + bputs(text[PasswordChanged]); + sprintf(str,"%s changed password",useron.alias); + logline(nulstr,str); + } + sprintf(str,"%suser/%04u.sig",cfg.data_dir,user->number); + if(!noyes("Create/Edit signature")) + editfile(str); + else if(fexist(str) && !noyes("Delete signature")) + remove(str); break; case 'Z': menu("dlprot"); diff --git a/src/sbbs3/writemsg.cpp b/src/sbbs3/writemsg.cpp index 86a07336c3..483891f29b 100644 --- a/src/sbbs3/writemsg.cpp +++ b/src/sbbs3/writemsg.cpp @@ -402,6 +402,21 @@ bool sbbs_t::writemsg(char *fname, char *top, char *title, long mode, int subnum if(buf[l]) bputs(text[NoMoreLines]); + + /* Signature file */ + sprintf(str,"%suser/%04u.sig",cfg.data_dir,useron.number); + FILE* sig; + if(!(mode&WM_EXTDESC) && fexist(str) && (sig=fopen(str,"rb"))!=NULL) { + while(!feof(sig)) { + if(!fgets(str,sizeof(str)-1,sig)) + break; + fputs(str,stream); + l+=strlen(str); /* byte counter */ + i++; /* line counter */ + } + fclose(sig); + } + fclose(stream); LFREE((char *)buf); bprintf(text[SavedNBytes],l,i); -- GitLab