Merged tmail patches

This commit is contained in:
Michiel Broek 2004-01-22 20:10:59 +00:00
parent 34c153c3fa
commit 1382701bd8
5 changed files with 234 additions and 114 deletions

View File

@ -17,6 +17,7 @@ v0.39.7 14-Jan-2004
Removed the check to disable calling points. Removed the check to disable calling points.
Added a check to see if we get a URL to call other systems. Added a check to see if we get a URL to call other systems.
If nodelist info fails, increase error counter in steps of 10. If nodelist info fails, increase error counter in steps of 10.
Merged tmail patches from Przemyslaw Kwiatkowski.
mbfido: mbfido:
Removed sync calls that are now in execute. Removed sync calls that are now in execute.
@ -29,6 +30,7 @@ v0.39.7 14-Jan-2004
mbtask: mbtask:
Will call points if a call method is available. Will call points if a call method is available.
Merged tmail patches from Przemyslaw Kwiatkowski.
script: script:
New scripts are installed with an extension of .new, you need New scripts are installed with an extension of .new, you need

View File

@ -9,7 +9,7 @@ SRCS = zmmisc.c zmrle.c zmrecv.c zmsend.c binkp.c md5b.c \
answer.c chat.c dial.c dietifna.c emsidat.c filelist.c \ answer.c chat.c dial.c dietifna.c emsidat.c filelist.c \
openfile.c openport.c opentcp.c rdoptions.c yoohoo.c \ openfile.c openport.c opentcp.c rdoptions.c yoohoo.c \
recvbark.c respfreq.c sendbark.c tcp.c tcpproto.c wazoo.c \ recvbark.c respfreq.c sendbark.c tcp.c tcpproto.c wazoo.c \
filetime.c ftsc.c atoul.c portsel.c shortbox.c \ filetime.c ftsc.c atoul.c portsel.c \
ttyio.c lutil.c scanout.c emsi.c ulock.c \ ttyio.c lutil.c scanout.c emsi.c ulock.c \
callstat.c session.c call.c mbcico.c \ callstat.c session.c call.c mbcico.c \
outstat.c nlinfo.c mbout.c mbtelind.c mbtelout.c outstat.c nlinfo.c mbout.c mbtelind.c mbtelout.c
@ -18,7 +18,7 @@ HDRS = zmodem.h binkp.h config.h statetbl.h md5b.h \
answer.h chat.h dial.h dietifna.h emsidat.h filelist.h \ answer.h chat.h dial.h dietifna.h emsidat.h filelist.h \
openfile.h openport.h opentcp.h rdoptions.h yoohoo.h \ openfile.h openport.h opentcp.h rdoptions.h yoohoo.h \
recvbark.h respfreq.h sendbark.h tcp.h tcpproto.h wazoo.h \ recvbark.h respfreq.h sendbark.h tcp.h tcpproto.h wazoo.h \
filetime.h ftsc.h atoul.h portsel.h shortbox.h \ filetime.h ftsc.h atoul.h portsel.h \
ttyio.h lutil.h scanout.h emsi.h ulock.h \ ttyio.h lutil.h scanout.h emsi.h ulock.h \
callstat.h session.h call.h mbcico.h \ callstat.h session.h call.h mbcico.h \
outstat.h nlinfo.h mbtelind.h mbtelout.h outstat.h nlinfo.h mbtelind.h mbtelout.h
@ -27,7 +27,7 @@ MBCICO_OBJS = zmmisc.o zmrle.o zmrecv.o zmsend.o binkp.o md5b.o \
answer.o chat.o dial.o dietifna.o emsidat.o filelist.o \ answer.o chat.o dial.o dietifna.o emsidat.o filelist.o \
openfile.o openport.o opentcp.o rdoptions.o yoohoo.o \ openfile.o openport.o opentcp.o rdoptions.o yoohoo.o \
recvbark.o respfreq.o sendbark.o tcp.o tcpproto.o wazoo.o \ recvbark.o respfreq.o sendbark.o tcp.o tcpproto.o wazoo.o \
filetime.o ftsc.o atoul.o portsel.o shortbox.o \ filetime.o ftsc.o atoul.o portsel.o \
ttyio.o lutil.o scanout.o emsi.o ulock.o \ ttyio.o lutil.o scanout.o emsi.o ulock.o \
callstat.o session.o call.o mbcico.o callstat.o session.o call.o mbcico.o
MBOUT_OBJS = outstat.o nlinfo.o mbout.o scanout.o callstat.o MBOUT_OBJS = outstat.o nlinfo.o mbout.o scanout.o callstat.o
@ -112,7 +112,7 @@ chat.o: ../config.h ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records
dial.o: ../config.h ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/nodelist.h ../lib/clcomm.h ../lib/dbnode.h ../lib/mberrors.h config.h chat.h ttyio.h session.h dial.h dial.o: ../config.h ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/nodelist.h ../lib/clcomm.h ../lib/dbnode.h ../lib/mberrors.h config.h chat.h ttyio.h session.h dial.h
dietifna.o: ../config.h ../lib/libs.h ../lib/structs.h ../lib/common.h ../lib/nodelist.h ../lib/clcomm.h ttyio.h session.h emsi.h dietifna.h respfreq.h filelist.h xmrecv.h xmsend.h dietifna.o: ../config.h ../lib/libs.h ../lib/structs.h ../lib/common.h ../lib/nodelist.h ../lib/clcomm.h ttyio.h session.h emsi.h dietifna.h respfreq.h filelist.h xmrecv.h xmsend.h
emsidat.o: ../config.h ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h ../lib/nodelist.h ../lib/dbnode.h emsi.h session.h lutil.h config.h emsidat.h filetime.h emsidat.o: ../config.h ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h ../lib/nodelist.h ../lib/dbnode.h emsi.h session.h lutil.h config.h emsidat.h filetime.h
filelist.o: ../config.h ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/clcomm.h ../lib/common.h ../lib/nodelist.h config.h shortbox.h session.h filelist.h filelist.o: ../config.h ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/clcomm.h ../lib/common.h ../lib/nodelist.h config.h session.h filelist.h
openfile.o: ../config.h ../lib/libs.h ../lib/structs.h ../lib/clcomm.h ../lib/common.h ../lib/users.h ../lib/records.h config.h lutil.h openfile.h openfile.o: ../config.h ../lib/libs.h ../lib/structs.h ../lib/clcomm.h ../lib/common.h ../lib/users.h ../lib/records.h config.h lutil.h openfile.h
openport.o: ../config.h ../lib/libs.h ../lib/structs.h ../lib/common.h ../lib/clcomm.h ulock.h ttyio.h mbcico.h openport.h openport.o: ../config.h ../lib/libs.h ../lib/structs.h ../lib/common.h ../lib/clcomm.h ulock.h ttyio.h mbcico.h openport.h
opentcp.o: ../config.h ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h ../lib/nodelist.h ../lib/dbnode.h session.h ttyio.h openport.h opentcp.h opentcp.o: ../config.h ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h ../lib/nodelist.h ../lib/dbnode.h session.h ttyio.h openport.h opentcp.h
@ -128,7 +128,6 @@ filetime.o: ../config.h ../lib/libs.h filetime.h
ftsc.o: ../config.h ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/nodelist.h ../lib/clcomm.h ../lib/mberrors.h session.h ttyio.h statetbl.h config.h ftsc.h rdoptions.h recvbark.h filelist.h sendbark.h respfreq.h xmrecv.h xmsend.h inbound.h ftsc.o: ../config.h ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/nodelist.h ../lib/clcomm.h ../lib/mberrors.h session.h ttyio.h statetbl.h config.h ftsc.h rdoptions.h recvbark.h filelist.h sendbark.h respfreq.h xmrecv.h xmsend.h inbound.h
atoul.o: ../config.h ../lib/libs.h atoul.h atoul.o: ../config.h ../lib/libs.h atoul.h
portsel.o: ../config.h ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h portsel.h portsel.o: ../config.h ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h portsel.h
shortbox.o: ../config.h ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/clcomm.h ../lib/common.h shortbox.h
ttyio.o: ../config.h ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h ttyio.h lutil.h ttyio.o: ../config.h ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h ttyio.h lutil.h
lutil.o: ../config.h ../lib/libs.h ../lib/structs.h ../lib/common.h ../lib/clcomm.h lutil.h lutil.o: ../config.h ../lib/libs.h ../lib/structs.h ../lib/common.h ../lib/clcomm.h lutil.h
scanout.o: ../config.h ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h ../lib/dbftn.h config.h scanout.h lutil.h scanout.o: ../config.h ../lib/libs.h ../lib/structs.h ../lib/users.h ../lib/records.h ../lib/common.h ../lib/clcomm.h ../lib/dbftn.h config.h scanout.h lutil.h

View File

@ -37,7 +37,6 @@
#include "../lib/common.h" #include "../lib/common.h"
#include "../lib/nodelist.h" #include "../lib/nodelist.h"
#include "config.h" #include "config.h"
#include "shortbox.h"
#include "session.h" #include "session.h"
#include "filelist.h" #include "filelist.h"
@ -288,11 +287,15 @@ file_list *create_filelist(fa_list *al, char *fl, int create)
{ {
file_list *st = NULL, *tmpf; file_list *st = NULL, *tmpf;
fa_list *tmpa; fa_list *tmpa;
char flavor, *tmpfl, *nm, *temp, tmpreq[13]; char flavor, *tmpfl, *nm, *temp, tmpreq[13], digit[6], *temp2;
struct stat stbuf; struct stat stbuf;
int packets = 0; int packets = 0;
FILE *fp; FILE *fp;
unsigned char buffer[2]; unsigned char buffer[2];
faddr *fa;
DIR *dp = NULL;
struct dirent *de;
struct stat sb;
Syslog('o', "Create_filelist(%s,\"%s\",%d)", al?ascfnode(al->addr,0x1f):"<none>", MBSE_SS(fl), create); Syslog('o', "Create_filelist(%s,\"%s\",%d)", al?ascfnode(al->addr,0x1f):"<none>", MBSE_SS(fl), create);
made_request = 0; made_request = 0;
@ -309,30 +312,6 @@ file_list *create_filelist(fa_list *al, char *fl, int create)
check_filebox(nodes.OutBox, st); check_filebox(nodes.OutBox, st);
} }
/*
* Check T-Mail style fileboxes
*/
temp = calloc(PATH_MAX, sizeof(char));
if (strlen(CFG.tmailshort)) {
sprintf(temp, "%s/%s", CFG.tmailshort, shortboxname(tmpa->addr));
check_filebox(temp, st);
if (strchr(fl, 'h')) {
sprintf(temp, "%s/%sh", CFG.tmailshort, shortboxname(tmpa->addr));
check_filebox(temp, st);
}
}
if (strlen(CFG.tmaillong)) {
sprintf(temp, "%s/%d.%d.%d.%d", CFG.tmaillong, tmpa->addr->zone,
tmpa->addr->net, tmpa->addr->node, tmpa->addr->point);
check_filebox(temp, st);
if (strchr(fl, 'h')) {
sprintf(temp, "%s/%d.%d.%d.%d.h", CFG.tmaillong, tmpa->addr->zone,
tmpa->addr->net, tmpa->addr->node, tmpa->addr->point);
check_filebox(temp, st);
}
}
free(temp);
/* /*
* Check spool files, these are more or less useless but they * Check spool files, these are more or less useless but they
* create a filelist of files to send which are never send. * create a filelist of files to send which are never send.
@ -391,6 +370,114 @@ file_list *create_filelist(fa_list *al, char *fl, int create)
} }
} }
/*
* Check T-Mail style fileboxes
*/
temp = calloc(PATH_MAX, sizeof(char));
if (strlen(CFG.tmailshort) && (dp = opendir(CFG.tmailshort))) {
Syslog('o', "Checking T-Mail short box \"%s\"", CFG.tmailshort);
while ((de = readdir(dp))) {
if (strcmp(de->d_name, ".") && strcmp(de->d_name, "..")) {
sprintf(temp, "%s/%s", CFG.tmailshort, de->d_name);
if (stat(temp, &sb) == 0) {
Syslog('o' ,"checking \"%s\"", de->d_name);
if (S_ISDIR(sb.st_mode)) {
int i;
char b=0;
for (i=0; (i<8) && (!b); ++i) {
char c = tolower(de->d_name[i]);
if ( (c<'0') || (c>'v') || ((c>'9') && (c<'a')) )
b=1;
}
if (de->d_name[8]!='.')
b=1;
for (i=9; (i<11) && (!b); ++i) {
char c = tolower(de->d_name[i]);
if ( (c<'0') || (c>'v') || ((c>'9') && (c<'a')) )
b=1;
}
if (b)
continue;
if (de->d_name[11]==0)
flavor='o';
else if ((tolower(de->d_name[11])=='h') && (de->d_name[12]==0))
flavor='h';
else
continue;
fa = (faddr*)malloc(sizeof(faddr));
fa->name = NULL;
fa->domain = NULL;
memset(&digit, 0, sizeof(digit));
digit[0] = de->d_name[0];
digit[1] = de->d_name[1];
fa->zone = strtol(digit, NULL, 32);
memset(&digit, 0, sizeof(digit));
digit[0] = de->d_name[2];
digit[1] = de->d_name[3];
digit[2] = de->d_name[4];
fa->net = strtol(digit, NULL, 32);
memset(&digit, 0, sizeof(digit));
digit[0] = de->d_name[5];
digit[1] = de->d_name[6];
digit[2] = de->d_name[7];
fa->node = strtol(digit, NULL, 32);
memset(&digit, 0, sizeof(digit));
digit[0] = de->d_name[9];
digit[1] = de->d_name[10];
fa->point = strtol(digit, NULL, 32);
for (tmpa = al; tmpa; tmpa = tmpa->next) {
if ((fa->zone==tmpa->addr->zone) && (fa->net==tmpa->addr->net) &&
(fa->node==tmpa->addr->node) && (fa->point==tmpa->addr->point) &&
strchr(fl, flavor))
check_filebox(temp, st);
}
tidy_faddr(fa);
}
}
}
}
closedir(dp);
}
if (strlen(CFG.tmaillong) && (dp = opendir(CFG.tmaillong))) {
temp2 = calloc(PATH_MAX, sizeof(char));
Syslog('o', "Checking T-Mail long box \"%s\"", CFG.tmaillong);
while ((de = readdir(dp))) {
if (strcmp(de->d_name, ".") && strcmp(de->d_name, "..")) {
sprintf(temp, "%s/%s", CFG.tmaillong, de->d_name);
if (stat(temp, &sb) == 0) {
Syslog('o' ,"checking \"%s\"", de->d_name);
if (S_ISDIR(sb.st_mode)) {
char c, d;
int n;
sprintf(temp2, "%s", de->d_name);
fa = (faddr*)malloc(sizeof(faddr));
fa->name = NULL;
fa->domain = NULL;
n = sscanf(temp2, "%u.%u.%u.%u.%c%c", &(fa->zone), &(fa->net), &(fa->node), &(fa->point), &c, &d);
if ((n==4) || ((n==5) && (tolower(c)=='h'))) {
if (n==4)
flavor = 'o';
else
flavor = 'h';
for (tmpa = al; tmpa; tmpa = tmpa->next) {
if ((fa->zone==tmpa->addr->zone) && (fa->net==tmpa->addr->net) &&
(fa->node==tmpa->addr->node) && (fa->point==tmpa->addr->point) &&
strchr(fl, flavor))
check_filebox(temp, st);
}
}
tidy_faddr(fa);
}
}
}
}
closedir(dp);
free(temp2);
}
free(temp);
Syslog('o', "B4 FTS-0001 checkpoint"); Syslog('o', "B4 FTS-0001 checkpoint");
/* /*
* For FTS-0001 we need to create at least one packet. * For FTS-0001 we need to create at least one packet.

View File

@ -199,6 +199,28 @@ int outstat()
if (stat(temp, &sb) == 0) { if (stat(temp, &sb) == 0) {
Syslog('o' ,"checking \"%s\"", de->d_name); Syslog('o' ,"checking \"%s\"", de->d_name);
if (S_ISDIR(sb.st_mode)) { if (S_ISDIR(sb.st_mode)) {
int i;
char b=0;
for (i=0; (i<8) && (!b); ++i) {
char c = tolower(de->d_name[i]);
if ( (c<'0') || (c>'v') || ((c>'9') && (c<'a')) )
b=1;
}
if (de->d_name[8]!='.')
b=1;
for (i=9; (i<11) && (!b); ++i) {
char c = tolower(de->d_name[i]);
if ( (c<'0') || (c>'v') || ((c>'9') && (c<'a')) )
b=1;
}
if (b)
continue;
if (de->d_name[11]==0)
flavor='o';
else if ((tolower(de->d_name[11])=='h') && (de->d_name[12]==0))
flavor='h';
else
continue;
fa = (faddr*)malloc(sizeof(faddr)); fa = (faddr*)malloc(sizeof(faddr));
fa->name = NULL; fa->name = NULL;
fa->domain = NULL; fa->domain = NULL;
@ -223,10 +245,6 @@ int outstat()
if (SearchFidonet(fa->zone)) { if (SearchFidonet(fa->zone)) {
fa->domain = xstrcpy(fidonet.domain); fa->domain = xstrcpy(fidonet.domain);
} }
if ((strlen(de->d_name) == 12) && (tolower(de->d_name[11]) == 'h'))
flavor = 'h';
else
flavor = 'o';
checkdir(temp, fa, flavor); checkdir(temp, fa, flavor);
tidy_faddr(fa); tidy_faddr(fa);
} }
@ -244,22 +262,23 @@ int outstat()
if (stat(temp, &sb) == 0) { if (stat(temp, &sb) == 0) {
Syslog('o' ,"checking \"%s\"", de->d_name); Syslog('o' ,"checking \"%s\"", de->d_name);
if (S_ISDIR(sb.st_mode)) { if (S_ISDIR(sb.st_mode)) {
char c, d;
int n;
sprintf(temp2, "%s", de->d_name); sprintf(temp2, "%s", de->d_name);
fa = (faddr*)malloc(sizeof(faddr)); fa = (faddr*)malloc(sizeof(faddr));
fa->name = NULL; fa->name = NULL;
fa->domain = NULL; fa->domain = NULL;
fa->zone = atoi(strtok(temp2, ".\n\r\0")); n = sscanf(temp2, "%u.%u.%u.%u.%c%c", &(fa->zone), &(fa->net), &(fa->node), &(fa->point), &c, &d);
fa->net = atoi(strtok(NULL, ".\n\r\0")); if ((n==4) || ((n==5) && (tolower(c)=='h'))) {
fa->node = atoi(strtok(NULL, ".\n\r\0")); if (SearchFidonet(fa->zone)) {
fa->point = atoi(strtok(NULL, ".\n\r\0")); fa->domain = xstrcpy(fidonet.domain);
if (SearchFidonet(fa->zone)) { }
fa->domain = xstrcpy(fidonet.domain); if (n==4)
flavor = 'o';
else
flavor = 'h';
checkdir(temp, fa, flavor);
} }
if (tolower(de->d_name[strlen(de->d_name) -1]) == 'h')
flavor = 'h';
else
flavor = 'o';
checkdir(temp, fa, flavor);
tidy_faddr(fa); tidy_faddr(fa);
} }
} }

View File

@ -347,84 +347,97 @@ int outstat()
* Start checking T-Mail fileboxes * Start checking T-Mail fileboxes
*/ */
if (strlen(CFG.tmailshort) && (dp = opendir(CFG.tmailshort))) { if (strlen(CFG.tmailshort) && (dp = opendir(CFG.tmailshort))) {
while ((de = readdir(dp))) { Syslog('o', "Checking T-Mail short box \"%s\"", CFG.tmailshort);
if (strcmp(de->d_name, ".") && strcmp(de->d_name, "..")) { while ((de = readdir(dp))) {
sprintf(temp, "%s/%s", CFG.tmailshort, de->d_name); if (strcmp(de->d_name, ".") && strcmp(de->d_name, "..")) {
if (stat(temp, &sb) == 0) { sprintf(temp, "%s/%s", CFG.tmailshort, de->d_name);
if (S_ISDIR(sb.st_mode)) { if (stat(temp, &sb) == 0) {
fa = (faddr*)malloc(sizeof(faddr)); Syslog('o' ,"checking \"%s\"", de->d_name);
fa->name = NULL; if (S_ISDIR(sb.st_mode)) {
fa->domain = NULL; int i;
memset(&digit, 0, sizeof(digit)); char b=0;
digit[0] = de->d_name[0]; for (i=0; (i<8) && (!b); ++i) {
digit[1] = de->d_name[1]; char c = tolower(de->d_name[i]);
fa->zone = strtol(digit, NULL, 32); if ( (c<'0') || (c>'v') || ((c>'9') && (c<'a')) ) b=1;
memset(&digit, 0, sizeof(digit)); }
digit[0] = de->d_name[2]; if (de->d_name[8]!='.') b=1;
digit[1] = de->d_name[3]; for (i=9; (i<11) && (!b); ++i) {
digit[2] = de->d_name[4]; char c = tolower(de->d_name[i]);
fa->net = strtol(digit, NULL, 32); if ( (c<'0') || (c>'v') || ((c>'9') && (c<'a')) ) b=1;
memset(&digit, 0, sizeof(digit)); }
digit[0] = de->d_name[5]; if (b) continue;
digit[1] = de->d_name[6]; if (de->d_name[11]==0) flavor='o';
digit[2] = de->d_name[7]; else if ((tolower(de->d_name[11])=='h') && (de->d_name[12]==0)) flavor='h';
fa->node = strtol(digit, NULL, 32); else continue;
memset(&digit, 0, sizeof(digit)); fa = (faddr*)malloc(sizeof(faddr));
digit[0] = de->d_name[9]; fa->name = NULL;
digit[1] = de->d_name[10]; fa->domain = NULL;
fa->point = strtol(digit, NULL, 32); memset(&digit, 0, sizeof(digit));
if (SearchFidonet(fa->zone)) { digit[0] = de->d_name[0];
fa->domain = xstrcpy(fidonet.domain); digit[1] = de->d_name[1];
} fa->zone = strtol(digit, NULL, 32);
if ((strlen(de->d_name) == 12) && (tolower(de->d_name[11]) == 'h')) memset(&digit, 0, sizeof(digit));
flavor = 'h'; digit[0] = de->d_name[2];
else digit[1] = de->d_name[3];
flavor = 'o'; digit[2] = de->d_name[4];
checkdir(temp, fa, flavor); fa->net = strtol(digit, NULL, 32);
memset(&digit, 0, sizeof(digit));
digit[0] = de->d_name[5];
digit[1] = de->d_name[6];
digit[2] = de->d_name[7];
fa->node = strtol(digit, NULL, 32);
memset(&digit, 0, sizeof(digit));
digit[0] = de->d_name[9];
digit[1] = de->d_name[10];
fa->point = strtol(digit, NULL, 32);
if (SearchFidonet(fa->zone)) {
fa->domain = xstrcpy(fidonet.domain);
}
checkdir(temp, fa, flavor);
if (fa->domain) if (fa->domain)
free(fa->domain); free(fa->domain);
free(fa); free(fa);
} }
} }
} }
} }
closedir(dp); closedir(dp);
} }
if (strlen(CFG.tmaillong) && (dp = opendir(CFG.tmaillong))) { if (strlen(CFG.tmaillong) && (dp = opendir(CFG.tmaillong))) {
temp2 = calloc(PATH_MAX, sizeof(char)); temp2 = calloc(PATH_MAX, sizeof(char));
while ((de = readdir(dp))) { Syslog('o', "Checking T-Mail long box \"%s\"", CFG.tmaillong);
if (strcmp(de->d_name, ".") && strcmp(de->d_name, "..")) { while ((de = readdir(dp))) {
sprintf(temp, "%s/%s", CFG.tmaillong, de->d_name); if (strcmp(de->d_name, ".") && strcmp(de->d_name, "..")) {
if (stat(temp, &sb) == 0) { sprintf(temp, "%s/%s", CFG.tmaillong, de->d_name);
if (S_ISDIR(sb.st_mode)) { if (stat(temp, &sb) == 0) {
sprintf(temp2, "%s", de->d_name); Syslog('o' ,"checking \"%s\"", de->d_name);
fa = (faddr*)malloc(sizeof(faddr)); if (S_ISDIR(sb.st_mode)) {
fa->name = NULL; char c, d;
fa->domain = NULL; int n;
fa->zone = atoi(strtok(temp2, ".\n\r\0")); sprintf(temp2, "%s", de->d_name);
fa->net = atoi(strtok(NULL, ".\n\r\0")); fa = (faddr*)malloc(sizeof(faddr));
fa->node = atoi(strtok(NULL, ".\n\r\0")); fa->name = NULL;
fa->point = atoi(strtok(NULL, ".\n\r\0")); fa->domain = NULL;
if (SearchFidonet(fa->zone)) { n = sscanf(temp2, "%u.%u.%u.%u.%c%c", &(fa->zone), &(fa->net), &(fa->node), &(fa->point), &c, &d);
fa->domain = xstrcpy(fidonet.domain); if ((n==4) || ((n==5) && (tolower(c)=='h'))) {
} if (SearchFidonet(fa->zone)) {
if (tolower(de->d_name[strlen(de->d_name) -1]) == 'h') fa->domain = xstrcpy(fidonet.domain);
flavor = 'h'; }
else if (n==4) flavor = 'o';
flavor = 'o'; else flavor = 'h';
checkdir(temp, fa, flavor); checkdir(temp, fa, flavor);
}
if (fa->domain) if (fa->domain)
free(fa->domain); free(fa->domain);
free(fa); free(fa);
} }
} }
} }
} }
closedir(dp); closedir(dp);
free(temp2); free(temp2);
} }
/* /*
* During processing the outbound list, determine when the next event will occur, * During processing the outbound list, determine when the next event will occur,
* ie. the time when the callout status of a node changes because of starting a * ie. the time when the callout status of a node changes because of starting a