diff --git a/src/sbbs3/sbbsecho.c b/src/sbbs3/sbbsecho.c index 6d205e17c45081ef645f5da041cbe3dc7e73f6f2..12f9efc124b3d44e83645ee6148b190ff0f8e073 100644 --- a/src/sbbs3/sbbsecho.c +++ b/src/sbbs3/sbbsecho.c @@ -115,7 +115,7 @@ int lprintf(int level, char *fmt, ...) ; int mv(const char *insrc, const char *indest, bool copy); time32_t fmsgtime(const char *str); -void export_echomail(const char *sub_code, const nodecfg_t*, bool rescan); +ulong export_echomail(const char *sub_code, const nodecfg_t*, bool rescan); const char* area_desc(const char* areatag); /* FTN-compliant "Program Identifier"/PID (also used as a "Tosser Identifier"/TID) */ @@ -1706,11 +1706,6 @@ void alter_areas(str_list_t add_area, str_list_t del_area, nodecfg_t* nodecfg, c return; } memcpy(&cfg.area[u].link[cfg.area[u].links-1],&addr,sizeof(fidoaddr_t)); - bool rescanned = false; - if(rescan && is_valid_subnum(&scfg, cfg.area[u].sub)) { - rescanned = true; - export_echomail(scfg.sub[cfg.area[u].sub]->code, nodecfg, true); - } fprintf(afileout,"%-*s %-*s " ,LEN_EXTCODE, code @@ -1721,13 +1716,17 @@ void alter_areas(str_list_t add_area, str_list_t del_area, nodecfg_t* nodecfg, c if(comment[0]) fprintf(afileout,"%s",comment); fprintf(afileout,"\n"); - fprintf(nmfile,"%s added%s.\r\n",echotag, rescanned ? " and rescanned" : ""); + fprintf(nmfile,"%s added.\r\n",echotag); added++; break; } } if(u==cfg.areas) /* Something screwy going on */ fprintf(afileout,"%s\n",fields); + else if(rescan && area_is_linked(u,&addr) && is_valid_subnum(&scfg, cfg.area[u].sub)) { + ulong exported = export_echomail(scfg.sub[cfg.area[u].sub]->code, nodecfg, true); + fprintf(nmfile,"%s rescanned and %lu messages exported.\r\n", echotag, exported); + } continue; /* Area match so continue on */ } nomatch=1; /* This area wasn't in there */ @@ -2102,10 +2101,9 @@ bool areafix_command(char* instr, nodecfg_t* nodecfg, const char* to, bool resca if(stricmp(instr, "RESCAN") == 0) { lprintf(LOG_INFO, "AreaFix (for %s) Rescanning all areas", faddrtoa(&addr)); - export_echomail(NULL, nodecfg, true); - create_netmail(to,/* msg: */NULL, "Rescan Areas" - ,"All connected areas carried by your hub have been rescanned." - ,/* dest: */addr, /* src: */NULL); + ulong exported = export_echomail(NULL, nodecfg, true); + snprintf(str, sizeof str, "All connected areas have been rescanned and %lu messages exported.", exported); + create_netmail(to,/* msg: */NULL, "Rescan Areas", str, /* dest: */addr, /* src: */NULL); return true; } @@ -2119,8 +2117,8 @@ bool areafix_command(char* instr, nodecfg_t* nodecfg, const char* to, bool resca else if(subnum == INVALID_SUB) SAFEPRINTF(str, "Connected area '%s' is pass-through: cannot be rescanned", p); else { - export_echomail(scfg.sub[subnum]->code, nodecfg, true); - SAFEPRINTF(str, "Connected area '%s' has been rescanned.", p); + ulong exported = export_echomail(scfg.sub[subnum]->code, nodecfg, true); + snprintf(str, sizeof str, "Connected area '%s' has been rescanned and %lu messages exported.", p, exported); } lprintf(LOG_INFO, "AreaFix (for %s) %s", faddrtoa(&addr), str); create_netmail(to,/* msg: */NULL, "Rescan Area" @@ -2186,7 +2184,7 @@ bool areafix_command(char* instr, nodecfg_t* nodecfg, const char* to, bool resca if(stricmp(instr, "-ALL") == 0) { str_list_t del_area=strListInit(); strListPush(&del_area, instr); - alter_areas(NULL,del_area,nodecfg,to,rescan); + alter_areas(NULL,del_area,nodecfg,to, /* rescan */false); strListFree(&del_area); return true; } @@ -4716,7 +4714,7 @@ static void write_export_ptr(int subnum, uint32_t ptr, const char* tag) empty address as 'addr' designates that a rescan should be done for that address. ******************************************************************************/ -void export_echomail(const char* sub_code, const nodecfg_t* nodecfg, bool rescan) +ulong export_echomail(const char* sub_code, const nodecfg_t* nodecfg, bool rescan) { char str[256],tear,cr; char* buf=NULL; @@ -5083,6 +5081,7 @@ void export_echomail(const char* sub_code, const nodecfg_t* nodecfg, bool rescan if(exported) lprintf(LOG_INFO,"Exported: %5lu msgs total", exported); exported_echomail += exported; + return exported; } void del_file_attachments(smbmsg_t* msg) diff --git a/src/sbbs3/sbbsecho.h b/src/sbbs3/sbbsecho.h index 1251682c7243af48505b3d36512be7b5397afbd2..11452d0ea1b4fb745549e1b2abedf6e4a8a92ad0 100644 --- a/src/sbbs3/sbbsecho.h +++ b/src/sbbs3/sbbsecho.h @@ -28,7 +28,7 @@ #include "ini_file.h" #define SBBSECHO_VERSION_MAJOR 3 -#define SBBSECHO_VERSION_MINOR 21 +#define SBBSECHO_VERSION_MINOR 22 #define SBBSECHO_PRODUCT_CODE 0x12FF /* from http://ftsc.org/docs/ftscprod.013 */