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

Increase FidoNet echo/area tag max length from 35 to 40/50 chars

Per FMail.txt:
Area name
          This is the name of the conference. It can be up to 50
          characters long. This name is often referred to as the
          area tag.

I did not locate a FidoNet spec to contradict that and support a 35 character maximum area tag length. I think Mystic also has a 50 character area tag limit. So 50 character area tags are fine I guess.

So up to 50 characters are now supported in SBBSecho and SCFG for area tags (for message and file echoes). The exception is the (new to 3.19) optional area tag stored in msgs.cnf/file.cnf is limited to 40 characters due to reserved space limitations. If you need a tag stored per sub (most sysops do not) and it needs to be longer than 40 chars, use the newsgroup name instead (limited to 63 chars).

Changed at the request of Keyop via IRC.
parent 55041d65
No related branches found
No related tags found
1 merge request!463MRC mods by Codefenix (2024-10-20)
Pipeline #2422 passed
......@@ -54,7 +54,7 @@
#define FIDO_PASS_LEN 8 /* May NOT include '\0' terminator */
#define FIDO_DOMAIN_LEN 8 /* May NOT include '\0' terminator */
#define FIDO_PRODDATA_LEN 4 /* Product-specific Data */
#define FIDO_AREATAG_LEN 35 /* Echo "areatag" (NOT including '\0') */
#define FIDO_AREATAG_LEN 50 // Echo "area tag" (NOT including '\0') (see FMail.txt)
#define FIDO_ECHO_TITLE_LEN 55 // Brief echo description, per echobase.hlp
#define FIDO_ORIGIN_PREFIX_LEN 12 /* Includes new-line character */
......
......@@ -1241,7 +1241,7 @@ void dir_cfg(uint libnum)
;
SAFECOPY(str, cfg.dir[i]->area_tag);
if(uifc.input(WIN_L2R|WIN_SAV,0,17,"FidoNet File Echo Area Tag"
,str, FIDO_AREATAG_LEN, K_EDIT | K_UPPER) > 0)
,str, sizeof(cfg.dir[i]->area_tag) - 1, K_EDIT | K_UPPER) > 0)
SAFECOPY(cfg.dir[i]->area_tag, str);
break;
case 4:
......
......@@ -40,7 +40,7 @@ typedef struct { /* Message sub board info */
post_sem[LEN_DIR+1], /* Semaphore file for this sub */
tagline[81], /* Optional QWK net tag line */
newsgroup[LEN_DIR+1]; /* Newsgroup name */
char area_tag[FIDO_AREATAG_LEN+1];
char area_tag[41];
uchar ar[LEN_ARSTR+1],
read_ar[LEN_ARSTR+1],
post_ar[LEN_ARSTR+1],
......@@ -73,7 +73,7 @@ typedef struct { /* Message group info */
typedef struct { /* Transfer Directory Info */
char code[LEN_EXTCODE+1]; /* Internal code (with optional lib prefix) */
char code_suffix[LEN_CODE+1]; /* Eight character code suffix */
char area_tag[FIDO_AREATAG_LEN+1];
char area_tag[41];
char lname[LEN_SLNAME+1], /* Long name - used for listing */
sname[LEN_SSNAME+1], /* Short name - used for prompts */
arstr[LEN_ARSTR+1], /* Access Requirements */
......
......@@ -509,9 +509,9 @@ BOOL read_msgs_cfg(scfg_t* cfg, char* error, size_t maxerrlen)
get_int(cfg->sub[i]->pmode,instream);
get_int(cfg->sub[i]->n_pmode,instream);
get_str(cfg->sub[i]->area_tag, instream);
for(j=0;j<4;j++)
get_int(n,instream);
}
get_int(c,instream);
get_int(n,instream);
}
cfg->total_subs=i;
/***********/
......
......@@ -372,8 +372,7 @@ BOOL read_file_cfg(scfg_t* cfg, char* error, size_t maxerrlen)
get_int(cfg->dir[i]->up_pct,instream);
get_int(cfg->dir[i]->dn_pct,instream);
get_str(cfg->dir[i]->area_tag,instream);
get_int(c,instream);
for(j=0;j<6;j++)
for(j=0;j<4;j++)
get_int(n,instream);
}
......
......@@ -318,7 +318,7 @@ BOOL write_msgs_cfg(scfg_t* cfg, int backup_level)
{
char str[MAX_PATH+1],c;
char dir[LEN_DIR+1]="";
int i,j,k,file;
int i,j,file;
uint16_t n;
int32_t l;
FILE *stream;
......@@ -431,8 +431,8 @@ BOOL write_msgs_cfg(scfg_t* cfg, int backup_level)
put_int(cfg->sub[i]->n_pmode,stream);
put_str(cfg->sub[i]->area_tag, stream);
n=0;
for(k=0;k<4;k++)
put_int(n,stream);
put_int(c,stream);
put_int(n,stream);
if(all_msghdr || (cfg->sub[i]->misc&SUB_HDRMOD && !no_msghdr)) {
if(!cfg->sub[i]->data_dir[0])
......@@ -841,10 +841,8 @@ BOOL write_file_cfg(scfg_t* cfg, int backup_level)
put_int(cfg->dir[i]->up_pct, stream);
put_int(cfg->dir[i]->dn_pct, stream);
put_str(cfg->dir[i]->area_tag, stream);
c = 0;
put_int(c, stream);
n = 0xffff;
for (k = 0; k < 6; k++)
for (k = 0; k < 4; k++)
put_int(n, stream);
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment