diff --git a/TODO b/TODO
index 98215de9..c8686c3a 100644
--- a/TODO
+++ b/TODO
@@ -170,14 +170,11 @@ mbsetup:
N: When a message area is deleted, delete the rulesfile too.
X: Generate crossreference document:
- File Areas <=> BBS groups
- File Areas <=> Newfiles groups
Filefind flags <=> TIC Areas
Echomail <=> Nodes
Fileechos <=> Groups
Fileechos <=> Nodes
Fileechos <=> Magic processing
Fileechos <=> Hatch
- Newfiles <=> BBS Areas
Newfiles <=> Newfiles groups
diff --git a/mbsetup/m_farea.c b/mbsetup/m_farea.c
index 53910ca9..ede84071 100644
--- a/mbsetup/m_farea.c
+++ b/mbsetup/m_farea.c
@@ -809,8 +809,8 @@ int bbs_file_doc(FILE *fp, FILE *toc, int page)
add_webtable(wp, (char *)"Allow filerequest", getboolean(area.FileReq));
fprintf(wp, "
BBS (tic) file group | %s | \n",
area.BbsGroup, area.BbsGroup);
- fprintf(wp, "
---|
Newfiles announce group | %s | \n",
- area.NewGroup, area.NewGroup);
+ fprintf(wp, "
---|
Newfiles announce group | %s | \n",
+ area.NewGroup);
add_webdigit(wp, (char *)"Minimum age for access", area.Age);
add_webtable(wp, (char *)"Area password", area.Password);
add_webdigit(wp, (char *)"Kill Download days", area.DLdays);
diff --git a/mbsetup/m_fgroup.c b/mbsetup/m_fgroup.c
index 84d6be5c..b0f751f9 100644
--- a/mbsetup/m_fgroup.c
+++ b/mbsetup/m_fgroup.c
@@ -717,8 +717,8 @@ int tic_group_doc(FILE *fp, FILE *toc, int page)
if ((wp = open_webdoc(temp, (char *)"File group", fgroup.Comment))) {
fprintf(wp, "Main Back\n");
fprintf(wp, "\n");
- fprintf(wp, "
\n");
- fprintf(wp, "\n");
+ fprintf(wp, "\n");
+ fprintf(wp, "\n");
fprintf(wp, "\n");
add_webtable(wp, (char *)"Group name", fgroup.Name);
add_webtable(wp, (char *)"Comment", fgroup.Comment);
@@ -750,8 +750,8 @@ int tic_group_doc(FILE *fp, FILE *toc, int page)
add_webtable(wp, (char *)"Default tic security", getflag(fgroup.LinkSec.flags, fgroup.LinkSec.notflags));
fprintf(wp, "BBS (tic) file group | %s | \n",
fgroup.BbsGroup, fgroup.BbsGroup);
- fprintf(wp, "
---|
Newfiles announce group | %s | \n",
- fgroup.AnnGroup, fgroup.AnnGroup);
+ fprintf(wp, "
---|
Newfiles announce group | %s | \n",
+ fgroup.AnnGroup);
sprintf(temp, "%d", fgroup.Upload);
add_webtable(wp, (char *)"Upload area", temp);
add_webtable(wp, (char *)"Start date", ctime(&fgroup.StartDate));
diff --git a/mbsetup/m_modem.c b/mbsetup/m_modem.c
index cc17b140..b52301ca 100644
--- a/mbsetup/m_modem.c
+++ b/mbsetup/m_modem.c
@@ -683,50 +683,120 @@ char *PickModem(char *shdr)
int modem_doc(FILE *fp, FILE *toc, int page)
{
- char temp[PATH_MAX];
- FILE *mdm;
- int i, j;
+ char temp[PATH_MAX];
+ FILE *ti, *wp, *ip, *mdm;
+ int refs, nr = 0, i, j;
- sprintf(temp, "%s/etc/modem.data", getenv("MBSE_ROOT"));
- if ((mdm = fopen(temp, "r")) == NULL)
- return page;
+ sprintf(temp, "%s/etc/modem.data", getenv("MBSE_ROOT"));
+ if ((mdm = fopen(temp, "r")) == NULL)
+ return page;
- page = newpage(fp, page);
- addtoc(fp, toc, 5, 0, page, (char *)"Modem types information");
- j = 0;
+ page = newpage(fp, page);
+ addtoc(fp, toc, 5, 0, page, (char *)"Modem types information");
+ j = 0;
- fprintf(fp, "\n\n");
- fread(&modemhdr, sizeof(modemhdr), 1, mdm);
+ fprintf(fp, "\n\n");
+ fread(&modemhdr, sizeof(modemhdr), 1, mdm);
- while ((fread(&modem, modemhdr.recsize, 1, mdm)) == 1) {
- if (j == 1) {
- page = newpage(fp, page);
- fprintf(fp, "\n");
- j = 0;
- }
-
- fprintf(fp, " Modem type %s\n", modem.modem);
- for (i = 0; i < 3; i++)
- fprintf(fp, " Init string %s\n", modem.init[i]);
- fprintf(fp, " OK string %s\n", modem.ok);
- fprintf(fp, " Hangup %s\n", modem.hangup);
- fprintf(fp, " Info command %s\n", modem.info);
- fprintf(fp, " Dial command %s\n", modem.dial);
- for (i = 0; i < 20; i++)
- fprintf(fp, " Connect %s\n", modem.connect[i]);
- fprintf(fp, " Reset cmd %s\n", modem.reset);
- for (i = 0; i < 10; i++)
- fprintf(fp, " Error string %s\n", modem.error[i]);
- fprintf(fp, " Cost offset %d\n", modem.costoffset);
- fprintf(fp, " EMSI speed %s\n", modem.speed);
- fprintf(fp, " Strip dashes %s\n", getboolean(modem.stripdash));
- fprintf(fp, " Available %s\n", getboolean(modem.available));
- fprintf(fp, "\n\n\n");
- j++;
+ ip = open_webdoc((char *)"modem.html", (char *)"Modems", NULL);
+ fprintf(ip, "Main\n");
+ fprintf(ip, "\n");
+
+ while ((fread(&modem, modemhdr.recsize, 1, mdm)) == 1) {
+ if (j == 1) {
+ page = newpage(fp, page);
+ fprintf(fp, "\n");
+ j = 0;
}
- fclose(mdm);
- return page;
+ nr++;
+ fprintf(ip, " - %s
\n", nr, modem.modem);
+ sprintf(temp, "modem_%d.html", nr);
+ if ((wp = open_webdoc(temp, (char *)"Modem", modem.modem))) {
+ fprintf(wp, "Main Back\n");
+ fprintf(wp, "\n");
+ fprintf(wp, "
\n");
+ fprintf(wp, "\n");
+ fprintf(wp, "\n");
+ add_webtable(wp, (char *)"Modem type", modem.modem);
+ for (i = 0; i < 3; i++)
+ if (strlen(modem.init[i])) {
+ sprintf(temp, "Init string %d", i+1);
+ add_webtable(wp, temp, modem.init[i]);
+ }
+ add_webtable(wp, (char *)"OK string", modem.ok);
+ add_webtable(wp, (char *)"Hangup", modem.hangup);
+ add_webtable(wp, (char *)"Info command", modem.info);
+ add_webtable(wp, (char *)"Dial command", modem.dial);
+ for (i = 0; i < 20; i++)
+ if (strlen(modem.connect[i]))
+ add_webtable(wp, (char *)"Connect", modem.connect[i]);
+ add_webtable(wp, (char *)"Reset", modem.reset);
+ for (i = 0; i < 10; i++)
+ if (strlen(modem.error[i]))
+ add_webtable(wp, (char *)"Error string", modem.error[i]);
+ add_webdigit(wp, (char *)"Cost offset", modem.costoffset);
+ add_webtable(wp, (char *)"EMSI speed", modem.speed);
+ add_webtable(wp, (char *)"Strip dashes", getboolean(modem.stripdash));
+ add_webtable(wp, (char *)"Available", getboolean(modem.available));
+ fprintf(wp, "\n");
+ fprintf(wp, "
\n");
+ fprintf(wp, "
\n");
+ fprintf(wp, "TTY Lines Reference
\n");
+ refs = 0;
+ sprintf(temp, "%s/etc/ttyinfo.data", getenv("MBSE_ROOT"));
+ if ((ti = fopen(temp, "r"))) {
+ fread(&ttyinfohdr, sizeof(ttyinfohdr), 1, ti);
+ fseek(ti, 0, SEEK_SET);
+ fread(&ttyinfo, ttyinfohdr.hdrsize, 1, ti);
+ while ((fread(&ttyinfo, ttyinfohdr.recsize, 1, ti)) == 1) {
+ if (ttyinfo.available && (strcmp(modem.modem, ttyinfo.modem) == 0)) {
+ if (refs == 0) {
+ fprintf(wp, "\n");
+ fprintf(wp, "\n");
+ fprintf(wp, "\n");
+ }
+ fprintf(wp, "%s | %s |
\n",
+ ttyinfo.tty, ttyinfo.tty, ttyinfo.comment);
+ refs++;
+ }
+ }
+ fclose(ti);
+ }
+ if (refs == 0)
+ fprintf(wp, "No TTY Lines References\n");
+ else {
+ fprintf(wp, "\n");
+ fprintf(wp, "
\n");
+ }
+ close_webdoc(wp);
+ }
+
+ fprintf(fp, " Modem type %s\n", modem.modem);
+ for (i = 0; i < 3; i++)
+ fprintf(fp, " Init string %s\n", modem.init[i]);
+ fprintf(fp, " OK string %s\n", modem.ok);
+ fprintf(fp, " Hangup %s\n", modem.hangup);
+ fprintf(fp, " Info command %s\n", modem.info);
+ fprintf(fp, " Dial command %s\n", modem.dial);
+ for (i = 0; i < 20; i++)
+ fprintf(fp, " Connect %s\n", modem.connect[i]);
+ fprintf(fp, " Reset cmd %s\n", modem.reset);
+ for (i = 0; i < 10; i++)
+ fprintf(fp, " Error string %s\n", modem.error[i]);
+ fprintf(fp, " Cost offset %d\n", modem.costoffset);
+ fprintf(fp, " EMSI speed %s\n", modem.speed);
+ fprintf(fp, " Strip dashes %s\n", getboolean(modem.stripdash));
+ fprintf(fp, " Available %s\n", getboolean(modem.available));
+ fprintf(fp, "\n\n\n");
+ j++;
+ }
+
+ fprintf(ip, "
\n");
+ close_webdoc(ip);
+
+ fclose(mdm);
+ return page;
}
diff --git a/mbsetup/m_new.c b/mbsetup/m_new.c
index 97cbcf62..abaf5868 100644
--- a/mbsetup/m_new.c
+++ b/mbsetup/m_new.c
@@ -539,57 +539,92 @@ void InitNewfiles(void)
int new_doc(FILE *fp, FILE *toc, int page)
{
- char temp[PATH_MAX], group[13];
- FILE *no;
- int groups, i, j;
+ char temp[PATH_MAX], group[13];
+ FILE *wp, *ip, *no;
+ int groups, i, j, nr = 0;
- sprintf(temp, "%s/etc/newfiles.data", getenv("MBSE_ROOT"));
- if ((no = fopen(temp, "r")) == NULL)
- return page;
-
- page = newpage(fp, page);
- addtoc(fp, toc, 12, 0, page, (char *)"Newfiles reports");
- j = 0;
-
- fprintf(fp, "\n\n");
- fread(&newfileshdr, sizeof(newfileshdr), 1, no);
-
- while ((fread(&newfiles, newfileshdr.recsize, 1, no)) == 1) {
-
- if (j == 3) {
- page = newpage(fp, page);
- fprintf(fp, "\n");
- j = 0;
- }
-
- fprintf(fp, " Area comment %s\n", newfiles.Comment);
- fprintf(fp, " Message area %s\n", newfiles.Area);
- fprintf(fp, " Origin line %s\n", newfiles.Origin);
- fprintf(fp, " From name %s\n", newfiles.From);
- fprintf(fp, " To name %s\n", newfiles.Too);
- fprintf(fp, " Subject %s\n", newfiles.Subject);
- fprintf(fp, " Language %c\n", newfiles.Language);
- fprintf(fp, " Aka to use %s\n", aka2str(newfiles.UseAka));
- fprintf(fp, " Active %s\n", getboolean(newfiles.Active));
- fprintf(fp, " Allow High ASCII %s\n", getboolean(newfiles.HiAscii));
- fprintf(fp, "\n File groups:\n ");
- groups = newfileshdr.grpsize / sizeof(group);
- for (i = 0; i < groups; i++) {
- fread(&group, sizeof(group), 1, no);
- if (strlen(group)) {
- fprintf(fp, "%-12s ", group);
- if (((i+1) %5) == 0)
- fprintf(fp, "\n ");
- }
- }
- if ((i+1) % 5)
- fprintf(fp, "\n");
- fprintf(fp, "\n\n\n");
- j++;
- }
-
- fclose(no);
+ sprintf(temp, "%s/etc/newfiles.data", getenv("MBSE_ROOT"));
+ if ((no = fopen(temp, "r")) == NULL)
return page;
+
+ page = newpage(fp, page);
+ addtoc(fp, toc, 12, 0, page, (char *)"Newfiles reports");
+ j = 0;
+
+ fprintf(fp, "\n\n");
+ fread(&newfileshdr, sizeof(newfileshdr), 1, no);
+
+ ip = open_webdoc((char *)"newfiles.html", (char *)"Newfiles Reports", NULL);
+ fprintf(ip, "Main\n");
+ fprintf(ip, "\n");
+
+ while ((fread(&newfiles, newfileshdr.recsize, 1, no)) == 1) {
+
+ if (j == 3) {
+ page = newpage(fp, page);
+ fprintf(fp, "\n");
+ j = 0;
+ }
+ nr++;
+ sprintf(temp, "newfiles_%d.html", nr);
+ fprintf(ip, " - Report %d %s
\n", temp, nr, newfiles.Comment);
+ if ((wp = open_webdoc(temp, (char *)"Newfiles report", newfiles.Comment))) {
+ fprintf(wp, "Main Back\n");
+ fprintf(wp, "\n");
+ fprintf(wp, "
\n");
+ fprintf(wp, "\n");
+ fprintf(wp, "\n");
+ add_webtable(wp, (char *)"Area comment", newfiles.Comment);
+ add_webtable(wp, (char *)"Message area", newfiles.Area);
+ add_webtable(wp, (char *)"Origin line", newfiles.Origin);
+ add_webtable(wp, (char *)"From name", newfiles.From);
+ add_webtable(wp, (char *)"To name", newfiles.Too);
+ add_webtable(wp, (char *)"Subject", newfiles.Subject);
+ sprintf(temp, "%c", newfiles.Language);
+ add_webtable(wp, (char *)"Language", temp);
+ add_webtable(wp, (char *)"Aka to use", aka2str(newfiles.UseAka));
+ add_webtable(wp, (char *)"Active", getboolean(newfiles.Active));
+ add_webtable(wp, (char *)"Allow High ASCII", getboolean(newfiles.HiAscii));
+ fprintf(fp, " Area comment %s\n", newfiles.Comment);
+ fprintf(fp, " Message area %s\n", newfiles.Area);
+ fprintf(fp, " Origin line %s\n", newfiles.Origin);
+ fprintf(fp, " From name %s\n", newfiles.From);
+ fprintf(fp, " To name %s\n", newfiles.Too);
+ fprintf(fp, " Subject %s\n", newfiles.Subject);
+ fprintf(fp, " Language %c\n", newfiles.Language);
+ fprintf(fp, " Aka to use %s\n", aka2str(newfiles.UseAka));
+ fprintf(fp, " Active %s\n", getboolean(newfiles.Active));
+ fprintf(fp, " Allow High ASCII %s\n", getboolean(newfiles.HiAscii));
+ fprintf(fp, "\n File groups:\n ");
+ groups = newfileshdr.grpsize / sizeof(group);
+ for (i = 0; i < groups; i++) {
+ fread(&group, sizeof(group), 1, no);
+ if (strlen(group)) {
+ if (i)
+ fprintf(wp, " | %s |
\n", group, group);
+ else
+ fprintf(wp, "File groups | %s |
\n",
+ group, group);
+ fprintf(fp, "%-12s ", group);
+ if (((i+1) %5) == 0)
+ fprintf(fp, "\n ");
+ }
+ }
+ if ((i+1) % 5)
+ fprintf(fp, "\n");
+ fprintf(fp, "\n\n\n");
+ j++;
+ fprintf(wp, "\n");
+ fprintf(wp, "
\n");
+ close_webdoc(wp);
+ }
+ }
+
+ fprintf(ip, "
\n");
+ close_webdoc(ip);
+
+ fclose(no);
+ return page;
}
diff --git a/mbsetup/m_ngroup.c b/mbsetup/m_ngroup.c
index 09e84c75..e54dd4e2 100644
--- a/mbsetup/m_ngroup.c
+++ b/mbsetup/m_ngroup.c
@@ -496,32 +496,97 @@ char *PickNGroup(char *shdr)
int newf_group_doc(FILE *fp, FILE *toc, int page)
{
- char *temp;
- FILE *no;
+ char *temp;
+ FILE *ip, *wp, *no;
+ int refs, nr;
- temp = calloc(PATH_MAX, sizeof(char));
- sprintf(temp, "%s/etc/ngroups.data", getenv("MBSE_ROOT"));
- if ((no = fopen(temp, "r")) == NULL) {
- free(temp);
- return page;
- }
+ temp = calloc(PATH_MAX, sizeof(char));
+ sprintf(temp, "%s/etc/ngroups.data", getenv("MBSE_ROOT"));
+ if ((no = fopen(temp, "r")) == NULL) {
free(temp);
-
- page = newpage(fp, page);
- addtoc(fp, toc, 11, 0, page, (char *)"Newfiles announce groups");
- fprintf(fp, "\n");
- fprintf(fp, " Name Act Comment\n");
- fprintf(fp, " ------------ --- --------------------------------------------------\n");
-
- fread(&ngrouphdr, sizeof(ngrouphdr), 1, no);
- fseek(no, 0, SEEK_SET);
- fread(&ngrouphdr, ngrouphdr.hdrsize, 1, no);
-
- while ((fread(&ngroup, ngrouphdr.recsize, 1, no)) == 1)
- fprintf(fp, " %-12s %s %s\n", ngroup.Name, getboolean(ngroup.Active), ngroup.Comment);
-
- fclose(no);
return page;
+ }
+
+ wp = open_webdoc((char *)"newgroup.html", (char *)"Newfiles groups", NULL);
+ fprintf(wp, "Main\n");
+
+ page = newpage(fp, page);
+ addtoc(fp, toc, 11, 0, page, (char *)"Newfiles announce groups");
+ fprintf(fp, "\n");
+ fprintf(fp, " Name Act Comment\n");
+ fprintf(fp, " ------------ --- --------------------------------------------------\n");
+
+ fread(&ngrouphdr, sizeof(ngrouphdr), 1, no);
+ fseek(no, 0, SEEK_SET);
+ fread(&ngrouphdr, ngrouphdr.hdrsize, 1, no);
+
+ fprintf(wp, "\n");
+ fprintf(wp, "
\n");
+ fprintf(wp, "\n");
+ fprintf(wp, "\n");
+ fprintf(wp, "Name | Act | Comment |
\n");
+
+ while ((fread(&ngroup, ngrouphdr.recsize, 1, no)) == 1) {
+ fprintf(fp, " %-12s %s %s\n", ngroup.Name, getboolean(ngroup.Active), ngroup.Comment);
+ fprintf(wp, "%s | %s | %s |
\n", ngroup.Name, getboolean(ngroup.Active), ngroup.Comment);
+ }
+
+ fprintf(wp, "\n");
+ fprintf(wp, "
\n");
+
+ fseek(no, ngrouphdr.hdrsize, SEEK_SET);
+ while ((fread(&ngroup, ngrouphdr.recsize, 1, no)) == 1) {
+ refs = 0;
+ sprintf(temp, "%s/etc/fareas.data", getenv("MBSE_ROOT"));
+ if ((ip = fopen(temp, "r"))) {
+ fread(&areahdr, sizeof(areahdr), 1, ip);
+ nr = 0;
+ while ((fread(&area, areahdr.recsize, 1, ip)) == 1) {
+ nr++;
+ if (area.Available && (strcmp(ngroup.Name, area.NewGroup) == 0)) {
+ if (refs == 0) {
+ fprintf(wp, "
\n");
+ fprintf(wp, "References for group %s
\n", ngroup.Name);
+ fprintf(wp, "\n");
+ fprintf(wp, "\n");
+ fprintf(wp, "\n");
+ }
+ refs++;
+ fprintf(wp, "File area %d | %s |
\n", nr, nr, area.Name);
+ }
+ }
+ fclose(ip);
+ }
+ sprintf(temp, "%s/etc/fgroups.data", getenv("MBSE_ROOT"));
+ if ((ip = fopen(temp, "r"))) {
+ fread(&fgrouphdr, fgrouphdr.hdrsize, 1, ip);
+ while ((fread(&fgroup, fgrouphdr.recsize, 1, ip)) == 1) {
+ if (strcmp(ngroup.Name, fgroup.AnnGroup) == 0) {
+ if (refs == 0) {
+ fprintf(wp, "
\n");
+ fprintf(wp, "References for group %s
\n", ngroup.Name);
+ fprintf(wp, "\n");
+ fprintf(wp, "\n");
+ fprintf(wp, "\n");
+ }
+ refs++;
+ fprintf(wp, "File group %s | %s |
\n",
+ fgroup.Name, fgroup.Name, fgroup.Comment);
+ }
+ }
+ fclose(ip);
+ }
+ if (refs) {
+ fprintf(wp, "\n");
+ fprintf(wp, "
\n");
+ }
+ }
+
+ close_webdoc(wp);
+
+ free(temp);
+ fclose(no);
+ return page;
}
diff --git a/mbsetup/mbsetup.c b/mbsetup/mbsetup.c
index a3e23ad1..365ec105 100644
--- a/mbsetup/mbsetup.c
+++ b/mbsetup/mbsetup.c
@@ -189,6 +189,7 @@ int horiz;
void dotter(void);
void dotter(void)
{
+ Nopper();
mvprintw(8, horiz++, (char *)".");
fflush(stdout);
}
@@ -235,7 +236,7 @@ void site_docs(void)
fprintf(hp, " Fido Networks\n");
fprintf(hp, " Archivers\n");
fprintf(hp, " Virus Scaners\n");
- fprintf(hp, " Modem Types\n");
+ fprintf(hp, " Modem Types\n");
fprintf(hp, " TTY Lines Info\n");
fprintf(hp, " Fidonet Nodes\n");
fprintf(hp, " BBS: Security Limits\n");
@@ -250,8 +251,8 @@ void site_docs(void)
fprintf(hp, " TIC: Fileecho Areas\n");
fprintf(hp, " TIC: Hatch Manager\n");
fprintf(hp, " TIC: Magic Files\n");
- fprintf(hp, " Newfiles Groups\n");
- fprintf(hp, " Newfiles Reports\n");
+ fprintf(hp, " Newfiles Groups\n");
+ fprintf(hp, " Newfiles Reports\n");
fprintf(hp, " Filefind Setup\n");
fprintf(hp, " BBS Users\n");
fprintf(hp, " Mail Services\n");
---|
---|