Fixed some AreaMgr problems, code cleanup, added Pause/Resume commands
This commit is contained in:
parent
792ef4649a
commit
f00ac0d11d
166
mbfido/areamgr.c
166
mbfido/areamgr.c
@ -69,13 +69,13 @@ extern int echo_bad; /* Bad echomail */
|
||||
extern int echo_dupe; /* Dupe echomail */
|
||||
|
||||
int areamgr = 0; /* Nr of AreaMgr messages */
|
||||
int a_help = FALSE;
|
||||
int a_list = FALSE;
|
||||
int a_query = FALSE;
|
||||
int a_stat = FALSE;
|
||||
int a_unlnk = FALSE;
|
||||
int a_flow = FALSE;
|
||||
unsigned long a_msgs = 0;
|
||||
int a_help = FALSE; /* Send AreaMgr help */
|
||||
int a_list = FALSE; /* Send AreaMgr list */
|
||||
int a_query = FALSE; /* Send AreaMgr query */
|
||||
int a_stat = FALSE; /* Send AreaMgr status */
|
||||
int a_unlnk = FALSE; /* Send AreaMgr unlinked */
|
||||
int a_flow = FALSE; /* Send AreaMgr flow */
|
||||
unsigned long a_msgs = 0; /* Messages to rescan */
|
||||
|
||||
|
||||
|
||||
@ -105,8 +105,8 @@ void A_Help(faddr *t, char *replyid)
|
||||
fprintf(fp, " to which you are not already connected\r");
|
||||
fprintf(fp, "%%FLOW To request a flow report of available areas\r");
|
||||
fprintf(fp, "%%STATUS To request a status report for your system\r");
|
||||
// fprintf(fp, "%%PAUSE To temporary disconnect from the connected echomail areas\r");
|
||||
// fprintf(fp, "%%RESUME To reconnect the temporary disconnected echomail areas\r");
|
||||
fprintf(fp, "%%PAUSE To temporary disconnect from the connected echomail areas\r");
|
||||
fprintf(fp, "%%RESUME To reconnect the temporary disconnected echomail areas\r");
|
||||
fprintf(fp, "%%PWD=newpwd To set a new AreaMgr and FileMgr password\r");
|
||||
fprintf(fp, "%%MSGS <n> To set max. number of messages to be rescanned\r");
|
||||
fprintf(fp, "%%RESCAN <area> To request messages from 'area' again\r");
|
||||
@ -149,14 +149,24 @@ void A_Query(faddr *t, char *replyid)
|
||||
if ((qp = SendMgrMail(t, CFG.ct_KeepMgr, FALSE, (char *)"Areamgr", (char *)"Your query request", replyid)) != NULL) {
|
||||
|
||||
temp = calloc(PATH_MAX, sizeof(char));
|
||||
|
||||
sprintf(temp, "%s/etc/mareas.data", getenv("MBSE_ROOT"));
|
||||
mp = fopen(temp, "r");
|
||||
if ((mp = fopen(temp, "r")) == NULL) {
|
||||
WriteError("$Can't open %s", temp);
|
||||
free(temp);
|
||||
return;
|
||||
}
|
||||
fread(&msgshdr, sizeof(msgshdr), 1, mp);
|
||||
Cons = msgshdr.syssize / sizeof(System);
|
||||
|
||||
sprintf(temp, "%s/etc/mgroups.data", getenv("MBSE_ROOT"));
|
||||
gp = fopen(temp, "r");
|
||||
if ((gp = fopen(temp, "r")) == NULL) {
|
||||
WriteError("$Can't open %s", temp);
|
||||
free(temp);
|
||||
fclose(mp);
|
||||
return;
|
||||
}
|
||||
fread(&mgrouphdr, sizeof(mgrouphdr), 1, gp);
|
||||
free(temp);
|
||||
|
||||
fprintf(qp, "The following is a list of all connected message areas\r\r");
|
||||
|
||||
@ -229,7 +239,6 @@ void A_Query(faddr *t, char *replyid)
|
||||
fprintf(qp, "%s\r", TearLine());
|
||||
CloseMail(qp, t);
|
||||
net_out++;
|
||||
free(temp);
|
||||
} else
|
||||
WriteError("Can't create netmail");
|
||||
}
|
||||
@ -254,15 +263,26 @@ void A_List(faddr *t, char *replyid, int Notify)
|
||||
if ((qp = SendMgrMail(t, CFG.ct_KeepMgr, FALSE, (char *)"Areamgr", (char *)"AreaMgr List", replyid)) != NULL) {
|
||||
|
||||
WriteMailGroups(qp, f);
|
||||
temp = calloc(PATH_MAX, sizeof(char));
|
||||
|
||||
temp = calloc(PATH_MAX, sizeof(char));
|
||||
sprintf(temp, "%s/etc/mareas.data", getenv("MBSE_ROOT"));
|
||||
mp = fopen(temp, "r");
|
||||
if ((mp = fopen(temp, "r")) == NULL) {
|
||||
WriteError("$Can't open %s", temp);
|
||||
free(temp);
|
||||
return;
|
||||
}
|
||||
fread(&msgshdr, sizeof(msgshdr), 1, mp);
|
||||
Cons = msgshdr.syssize / sizeof(System);
|
||||
|
||||
sprintf(temp, "%s/etc/mgroups.data", getenv("MBSE_ROOT"));
|
||||
gp = fopen(temp, "r");
|
||||
if ((gp = fopen(temp, "r")) == NULL) {
|
||||
WriteError("$Can't open %s", temp);
|
||||
free(temp);
|
||||
fclose(mp);
|
||||
return;
|
||||
}
|
||||
fread(&mgrouphdr, sizeof(mgrouphdr), 1, gp);
|
||||
free(temp);
|
||||
|
||||
fprintf(qp, "The following is a list of all message areas\r\r");
|
||||
|
||||
@ -332,7 +352,6 @@ void A_List(faddr *t, char *replyid, int Notify)
|
||||
fprintf(qp, "%s\r", TearLine());
|
||||
CloseMail(qp, t);
|
||||
net_out++;
|
||||
free(temp);
|
||||
} else
|
||||
WriteError("Can't create netmail");
|
||||
}
|
||||
@ -369,14 +388,24 @@ void A_Flow(faddr *t, char *replyid, int Notify)
|
||||
if ((qp = SendMgrMail(t, CFG.ct_KeepMgr, FALSE, (char *)"Areamgr", (char *)"AreaMgr Flow report", replyid)) != NULL) {
|
||||
|
||||
temp = calloc(PATH_MAX, sizeof(char));
|
||||
|
||||
sprintf(temp, "%s/etc/mareas.data", getenv("MBSE_ROOT"));
|
||||
mp = fopen(temp, "r");
|
||||
if ((mp = fopen(temp, "r")) == NULL) {
|
||||
WriteError("$Can't open %s", temp);
|
||||
free(temp);
|
||||
return;
|
||||
}
|
||||
fread(&msgshdr, sizeof(msgshdr), 1, mp);
|
||||
Cons = msgshdr.syssize / sizeof(System);
|
||||
|
||||
sprintf(temp, "%s/etc/mgroups.data", getenv("MBSE_ROOT"));
|
||||
gp = fopen(temp, "r");
|
||||
if ((gp = fopen(temp, "r")) == NULL) {
|
||||
WriteError("$Can't open %s", temp);
|
||||
free(temp);
|
||||
fclose(mp);
|
||||
return;
|
||||
}
|
||||
fread(&mgrouphdr, sizeof(mgrouphdr), 1, gp);
|
||||
free(temp);
|
||||
|
||||
fprintf(qp, "The following is a flow report of all message areas\r\r");
|
||||
|
||||
@ -439,7 +468,6 @@ void A_Flow(faddr *t, char *replyid, int Notify)
|
||||
fprintf(qp, "%s\r", TearLine());
|
||||
CloseMail(qp, t);
|
||||
net_out++;
|
||||
free(temp);
|
||||
} else
|
||||
WriteError("Can't create netmail");
|
||||
}
|
||||
@ -472,8 +500,10 @@ void A_Status(faddr *t, char *replyid)
|
||||
|
||||
fprintf(fp, " Last week Last month Total ever\r");
|
||||
fprintf(fp, " ---------- ---------- ----------\r");
|
||||
fprintf(fp, "Messages to you %-10ld %-10ld %-10ld\r", nodes.MailSent.lweek, nodes.MailSent.month[i], nodes.MailSent.total);
|
||||
fprintf(fp, "Messages from you %-10ld %-10ld %-10ld\r", nodes.MailRcvd.lweek, nodes.MailRcvd.month[i], nodes.MailRcvd.total);
|
||||
fprintf(fp, "Messages to you %-10ld %-10ld %-10ld\r", nodes.MailSent.lweek,
|
||||
nodes.MailSent.month[i], nodes.MailSent.total);
|
||||
fprintf(fp, "Messages from you %-10ld %-10ld %-10ld\r", nodes.MailRcvd.lweek,
|
||||
nodes.MailRcvd.month[i], nodes.MailRcvd.total);
|
||||
|
||||
fprintf(fp, "\rWith regards, %s\r\r", CFG.sysop_name);
|
||||
|
||||
@ -502,15 +532,26 @@ void A_Unlinked(faddr *t, char *replyid)
|
||||
if ((qp = SendMgrMail(t, CFG.ct_KeepMgr, FALSE, (char *)"Areamgr", (char *)"Your unlinked request", replyid)) != NULL) {
|
||||
|
||||
WriteMailGroups(qp, f);
|
||||
temp = calloc(128, sizeof(char));
|
||||
|
||||
temp = calloc(PATH_MAX, sizeof(char));
|
||||
sprintf(temp, "%s/etc/mareas.data", getenv("MBSE_ROOT"));
|
||||
mp = fopen(temp, "r");
|
||||
if ((mp = fopen(temp, "r")) == NULL) {
|
||||
WriteError("$Can't open %s", temp);
|
||||
free(temp);
|
||||
return;
|
||||
}
|
||||
fread(&msgshdr, sizeof(msgshdr), 1, mp);
|
||||
Cons = msgshdr.syssize / sizeof(System);
|
||||
|
||||
sprintf(temp, "%s/etc/mgroups.data", getenv("MBSE_ROOT"));
|
||||
gp = fopen(temp, "r");
|
||||
if ((gp = fopen(temp, "r")) == NULL) {
|
||||
WriteError("$Can't open %s", temp);
|
||||
free(temp);
|
||||
fclose(mp);
|
||||
return;
|
||||
}
|
||||
fread(&mgrouphdr, sizeof(mgrouphdr), 1, gp);
|
||||
free(temp);
|
||||
|
||||
fprintf(qp, "The following is a list of all available message areas\r\r");
|
||||
|
||||
@ -584,7 +625,6 @@ void A_Unlinked(faddr *t, char *replyid)
|
||||
fprintf(qp, "%s\r", TearLine());
|
||||
CloseMail(qp, t);
|
||||
net_out++;
|
||||
free(temp);
|
||||
} else
|
||||
WriteError("Can't create netmail");
|
||||
}
|
||||
@ -615,7 +655,7 @@ void A_Disconnect(faddr *t, char *Area, FILE *tmp)
|
||||
|
||||
if (!SearchMsgs(Area)) {
|
||||
fprintf(tmp, "Area %s not found\n", Area);
|
||||
Syslog('m', " Area not found");
|
||||
Syslog('+', " Area not found");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -629,7 +669,7 @@ void A_Disconnect(faddr *t, char *Area, FILE *tmp)
|
||||
}
|
||||
if (Group == NULL) {
|
||||
fprintf(tmp, "You may not disconnect from area %s\n", Area);
|
||||
Syslog('m', " Group %s not available for node", mgroup.Name);
|
||||
Syslog('+', " Group %s not available for %s", mgroup.Name, ascfnode(t, 0x1f));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -639,7 +679,7 @@ void A_Disconnect(faddr *t, char *Area, FILE *tmp)
|
||||
|
||||
if (i > METRIC_POINT) {
|
||||
fprintf(tmp, "You may not disconnect area %s with nodenumber %s\n", Area, ascfnode(t, 0x1f));
|
||||
Syslog('m', " Node may not disconnect from group %s", mgroup.Name);
|
||||
Syslog('+', " %s may not disconnect from group %s", ascfnode(t, 0x1f), mgroup.Name);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -650,7 +690,7 @@ void A_Disconnect(faddr *t, char *Area, FILE *tmp)
|
||||
|
||||
if (!MsgSystemConnected(Sys)) {
|
||||
fprintf(tmp, "You are not connected to %s\n", Area);
|
||||
Syslog('m', " Node is not connected to %s", Area);
|
||||
Syslog('+', " %s is not connected to %s", ascfnode(t, 0x1f), Area);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -709,7 +749,7 @@ void A_Connect(faddr *t, char *Area, FILE *tmp)
|
||||
}
|
||||
if (Group == NULL) {
|
||||
fprintf(tmp, "You may not connect to area %s\n", Area);
|
||||
Syslog('m', " Group %s not available for node %s", mgroup.Name);
|
||||
Syslog('+', " Group %s not available for node %s", mgroup.Name, ascfnode(t, 0x1f));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -719,7 +759,7 @@ void A_Connect(faddr *t, char *Area, FILE *tmp)
|
||||
|
||||
if (i > METRIC_POINT) {
|
||||
fprintf(tmp, "You may not connect area %s with nodenumber %s\n", Area, ascfnode(t, 0x1f));
|
||||
Syslog('m', " Node may not connect to group %s", mgroup.Name);
|
||||
Syslog('+', " %s may not connect to group %s", ascfnode(t, 0x1f), mgroup.Name);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -730,7 +770,7 @@ void A_Connect(faddr *t, char *Area, FILE *tmp)
|
||||
|
||||
if (MsgSystemConnected(Sys)) {
|
||||
fprintf(tmp, "You are already connected to %s\n", Area);
|
||||
Syslog('m', " Node is already connected to %s", Area);
|
||||
Syslog('+', " %s is already connected to %s", ascfnode(t, 0x1f), Area);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -755,7 +795,7 @@ void A_All(faddr *, int, FILE *, char *);
|
||||
void A_All(faddr *t, int Connect, FILE *tmp, char *Grp)
|
||||
{
|
||||
FILE *mp, *gp;
|
||||
char *Group, temp[81];
|
||||
char *Group, *temp;
|
||||
faddr *f;
|
||||
int i, Link, First = TRUE, Cons;
|
||||
sysconnect Sys;
|
||||
@ -776,13 +816,25 @@ void A_All(faddr *t, int Connect, FILE *tmp, char *Grp)
|
||||
f = bestaka_s(t);
|
||||
Syslog('m', "Bestaka for %s is %s", ascfnode(t, 0x1f), ascfnode(f, 0x1f));
|
||||
|
||||
temp = calloc(PATH_MAX, sizeof(char));
|
||||
sprintf(temp, "%s/etc/mareas.data", getenv("MBSE_ROOT"));
|
||||
mp = fopen(temp, "r+");
|
||||
if ((mp = fopen(temp, "r+")) == NULL) {
|
||||
WriteError("$Can't open %s", temp);
|
||||
free(temp);
|
||||
return;
|
||||
}
|
||||
fread(&msgshdr, sizeof(msgshdr), 1, mp);
|
||||
Cons = msgshdr.syssize / sizeof(Sys);
|
||||
|
||||
sprintf(temp, "%s/etc/mgroups.data", getenv("MBSE_ROOT"));
|
||||
gp = fopen(temp, "r");
|
||||
if ((gp = fopen(temp, "r")) == NULL) {
|
||||
WriteError("$Can't open %s", temp);
|
||||
free(temp);
|
||||
fclose(mp);
|
||||
return;
|
||||
}
|
||||
fread(&mgrouphdr, sizeof(mgrouphdr), 1, gp);
|
||||
free(temp);
|
||||
|
||||
while (TRUE) {
|
||||
Group = GetNodeMailGrp(First);
|
||||
@ -869,11 +921,49 @@ void A_Group(faddr *t, char *Area, int Connect, FILE *tmp)
|
||||
void A_Pause(faddr *, int, FILE *);
|
||||
void A_Pause(faddr *t, int Pause, FILE *tmp)
|
||||
{
|
||||
return;
|
||||
FILE *mp;
|
||||
faddr *f;
|
||||
int i, Cons;
|
||||
sysconnect Sys;
|
||||
char *temp;
|
||||
|
||||
if (Pause)
|
||||
Syslog('+', "AreaMgr: Pause");
|
||||
else
|
||||
Syslog('+', "AreaMgr: Resume");
|
||||
|
||||
f = bestaka_s(t);
|
||||
Syslog('m', "Bestaka for %s is %s", ascfnode(t, 0x1f), ascfnode(f, 0x1f));
|
||||
|
||||
temp = calloc(PATH_MAX, sizeof(char));
|
||||
sprintf(temp, "%s/etc/mareas.data", getenv("MBSE_ROOT"));
|
||||
if ((mp = fopen(temp, "r+")) == NULL) {
|
||||
WriteError("$Can't open %s", temp);
|
||||
free(temp);
|
||||
return;
|
||||
}
|
||||
free(temp);
|
||||
fread(&msgshdr, sizeof(msgshdr), 1, mp);
|
||||
Cons = msgshdr.syssize / sizeof(Sys);
|
||||
|
||||
while (fread(&msgs, msgshdr.recsize, 1, mp) == 1) {
|
||||
if (msgs.Active) {
|
||||
for (i = 0; i < Cons; i++) {
|
||||
fread(&Sys, sizeof(Sys), 1, mp);
|
||||
if ((metric(fido2faddr(Sys.aka), t) == METRIC_EQUAL) && (!Sys.cutoff)) {
|
||||
Sys.pause = Pause;
|
||||
fseek(mp, - sizeof(Sys), SEEK_CUR);
|
||||
fwrite(&Sys, sizeof(Sys), 1, mp);
|
||||
Syslog('+', "AreaMgr: %s area %s", Pause?"Pause":"Resume", msgs.Tag);
|
||||
fprintf(tmp, "%s area %s\n", Pause?"Pause":"Resume", msgs.Tag);
|
||||
a_list = TRUE;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
fseek(mp, msgshdr.syssize, SEEK_CUR);
|
||||
}
|
||||
}
|
||||
fclose(mp);
|
||||
}
|
||||
|
||||
|
||||
|
@ -503,7 +503,7 @@ void F_Disconnect(faddr *t, char *Area, FILE *tmp)
|
||||
|
||||
if (!SearchTic(Area)) {
|
||||
fprintf(tmp, "Area %s not found\n", Area);
|
||||
Syslog('m', " Area not found");
|
||||
Syslog('+', " Area not found");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -517,7 +517,7 @@ void F_Disconnect(faddr *t, char *Area, FILE *tmp)
|
||||
}
|
||||
if (Group == NULL) {
|
||||
fprintf(tmp, "You may not disconnect from area %s\n", Area);
|
||||
Syslog('m', " Group %s not available for node", fgroup.Name);
|
||||
Syslog('+', " Group %s not available for %s", fgroup.Name, ascfnode(t, 0x1f));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -527,7 +527,7 @@ void F_Disconnect(faddr *t, char *Area, FILE *tmp)
|
||||
|
||||
if (i > METRIC_POINT) {
|
||||
fprintf(tmp, "You may not disconnect area %s with nodenumber %s\n", Area, ascfnode(t, 0x1f));
|
||||
Syslog('m', " Node may not disconnect from group %s", fgroup.Name);
|
||||
Syslog('+', " %s may not disconnect from group %s", ascfnode(t, 0x1f), fgroup.Name);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -538,7 +538,7 @@ void F_Disconnect(faddr *t, char *Area, FILE *tmp)
|
||||
|
||||
if (!TicSystemConnected(Sys)) {
|
||||
fprintf(tmp, "You are not connected to %s\n", Area);
|
||||
Syslog('m', " Node is not connected to %s", Area);
|
||||
Syslog('+', " %s is not connected to %s", ascfnode(t, 0x1f), Area);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -595,7 +595,7 @@ void F_Connect(faddr *t, char *Area, FILE *tmp)
|
||||
}
|
||||
if (Group == NULL) {
|
||||
fprintf(tmp, "You may not connect to area %s\n", Area);
|
||||
Syslog('m', " Group %s not available for node %s", fgroup.Name);
|
||||
Syslog('+', " Group %s not available for %s", fgroup.Name, ascfnode(t, 0x1f));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -605,7 +605,7 @@ void F_Connect(faddr *t, char *Area, FILE *tmp)
|
||||
|
||||
if (i > METRIC_POINT) {
|
||||
fprintf(tmp, "You may not connect area %s with nodenumber %s\n", Area, ascfnode(t, 0x1f));
|
||||
Syslog('m', " Node may not connect to group %s", fgroup.Name);
|
||||
Syslog('+', " Node %s may not connect to group %s", ascfnode(t, 0x1f), fgroup.Name);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -615,7 +615,7 @@ void F_Connect(faddr *t, char *Area, FILE *tmp)
|
||||
|
||||
if (TicSystemConnected(Sys)) {
|
||||
fprintf(tmp, "You are already connected to %s\n", Area);
|
||||
Syslog('m', " Node is already connected to %s", Area);
|
||||
Syslog('+', " %s is already connected to %s", ascfnode(t, 0x1f), Area);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -41,6 +41,9 @@
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Write Echomail groups list to tempfile
|
||||
*/
|
||||
void WriteMailGroups(FILE *fp, faddr *f)
|
||||
{
|
||||
int Count = 0, First = TRUE;
|
||||
@ -92,6 +95,9 @@ void WriteMailGroups(FILE *fp, faddr *f)
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Write ticarea groups to tempfile
|
||||
*/
|
||||
void WriteFileGroups(FILE *fp, faddr *f)
|
||||
{
|
||||
int Count = 0, First = TRUE;
|
||||
@ -153,6 +159,9 @@ char *GetBool(int Flag)
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Shift all characters in Buf Cnt places to left
|
||||
*/
|
||||
void ShiftBuf(char *Buf, int Cnt)
|
||||
{
|
||||
int i;
|
||||
@ -164,6 +173,9 @@ void ShiftBuf(char *Buf, int Cnt)
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Remove spaces and = characters from begin of line
|
||||
*/
|
||||
void CleanBuf(char *Buf)
|
||||
{
|
||||
while (strlen(Buf) && ((Buf[0] == ' ') || (Buf[0] == '=')))
|
||||
@ -172,6 +184,9 @@ void CleanBuf(char *Buf)
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Change AreaMgr and FileMgr password for a node
|
||||
*/
|
||||
void MgrPasswd(faddr *t, char *Buf, FILE *tmp, int Len)
|
||||
{
|
||||
fidoaddr Node;
|
||||
@ -185,10 +200,10 @@ void MgrPasswd(faddr *t, char *Buf, FILE *tmp, int Len)
|
||||
return;
|
||||
}
|
||||
|
||||
memset(&nodes.Apasswd, 0, 16);
|
||||
sprintf(nodes.Apasswd, "%s", tu(Buf));
|
||||
memset(&nodes.Apasswd, 0, sizeof(nodes.Apasswd));
|
||||
strncpy(nodes.Apasswd, tu(Buf), 15);
|
||||
fprintf(tmp, "AreaMgr and FileMgr password is now \"%s\"\n", nodes.Apasswd);
|
||||
Syslog('+', "XxxxMgr: Password \"%s\"", nodes.Apasswd);
|
||||
Syslog('+', "XxxxMgr: Password \"%s\" for node %s", nodes.Apasswd, ascfnode(t, 0x1f));
|
||||
UpdateNode();
|
||||
memcpy(&Node, faddr2fido(t), sizeof(fidoaddr));
|
||||
SearchNode(Node);
|
||||
@ -196,6 +211,9 @@ void MgrPasswd(faddr *t, char *Buf, FILE *tmp, int Len)
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Change AreaMgr/FileMgr nodify flag for node
|
||||
*/
|
||||
void MgrNotify(faddr *t, char *Buf, FILE *tmp)
|
||||
{
|
||||
fidoaddr Node;
|
||||
|
Reference in New Issue
Block a user