Skip to content
Snippets Groups Projects
Commit 10c119ad authored by Rob Swindell's avatar Rob Swindell :speech_balloon:
Browse files

Add area_tag property to msg_area.sub[]

For easier use of the auto-generated echo-tags in JS.
And a helper function sub_area_tag(), now used in SCFG too.
parent 65cdfc94
No related branches found
No related tags found
1 merge request!463MRC mods by Codefenix (2024-10-20)
Pipeline #1841 passed
...@@ -53,8 +53,9 @@ static char* msg_sub_prop_desc[] = { ...@@ -53,8 +53,9 @@ static char* msg_sub_prop_desc[] = {
,"sub-board internal code" ,"sub-board internal code"
,"sub-board name" ,"sub-board name"
,"sub-board description" ,"sub-board description"
,"sub-board QWK name" ,"QWK conference name"
,"newsgroup name (as configured or dymamically generated)" ,"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 access requirements"
,"sub-board reading requirements" ,"sub-board reading requirements"
,"sub-board posting requirements" ,"sub-board posting requirements"
...@@ -142,7 +143,14 @@ BOOL js_CreateMsgAreaProperties(JSContext* cx, scfg_t* cfg, JSObject* subobj, ui ...@@ -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) if(!JS_DefineProperty(cx, subobj, "qwk_name", STRING_TO_JSVAL(js_str)
,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY)) ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY))
return(FALSE); 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); return(FALSE);
if(!JS_DefineProperty(cx, subobj, "newsgroup", STRING_TO_JSVAL(js_str) if(!JS_DefineProperty(cx, subobj, "newsgroup", STRING_TO_JSVAL(js_str)
,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY)) ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY))
......
...@@ -40,20 +40,6 @@ char *utos(char *str) ...@@ -40,20 +40,6 @@ char *utos(char *str)
return(out); 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) static bool new_grp(unsigned new_grpnum)
{ {
grp_t* new_group = malloc(sizeof(grp_t)); grp_t* new_group = malloc(sizeof(grp_t));
...@@ -871,20 +857,20 @@ void msgs_cfg() ...@@ -871,20 +857,20 @@ void msgs_cfg()
fprintf(stream,"%-*s %-*s %s\n" fprintf(stream,"%-*s %-*s %s\n"
,LEN_EXTCODE, extcode ,LEN_EXTCODE, extcode
,FIDO_AREATAG_LEN ,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); ,str2);
continue; continue;
} }
if(k==2) { /* BACKBONE.NA */ if(k==2) { /* BACKBONE.NA */
fprintf(stream,"%-*s %s\n" fprintf(stream,"%-*s %s\n"
,FIDO_AREATAG_LEN ,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); ,cfg.sub[j]->lname);
continue; continue;
} }
if(k==3) { /* newsgroup.lst */ if(k==3) { /* newsgroup.lst */
fprintf(stream,"%s %s\n" 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); ,cfg.sub[j]->lname);
continue; continue;
} }
......
...@@ -767,7 +767,7 @@ char* utf8_to_cp437_str(char* str) ...@@ -767,7 +767,7 @@ char* utf8_to_cp437_str(char* str)
,/* decode error char: */CP437_INVERTED_EXCLAMATION_MARK); ,/* 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); memset(str, 0, size);
if(sub->newsgroup[0]) if(sub->newsgroup[0])
...@@ -802,6 +802,21 @@ char* subnewsgroupname(scfg_t* cfg, sub_t* sub, char* str, size_t size) ...@@ -802,6 +802,21 @@ char* subnewsgroupname(scfg_t* cfg, sub_t* sub, char* str, size_t size)
return str; 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* dir_area_tag(scfg_t* cfg, dir_t* dir, char* str, size_t size)
{ {
char* p; char* p;
......
...@@ -67,7 +67,8 @@ DLLEXPORT uint32_t str_to_bits(uint32_t currval, const char *str); ...@@ -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_has_ctrl(const char*);
DLLEXPORT BOOL str_is_ascii(const char*); DLLEXPORT BOOL str_is_ascii(const char*);
DLLEXPORT char * utf8_to_cp437_str(char* str); 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 * dir_area_tag(scfg_t*, dir_t*, char*, size_t);
DLLEXPORT char * get_ctrl_dir(BOOL warn); DLLEXPORT char * get_ctrl_dir(BOOL warn);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment