diff --git a/src/sbbs3/js_msg_area.c b/src/sbbs3/js_msg_area.c index c3340681c0c93c2583c450a0ce1ebbce6949360b..d41480ae1328697c926d63158586f6bbfb2a9c78 100644 --- a/src/sbbs3/js_msg_area.c +++ b/src/sbbs3/js_msg_area.c @@ -53,8 +53,9 @@ static char* msg_sub_prop_desc[] = { ,"sub-board internal code" ,"sub-board name" ,"sub-board description" - ,"sub-board QWK name" - ,"newsgroup name (as configured or dymamically generated)" + ,"QWK conference name" + ,"area tag for FidoNet-style echoes, a.k.a. EchoTag <i>(introduced in v3.19)</i>" + ,"newsgroup name (as configured or dynamically generated)" ,"sub-board access requirements" ,"sub-board reading requirements" ,"sub-board posting requirements" @@ -142,7 +143,14 @@ BOOL js_CreateMsgAreaProperties(JSContext* cx, scfg_t* cfg, JSObject* subobj, ui if(!JS_DefineProperty(cx, subobj, "qwk_name", STRING_TO_JSVAL(js_str) ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY)) return(FALSE); - if((js_str=JS_NewStringCopyZ(cx, subnewsgroupname(cfg, sub, str, sizeof(str))))==NULL) + + if((js_str=JS_NewStringCopyZ(cx, sub_area_tag(cfg, sub, str, sizeof(str))))==NULL) + return(FALSE); + if(!JS_DefineProperty(cx, subobj, "area_tag", STRING_TO_JSVAL(js_str) + ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY)) + return(FALSE); + + if((js_str=JS_NewStringCopyZ(cx, sub_newsgroup_name(cfg, sub, str, sizeof(str))))==NULL) return(FALSE); if(!JS_DefineProperty(cx, subobj, "newsgroup", STRING_TO_JSVAL(js_str) ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY)) diff --git a/src/sbbs3/scfg/scfgmsg.c b/src/sbbs3/scfg/scfgmsg.c index 1db94148cd8e5b4fee89064bd4a14e64c4fb172f..5adbcf965bab6a2e3a7b5e93b331af23f982fc17 100644 --- a/src/sbbs3/scfg/scfgmsg.c +++ b/src/sbbs3/scfg/scfgmsg.c @@ -40,20 +40,6 @@ char *utos(char *str) return(out); } -char *stou(char *str) -{ - static char out[128]; - int i; - - for(i=0;str[i];i++) - if(str[i]==' ') - out[i]='_'; - else - out[i]=str[i]; - out[i]=0; - return(out); -} - static bool new_grp(unsigned new_grpnum) { grp_t* new_group = malloc(sizeof(grp_t)); @@ -871,20 +857,20 @@ void msgs_cfg() fprintf(stream,"%-*s %-*s %s\n" ,LEN_EXTCODE, extcode ,FIDO_AREATAG_LEN - ,cfg.sub[j]->newsgroup[0] ? cfg.sub[j]->newsgroup : stou(cfg.sub[j]->sname) + ,sub_area_tag(&cfg, cfg.sub[j], str, sizeof(str)) ,str2); - continue; + continue; } if(k==2) { /* BACKBONE.NA */ fprintf(stream,"%-*s %s\n" ,FIDO_AREATAG_LEN - ,cfg.sub[j]->newsgroup[0] ? cfg.sub[j]->newsgroup : stou(cfg.sub[j]->sname) + ,sub_area_tag(&cfg, cfg.sub[j], str, sizeof(str)) ,cfg.sub[j]->lname); continue; } if(k==3) { /* newsgroup.lst */ fprintf(stream,"%s %s\n" - ,subnewsgroupname(&cfg, cfg.sub[j], str, sizeof(str)) + ,sub_newsgroup_name(&cfg, cfg.sub[j], str, sizeof(str)) ,cfg.sub[j]->lname); continue; } diff --git a/src/sbbs3/str_util.c b/src/sbbs3/str_util.c index 3deaaa6803df78203e1bb9643fc0a0b2f5ecb0a0..48b0fb605178cce264211ed43426904825a307b7 100644 --- a/src/sbbs3/str_util.c +++ b/src/sbbs3/str_util.c @@ -767,7 +767,7 @@ char* utf8_to_cp437_str(char* str) ,/* decode error char: */CP437_INVERTED_EXCLAMATION_MARK); } -char* subnewsgroupname(scfg_t* cfg, sub_t* sub, char* str, size_t size) +char* sub_newsgroup_name(scfg_t* cfg, sub_t* sub, char* str, size_t size) { memset(str, 0, size); if(sub->newsgroup[0]) @@ -802,6 +802,21 @@ char* subnewsgroupname(scfg_t* cfg, sub_t* sub, char* str, size_t size) return str; } +char* sub_area_tag(scfg_t* cfg, sub_t* sub, char* str, size_t size) +{ + char* p; + + memset(str, 0, size); + if(sub->newsgroup[0]) + strncpy(str, sub->newsgroup, size - 1); + else { + strncpy(str, sub->sname, size - 1); + REPLACE_CHARS(str, ' ', '_', p); + strupr(str); + } + return str; +} + char* dir_area_tag(scfg_t* cfg, dir_t* dir, char* str, size_t size) { char* p; diff --git a/src/sbbs3/str_util.h b/src/sbbs3/str_util.h index a09cdd3853f5912ada1fd0d97fe9d92b99202e0b..1da36dc733edd61ee8e020ca3134a548d4c2be6d 100644 --- a/src/sbbs3/str_util.h +++ b/src/sbbs3/str_util.h @@ -67,7 +67,8 @@ DLLEXPORT uint32_t str_to_bits(uint32_t currval, const char *str); DLLEXPORT BOOL str_has_ctrl(const char*); DLLEXPORT BOOL str_is_ascii(const char*); DLLEXPORT char * utf8_to_cp437_str(char* str); -DLLEXPORT char * subnewsgroupname(scfg_t*, sub_t*, char*, size_t); +DLLEXPORT char * sub_newsgroup_name(scfg_t*, sub_t*, char*, size_t); +DLLEXPORT char * sub_area_tag(scfg_t*, sub_t*, char*, size_t); DLLEXPORT char * dir_area_tag(scfg_t*, dir_t*, char*, size_t); DLLEXPORT char * get_ctrl_dir(BOOL warn);