Code cleanup
This commit is contained in:
parent
26014af40c
commit
f4df56ab59
@ -1596,373 +1596,365 @@ void OLR_DownBW()
|
|||||||
*/
|
*/
|
||||||
void BlueWave_Fetch()
|
void BlueWave_Fetch()
|
||||||
{
|
{
|
||||||
char *temp;
|
char *temp;
|
||||||
char *buffer,*b;
|
char *buffer,*b;
|
||||||
FILE *up, *mf, *tp, *iol;
|
FILE *up, *mf, *tp, *iol;
|
||||||
UPL_HEADER Uph;
|
UPL_HEADER Uph;
|
||||||
UPL_REC Upr;
|
UPL_REC Upr;
|
||||||
PDQ_HEADER Pdh;
|
PDQ_HEADER Pdh;
|
||||||
PDQ_REC Pdr;
|
PDQ_REC Pdr;
|
||||||
REQ_REC Req;
|
REQ_REC Req;
|
||||||
int i, Found, OLC_head, OLC_filter, OLC_macro, OLC_keyword, HEAD_written;
|
int i, Found, OLC_head, OLC_filter, OLC_macro, OLC_keyword, HEAD_written;
|
||||||
fidoaddr dest;
|
fidoaddr dest;
|
||||||
|
time_t now;
|
||||||
|
struct tm *tm;
|
||||||
|
|
||||||
|
colour(9, 0);
|
||||||
|
/* Processing BlueWave reply packet */
|
||||||
|
printf("%s\n", (char *)Language(450));
|
||||||
|
temp = calloc(PATH_MAX, sizeof(char));
|
||||||
|
b = calloc(255, sizeof(char));
|
||||||
|
buffer = b;
|
||||||
|
/*
|
||||||
|
* Process uploaded mail
|
||||||
|
*/
|
||||||
|
sprintf(temp, "%s/%s/%s.UPL", CFG.bbs_usersdir, exitinfo.Name, CFG.bbsid);
|
||||||
|
if ((up = fopen(temp, "r")) == NULL) {
|
||||||
|
temp = tl(temp);
|
||||||
|
up = fopen(temp, "r");
|
||||||
|
}
|
||||||
|
if (up != NULL) {
|
||||||
|
fread(&Uph, sizeof(UPL_HEADER), 1, up);
|
||||||
|
Syslog('+', "Processing BlueWave .UPL file");
|
||||||
|
Syslog('+', "Client: %s %d.%d", Uph.reader_name, Uph.reader_major, Uph.reader_minor);
|
||||||
|
if (Uph.upl_header_len != sizeof(UPL_HEADER)) {
|
||||||
|
WriteError("Recordsize mismatch");
|
||||||
|
fclose(up);
|
||||||
|
/* ERROR in packet */
|
||||||
|
printf("%s\n", (char *)Language(451));
|
||||||
|
Pause();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Syslog('+', "Login %s, Alias %s", Uph.loginname, Uph.aliasname);
|
||||||
|
Syslog('m', "Tear: %s", Uph.reader_tear);
|
||||||
|
/* MORE CHECKS HERE */
|
||||||
|
|
||||||
|
colour(CFG.TextColourF, CFG.TextColourB);
|
||||||
|
/* Import messages */
|
||||||
|
printf("%s ", (char *)Language(452));
|
||||||
|
colour(CFG.HiliteF, CFG.HiliteB);
|
||||||
|
fflush(stdout);
|
||||||
|
i = 0;
|
||||||
|
|
||||||
|
memset(&Upr, 0, sizeof(UPL_REC));
|
||||||
|
while (fread(&Upr, Uph.upl_rec_len, 1, up) == 1) {
|
||||||
|
printf(".");
|
||||||
|
fflush(stdout);
|
||||||
|
Syslog('m', " From : %s", Upr.from);
|
||||||
|
Syslog('m', " To : %s", Upr.to);
|
||||||
|
Syslog('m', " Subj : %s", Upr.subj);
|
||||||
|
now = Upr.unix_date;
|
||||||
|
tm = gmtime(&now);
|
||||||
|
Syslog('m', " Date : %02d-%02d-%d %02d:%02d:%02d", tm->tm_mday, tm->tm_mon+1,
|
||||||
|
tm->tm_year+1900, tm->tm_hour, tm->tm_min, tm->tm_sec);
|
||||||
|
Syslog('m', " Dest : %d:%d/%d.%d", Upr.destzone, Upr.destnet, Upr.destnode, Upr.destpoint);
|
||||||
|
if (Upr.msg_attr & UPL_INACTIVE)
|
||||||
|
Syslog('m', " Message is Inactive");
|
||||||
|
if (Upr.msg_attr & UPL_PRIVATE)
|
||||||
|
Syslog('m', " Message is Private");
|
||||||
|
if (Upr.msg_attr & UPL_HAS_FILE)
|
||||||
|
Syslog('m', " File Attach");
|
||||||
|
if (Upr.msg_attr & UPL_NETMAIL)
|
||||||
|
Syslog('m', " Is Netmail");
|
||||||
|
if (Upr.msg_attr & UPL_IS_REPLY)
|
||||||
|
Syslog('m', " Is Reply");
|
||||||
|
if (Upr.network_type)
|
||||||
|
Syslog('m', " Type : Internet");
|
||||||
|
else
|
||||||
|
Syslog('m', " Type : Fidonet");
|
||||||
|
Syslog('m', " File : %s", Upr.filename);
|
||||||
|
Syslog('m', " Tag : %s", Upr.echotag);
|
||||||
|
|
||||||
|
sprintf(temp, "%s/etc/mareas.data", getenv("MBSE_ROOT"));
|
||||||
|
if ((mf = fopen(temp, "r+")) != NULL) {
|
||||||
|
fread(&msgshdr, sizeof(msgshdr), 1, mf);
|
||||||
|
Found = FALSE;
|
||||||
|
|
||||||
|
if (strlen(Upr.echotag)) {
|
||||||
|
while (fread(&msgs, msgshdr.recsize, 1, mf) == 1) {
|
||||||
|
fseek(mf, msgshdr.syssize, SEEK_CUR);
|
||||||
|
if (msgs.Active && (strcasecmp(msgs.QWKname, Upr.echotag) == 0)) {
|
||||||
|
Found = TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/*
|
||||||
|
* If there is no echotag, the filename is used
|
||||||
|
* this is "areanum.msgnum" so we pick the part
|
||||||
|
* before the dot and pray that it's ok.
|
||||||
|
*/
|
||||||
|
temp = strtok(strdup(Upr.filename), ".");
|
||||||
|
if (fseek(mf, ((atoi(temp) -1) * (msgshdr.recsize + msgshdr.syssize)) + msgshdr.hdrsize, SEEK_SET) == 0)
|
||||||
|
if (fread(&msgs, msgshdr.recsize, 1, mf) == 1) {
|
||||||
|
Found = TRUE;
|
||||||
|
fseek(mf, msgshdr.syssize, SEEK_CUR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* SHOULD ALSO CHECK FROM FIELD */
|
||||||
|
if (!Found) {
|
||||||
|
WriteError("No msg area, File \"%s\"", Upr.filename);
|
||||||
|
} else {
|
||||||
|
if ((Access(exitinfo.Security, msgs.WRSec)) && (msgs.MsgKinds != RONLY)) {
|
||||||
|
|
||||||
|
if (Open_Msgbase(msgs.Base, 'w')) {
|
||||||
|
Msg_New();
|
||||||
|
strcpy(Msg.From, Upr.from);
|
||||||
|
strcpy(Msg.To, Upr.to);
|
||||||
|
strcpy(Msg.Subject, Upr.subj);
|
||||||
|
if (Upr.msg_attr & UPL_PRIVATE)
|
||||||
|
Msg.Private = TRUE;
|
||||||
|
if (msgs.MsgKinds == PRIVATE)
|
||||||
|
Msg.Private = TRUE;
|
||||||
|
Msg.Written = Upr.unix_date;
|
||||||
|
Msg.Arrived = time(NULL) - (gmt_offset((time_t)0) * 60);
|
||||||
|
Msg.Local = TRUE;
|
||||||
|
dest.zone = Upr.destzone;
|
||||||
|
dest.net = Upr.destnet;
|
||||||
|
dest.node = Upr.destnode;
|
||||||
|
dest.point = Upr.destpoint;
|
||||||
|
Add_Kludges(dest, FALSE, Upr.filename);
|
||||||
|
Syslog('+', "Msg (%ld) to \"%s\", \"%s\", in %s", Msg.Id, Msg.To, Msg.Subject, msgs.QWKname);
|
||||||
|
sprintf(temp, "%s/%s/%s", CFG.bbs_usersdir, exitinfo.Name, Upr.filename);
|
||||||
|
unlink(temp);
|
||||||
|
i++;
|
||||||
|
Close_Msgbase();
|
||||||
|
fseek(mf, - (msgshdr.recsize + msgshdr.syssize), SEEK_CUR);
|
||||||
|
msgs.Posted.total++;
|
||||||
|
msgs.Posted.tweek++;
|
||||||
|
msgs.Posted.tdow[Diw]++;
|
||||||
|
msgs.Posted.month[Miy]++;
|
||||||
|
msgs.LastPosted = time(NULL);
|
||||||
|
fwrite(&msgs, msgshdr.recsize, 1, mf);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* No Write access to area */
|
||||||
|
printf("\n%s %s\n", (char *)Language(453), msgs.Name);
|
||||||
|
WriteError("No Write Access to area %s", msgs.Name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fclose(mf);
|
||||||
|
}
|
||||||
|
memset(&Upr, 0, sizeof(UPL_REC));
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
colour(CFG.TextColourF, CFG.TextColourB);
|
||||||
|
if (i) {
|
||||||
|
/* Messages imported */
|
||||||
|
printf("%d %s\n", i, (char *)Language(454));
|
||||||
|
ReadExitinfo();
|
||||||
|
exitinfo.iPosted += i;
|
||||||
|
WriteExitinfo();
|
||||||
|
do_mailout = TRUE;
|
||||||
|
}
|
||||||
|
fflush(stdout);
|
||||||
|
fclose(up);
|
||||||
|
|
||||||
colour(9, 0);
|
|
||||||
/* Processing BlueWave reply packet */
|
|
||||||
printf("%s\n", (char *)Language(450));
|
|
||||||
temp = calloc(PATH_MAX, sizeof(char));
|
|
||||||
b = calloc(255, sizeof(char));
|
|
||||||
buffer = b;
|
|
||||||
/*
|
/*
|
||||||
* Process uploaded mail
|
* Remove processed files.
|
||||||
*/
|
*/
|
||||||
sprintf(temp, "%s/%s/%s.UPL", CFG.bbs_usersdir, exitinfo.Name, CFG.bbsid);
|
sprintf(temp, "%s/%s/%s.UPL", CFG.bbs_usersdir, exitinfo.Name, CFG.bbsid);
|
||||||
if ((up = fopen(temp, "r")) == NULL) {
|
unlink(temp);
|
||||||
temp = tl(temp);
|
temp = tl(temp);
|
||||||
up = fopen(temp, "r");
|
unlink(temp);
|
||||||
}
|
|
||||||
if (up != NULL) {
|
|
||||||
fread(&Uph, sizeof(UPL_HEADER), 1, up);
|
|
||||||
Syslog('+', "Processing BlueWave .UPL file");
|
|
||||||
Syslog('+', "Client: %s %d.%d", Uph.reader_name, Uph.reader_major, Uph.reader_minor);
|
|
||||||
if (Uph.upl_header_len != sizeof(UPL_HEADER)) {
|
|
||||||
WriteError("Recordsize mismatch");
|
|
||||||
fclose(up);
|
|
||||||
/* ERROR in packet */
|
|
||||||
printf("%s\n", (char *)Language(451));
|
|
||||||
Pause();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Syslog('+', "Login %s, Alias %s", Uph.loginname, Uph.aliasname);
|
|
||||||
/* MORE CHECKS HERE */
|
|
||||||
|
|
||||||
colour(CFG.TextColourF, CFG.TextColourB);
|
|
||||||
/* Import messages */
|
|
||||||
printf("%s ", (char *)Language(452));
|
|
||||||
colour(CFG.HiliteF, CFG.HiliteB);
|
|
||||||
fflush(stdout);
|
|
||||||
i = 0;
|
|
||||||
|
|
||||||
memset(&Upr, 0, sizeof(UPL_REC));
|
|
||||||
while (fread(&Upr, Uph.upl_rec_len, 1, up) == 1) {
|
|
||||||
printf(".");
|
|
||||||
fflush(stdout);
|
|
||||||
Syslog('m', " From : %s", Upr.from);
|
|
||||||
Syslog('m', " To : %s", Upr.to);
|
|
||||||
Syslog('m', " Subj : %s", Upr.subj);
|
|
||||||
Syslog('m', " Date : %ld", Upr.unix_date);
|
|
||||||
Syslog('m', " Dest : %d:%d/%d.%d", Upr.destzone, Upr.destnet, Upr.destnode, Upr.destpoint);
|
|
||||||
if (Upr.msg_attr & UPL_INACTIVE)
|
|
||||||
Syslog('m', " Message is Inactive");
|
|
||||||
if (Upr.msg_attr & UPL_PRIVATE)
|
|
||||||
Syslog('m', " Message is Private");
|
|
||||||
if (Upr.msg_attr & UPL_HAS_FILE)
|
|
||||||
Syslog('m', " File Attach");
|
|
||||||
if (Upr.msg_attr & UPL_NETMAIL)
|
|
||||||
Syslog('m', " Is Netmail");
|
|
||||||
if (Upr.msg_attr & UPL_IS_REPLY)
|
|
||||||
Syslog('m', " Is Reply");
|
|
||||||
if (Upr.network_type)
|
|
||||||
Syslog('m', " Type : Internet");
|
|
||||||
else
|
|
||||||
Syslog('m', " Type : Fidonet");
|
|
||||||
Syslog('m', " File : %s", Upr.filename);
|
|
||||||
Syslog('m', " Tag : %s", Upr.echotag);
|
|
||||||
|
|
||||||
sprintf(temp, "%s/etc/mareas.data", getenv("MBSE_ROOT"));
|
|
||||||
if ((mf = fopen(temp, "r+")) != NULL) {
|
|
||||||
fread(&msgshdr, sizeof(msgshdr), 1, mf);
|
|
||||||
Found = FALSE;
|
|
||||||
|
|
||||||
if (strlen(Upr.echotag)) {
|
|
||||||
while (fread(&msgs, msgshdr.recsize, 1, mf) == 1) {
|
|
||||||
fseek(mf, msgshdr.syssize, SEEK_CUR);
|
|
||||||
if (msgs.Active && (strcasecmp(msgs.QWKname, Upr.echotag) == 0)) {
|
|
||||||
Found = TRUE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
/*
|
|
||||||
* If there is no echotag, the filename is used
|
|
||||||
* this is "areanum.msgnum" so we pick the part
|
|
||||||
* before the dot and pray that it's ok.
|
|
||||||
*/
|
|
||||||
temp = strtok(strdup(Upr.filename), ".");
|
|
||||||
if (fseek(mf, ((atoi(temp) -1) * (msgshdr.recsize + msgshdr.syssize)) + msgshdr.hdrsize, SEEK_SET) == 0)
|
|
||||||
if (fread(&msgs, msgshdr.recsize, 1, mf) == 1) {
|
|
||||||
Found = TRUE;
|
|
||||||
fseek(mf, msgshdr.syssize, SEEK_CUR);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* SHOULD ALSO CHECK FROM FIELD */
|
|
||||||
if (!Found) {
|
|
||||||
WriteError("No msg area, File \"%s\"", Upr.filename);
|
|
||||||
} else {
|
|
||||||
if ((Access(exitinfo.Security, msgs.WRSec)) && (msgs.MsgKinds != RONLY)) {
|
|
||||||
|
|
||||||
if (Open_Msgbase(msgs.Base, 'w')) {
|
|
||||||
Msg_New();
|
|
||||||
Syslog('m', "Msgbase open and locked");
|
|
||||||
strcpy(Msg.From, Upr.from);
|
|
||||||
strcpy(Msg.To, Upr.to);
|
|
||||||
strcpy(Msg.Subject, Upr.subj);
|
|
||||||
if (Upr.msg_attr & UPL_PRIVATE)
|
|
||||||
Msg.Private = TRUE;
|
|
||||||
if (msgs.MsgKinds == PRIVATE)
|
|
||||||
Msg.Private = TRUE;
|
|
||||||
Msg.Written = Upr.unix_date;
|
|
||||||
Msg.Arrived = time(NULL) - (gmt_offset((time_t)0) * 60);
|
|
||||||
Msg.Local = TRUE;
|
|
||||||
dest.zone = Upr.destzone;
|
|
||||||
dest.net = Upr.destnet;
|
|
||||||
dest.node = Upr.destnode;
|
|
||||||
dest.point = Upr.destpoint;
|
|
||||||
Syslog('m', "Header fields are set, starting kludges");
|
|
||||||
Add_Kludges(dest, FALSE, Upr.filename);
|
|
||||||
Syslog('+', "Msg (%ld) to \"%s\", \"%s\", in %s", Msg.Id, Msg.To, Msg.Subject, msgs.QWKname);
|
|
||||||
sprintf(temp, "%s/%s/%s", CFG.bbs_usersdir, exitinfo.Name, Upr.filename);
|
|
||||||
unlink(temp);
|
|
||||||
i++;
|
|
||||||
Close_Msgbase();
|
|
||||||
Syslog('m', "Msgbase closed again");
|
|
||||||
fseek(mf, - (msgshdr.recsize + msgshdr.syssize), SEEK_CUR);
|
|
||||||
msgs.Posted.total++;
|
|
||||||
msgs.Posted.tweek++;
|
|
||||||
msgs.Posted.tdow[Diw]++;
|
|
||||||
msgs.Posted.month[Miy]++;
|
|
||||||
msgs.LastPosted = time(NULL);
|
|
||||||
fwrite(&msgs, msgshdr.recsize, 1, mf);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
/* No Write access to area */
|
|
||||||
printf("\n%s %s\n", (char *)Language(453), msgs.Name);
|
|
||||||
WriteError("No Write Access to area %s", msgs.Name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fclose(mf);
|
|
||||||
}
|
|
||||||
memset(&Upr, 0, sizeof(UPL_REC));
|
|
||||||
}
|
|
||||||
printf("\n");
|
|
||||||
colour(CFG.TextColourF, CFG.TextColourB);
|
|
||||||
if (i) {
|
|
||||||
/* Messages imported */
|
|
||||||
printf("%d %s\n", i, (char *)Language(454));
|
|
||||||
ReadExitinfo();
|
|
||||||
exitinfo.iPosted += i;
|
|
||||||
WriteExitinfo();
|
|
||||||
do_mailout = TRUE;
|
|
||||||
}
|
|
||||||
fflush(stdout);
|
|
||||||
fclose(up);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Remove processed files.
|
|
||||||
*/
|
|
||||||
sprintf(temp, "%s/%s/%s.UPL", CFG.bbs_usersdir, exitinfo.Name, CFG.bbsid);
|
|
||||||
unlink(temp);
|
|
||||||
temp = tl(temp);
|
|
||||||
unlink(temp);
|
|
||||||
sprintf(temp, "%s/%s/%s.UPI", CFG.bbs_usersdir, exitinfo.Name, CFG.bbsid);
|
|
||||||
unlink(temp);
|
|
||||||
temp = tl(temp);
|
|
||||||
unlink(temp);
|
|
||||||
sprintf(temp, "%s/%s/%s.NET", CFG.bbs_usersdir, exitinfo.Name, CFG.bbsid);
|
|
||||||
unlink(temp);
|
|
||||||
temp = tl(temp);
|
|
||||||
unlink(temp);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* If a .UPL file was not found it is possible we received an version 2
|
|
||||||
* reply packet.
|
|
||||||
*/
|
|
||||||
sprintf(temp, "%s/%s/%s.UPI", CFG.bbs_usersdir, exitinfo.Name, CFG.bbsid);
|
sprintf(temp, "%s/%s/%s.UPI", CFG.bbs_usersdir, exitinfo.Name, CFG.bbsid);
|
||||||
if ((up = fopen(temp, "r")) == NULL) {
|
unlink(temp);
|
||||||
temp = tl(temp);
|
temp = tl(temp);
|
||||||
up = fopen(temp, "r");
|
unlink(temp);
|
||||||
}
|
|
||||||
if (up != NULL) {
|
|
||||||
Syslog('+', "Received Version 2 .UPI packet, not supported");
|
|
||||||
fclose(up);
|
|
||||||
}
|
|
||||||
sprintf(temp, "%s/%s/%s.NET", CFG.bbs_usersdir, exitinfo.Name, CFG.bbsid);
|
sprintf(temp, "%s/%s/%s.NET", CFG.bbs_usersdir, exitinfo.Name, CFG.bbsid);
|
||||||
if ((up = fopen(temp, "r")) == NULL) {
|
unlink(temp);
|
||||||
temp = tl(temp);
|
temp = tl(temp);
|
||||||
up = fopen(temp, "r");
|
unlink(temp);
|
||||||
}
|
}
|
||||||
if (up != NULL) {
|
|
||||||
Syslog('+', "Received Version 2 .NET packet, not supported");
|
|
||||||
fclose(up);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If a .UPL file was not found it is possible we received an version 2
|
||||||
|
* reply packet.
|
||||||
|
*/
|
||||||
|
sprintf(temp, "%s/%s/%s.UPI", CFG.bbs_usersdir, exitinfo.Name, CFG.bbsid);
|
||||||
|
if ((up = fopen(temp, "r")) == NULL) {
|
||||||
|
temp = tl(temp);
|
||||||
|
up = fopen(temp, "r");
|
||||||
|
}
|
||||||
|
if (up != NULL) {
|
||||||
|
Syslog('+', "Received Version 2 .UPI packet, not supported");
|
||||||
|
fclose(up);
|
||||||
|
}
|
||||||
|
sprintf(temp, "%s/%s/%s.NET", CFG.bbs_usersdir, exitinfo.Name, CFG.bbsid);
|
||||||
|
if ((up = fopen(temp, "r")) == NULL) {
|
||||||
|
temp = tl(temp);
|
||||||
|
up = fopen(temp, "r");
|
||||||
|
}
|
||||||
|
if (up != NULL) {
|
||||||
|
Syslog('+', "Received Version 2 .NET packet, not supported");
|
||||||
|
fclose(up);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Process offline configuration
|
||||||
|
*/
|
||||||
|
sprintf(temp, "%s/%s/%s.OLC", CFG.bbs_usersdir, exitinfo.Name, CFG.bbsid);
|
||||||
|
if ((iol = fopen(temp, "r")) == NULL) {
|
||||||
|
temp = tl(temp);
|
||||||
|
iol = fopen(temp, "r");
|
||||||
|
}
|
||||||
|
if (iol != NULL) {
|
||||||
/*
|
/*
|
||||||
* Process offline configuration
|
* If .OLC file found convert it in .PDQ
|
||||||
*/
|
*/
|
||||||
|
sprintf(temp, "%s/%s/%s.PDQ", CFG.bbs_usersdir, exitinfo.Name, CFG.bbsid);
|
||||||
sprintf(temp, "%s/%s/%s.OLC", CFG.bbs_usersdir, exitinfo.Name, CFG.bbsid);
|
Syslog('+', "Converting BW/v3 .OLC file to %s",temp);
|
||||||
if ((iol = fopen(temp, "r")) == NULL) {
|
if (( tp = fopen(temp, "w")) != NULL) {
|
||||||
temp = tl(temp);
|
HEAD_written=FALSE;
|
||||||
iol = fopen(temp, "r");
|
OLC_head=FALSE;
|
||||||
}
|
OLC_filter=OLC_macro=OLC_keyword=0;
|
||||||
if (iol != NULL) {
|
memset(&Pdh,0,sizeof(PDQ_HEADER));
|
||||||
/*
|
Syslog('f', "%s Opened for writing", temp);
|
||||||
* If .OLC file found convert it in .PDQ
|
while (fgets(b,255,iol) != NULL ){
|
||||||
*/
|
buffer=b;
|
||||||
sprintf(temp, "%s/%s/%s.PDQ", CFG.bbs_usersdir, exitinfo.Name, CFG.bbsid);
|
while (isspace(buffer[0]))
|
||||||
Syslog('+', "Converting BW/v3 .OLC file to %s",temp);
|
|
||||||
if (( tp = fopen(temp, "w")) != NULL) {
|
|
||||||
HEAD_written=FALSE;
|
|
||||||
OLC_head=FALSE;
|
|
||||||
OLC_filter=OLC_macro=OLC_keyword=0;
|
|
||||||
memset(&Pdh,0,sizeof(PDQ_HEADER));
|
|
||||||
Syslog('f', "%s Opened for writing", temp);
|
|
||||||
while(fgets(b,255,iol) != NULL ){
|
|
||||||
buffer=b;
|
|
||||||
while (isspace(buffer[0]))
|
|
||||||
buffer++;
|
buffer++;
|
||||||
Syslog('m', "Reading: %s ", buffer);
|
Syslog('m', "Reading: %s ", buffer);
|
||||||
if ( ( strncasecmp(buffer,"[Global",7) == 0) && (strlen(buffer) > 22) ){
|
if (( strncasecmp(buffer,"[Global",7) == 0) && (strlen(buffer) > 22) ){
|
||||||
OLC_head=TRUE;
|
OLC_head=TRUE;
|
||||||
continue;
|
continue;
|
||||||
}else{
|
}else{
|
||||||
if (buffer[0]=='['){
|
if (buffer[0]=='['){
|
||||||
strtok(buffer,"]");
|
strtok(buffer,"]");
|
||||||
buffer++;
|
buffer++;
|
||||||
OLC_head=FALSE;
|
OLC_head=FALSE;
|
||||||
strncpy(Pdr.echotag,buffer,20);
|
strncpy(Pdr.echotag,buffer,20);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (OLC_head == TRUE){
|
if (OLC_head == TRUE){
|
||||||
if (strncasecmp(buffer,"AreaChanges",11)==0){
|
if (strncasecmp(buffer,"AreaChanges",11)==0){
|
||||||
buffer+=11;
|
buffer+=11;
|
||||||
while (isspace(buffer[0]) || buffer[0]=='=')
|
while (isspace(buffer[0]) || buffer[0]=='=')
|
||||||
buffer++;
|
buffer++;
|
||||||
if ((strncasecmp(buffer,"TRUE",4)==0)
|
if ((strncasecmp(buffer,"TRUE",4)==0) || (strncasecmp(buffer,"YES",3)==0) || (strncasecmp(buffer,"ON",2)==0))
|
||||||
|| (strncasecmp(buffer,"YES",3)==0)
|
Pdh.flags |= PDQ_AREA_CHANGES;
|
||||||
|| (strncasecmp(buffer,"ON",2)==0))
|
continue;
|
||||||
Pdh.flags |= PDQ_AREA_CHANGES;
|
}
|
||||||
continue;
|
if (strncasecmp(buffer,"MenuHotKeys",11)==0){
|
||||||
}
|
buffer+=11;
|
||||||
if (strncasecmp(buffer,"MenuHotKeys",11)==0){
|
while (isspace(buffer[0]) || buffer[0]=='=')
|
||||||
buffer+=11;
|
buffer++;
|
||||||
while (isspace(buffer[0]) || buffer[0]=='=')
|
if ((strncasecmp(buffer,"TRUE",4)==0) || (strncasecmp(buffer,"YES",3)==0) || (strncasecmp(buffer,"ON",2)==0))
|
||||||
buffer++;
|
Pdh.flags |= PDQ_HOTKEYS;
|
||||||
if ((strncasecmp(buffer,"TRUE",4)==0)
|
continue;
|
||||||
|| (strncasecmp(buffer,"YES",3)==0)
|
}
|
||||||
|| (strncasecmp(buffer,"ON",2)==0))
|
if ( (strncasecmp(buffer,"ExpertMenus",11)==0)){
|
||||||
Pdh.flags |= PDQ_HOTKEYS;
|
buffer+=11;
|
||||||
continue;
|
while (isspace(buffer[0]) || buffer[0]=='=')
|
||||||
}
|
buffer++;
|
||||||
if ( (strncasecmp(buffer,"ExpertMenus",11)==0)){
|
if ((strncasecmp(buffer,"TRUE",4)==0) || (strncasecmp(buffer,"YES",3)==0) || (strncasecmp(buffer,"ON",2)==0))
|
||||||
buffer+=11;
|
Pdh.flags |= PDQ_XPERT;
|
||||||
while (isspace(buffer[0]) || buffer[0]=='=')
|
continue;
|
||||||
buffer++;
|
}
|
||||||
if ((strncasecmp(buffer,"TRUE",4)==0)
|
if (strncasecmp(buffer,"SkipUserMsgs",12)==0){
|
||||||
|| (strncasecmp(buffer,"YES",3)==0)
|
buffer+=12;
|
||||||
|| (strncasecmp(buffer,"ON",2)==0))
|
while (isspace(buffer[0]) || buffer[0]=='=')
|
||||||
Pdh.flags |= PDQ_XPERT;
|
buffer++;
|
||||||
continue;
|
if ((strncasecmp(buffer,"TRUE",4)==0) || (strncasecmp(buffer,"YES",3)==0) || (strncasecmp(buffer,"ON",2)==0))
|
||||||
}
|
Pdh.flags |= PDQ_NOT_MY_MAIL;
|
||||||
if (strncasecmp(buffer,"SkipUserMsgs",12)==0){
|
continue;
|
||||||
buffer+=12;
|
}
|
||||||
while (isspace(buffer[0]) || buffer[0]=='=')
|
if (strncasecmp(buffer,"DoorGraphics",12)==0){
|
||||||
buffer++;
|
buffer+=12;
|
||||||
if ((strncasecmp(buffer,"TRUE",4)==0)
|
while (isspace(buffer[0]) || buffer[0]=='=')
|
||||||
|| (strncasecmp(buffer,"YES",3)==0)
|
buffer++;
|
||||||
|| (strncasecmp(buffer,"ON",2)==0))
|
if ((strncasecmp(buffer,"TRUE",4)==0) || (strncasecmp(buffer,"YES",3)==0) || (strncasecmp(buffer,"ON",2)==0))
|
||||||
Pdh.flags |= PDQ_NOT_MY_MAIL;
|
Pdh.flags |= PDQ_GRAPHICS;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (strncasecmp(buffer,"DoorGraphics",12)==0){
|
if (strncasecmp(buffer,"Password",8)==0){
|
||||||
buffer+=12;
|
buffer+=8;
|
||||||
while (isspace(buffer[0]) || buffer[0]=='=')
|
while (isspace(buffer[0]) || buffer[0]=='=')
|
||||||
buffer++;
|
buffer++;
|
||||||
if ((strncasecmp(buffer,"TRUE",4)==0)
|
Pdh.passtype=0;
|
||||||
|| (strncasecmp(buffer,"YES",3)==0)
|
if(strncasecmp(buffer,"Door",4)==0)
|
||||||
|| (strncasecmp(buffer,"ON",2)==0))
|
Pdh.passtype=1;
|
||||||
Pdh.flags |= PDQ_GRAPHICS;
|
if(strncasecmp(buffer,"Reader",6)==0)
|
||||||
continue;
|
Pdh.passtype=2;
|
||||||
}
|
if(strncasecmp(buffer,"Both",4)==0)
|
||||||
if (strncasecmp(buffer,"Password",8)==0){
|
Pdh.passtype=3;
|
||||||
buffer+=8;
|
while(buffer[0] != ',' && buffer[0] !='\0')
|
||||||
while (isspace(buffer[0]) || buffer[0]=='=')
|
buffer++;
|
||||||
buffer++;
|
if ( Pdh.passtype != 0 ){
|
||||||
Pdh.passtype=0;
|
while (isspace(buffer[0]));
|
||||||
if(strncasecmp(buffer,"Door",4)==0)
|
buffer++;
|
||||||
Pdh.passtype=1;
|
strncpy(Pdh.password,buffer,20);
|
||||||
if(strncasecmp(buffer,"Reader",6)==0)
|
|
||||||
Pdh.passtype=2;
|
|
||||||
if(strncasecmp(buffer,"Both",4)==0)
|
|
||||||
Pdh.passtype=3;
|
|
||||||
while(buffer[0] != ',' && buffer[0] !='\0')
|
|
||||||
buffer++;
|
|
||||||
if ( Pdh.passtype != 0 ){
|
|
||||||
while (isspace(buffer[0]));
|
|
||||||
buffer++;
|
|
||||||
strncpy(Pdh.password,buffer,20);
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (strncasecmp(buffer,"Filter",6)==0){
|
|
||||||
buffer+=6;
|
|
||||||
while (isspace(buffer[0]) || buffer[0]=='=')
|
|
||||||
buffer++;
|
|
||||||
strncpy(Pdh.filters[OLC_filter],buffer,20);
|
|
||||||
OLC_filter++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (strncasecmp(buffer,"Keyword",7)==0){
|
|
||||||
buffer+=7;
|
|
||||||
while (isspace(buffer[0]) || buffer[0]=='=')
|
|
||||||
buffer++;
|
|
||||||
strncpy(Pdh.keywords[OLC_keyword],buffer,20);
|
|
||||||
OLC_keyword++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (strncasecmp(buffer,"Macro=",5)==0){
|
|
||||||
buffer+=5;
|
|
||||||
while (isspace(buffer[0]) || buffer[0]=='=')
|
|
||||||
buffer++;
|
|
||||||
strncpy(Pdh.macros[OLC_macro],buffer,20);
|
|
||||||
OLC_macro++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (strncasecmp(buffer,"Scan",4) == 0){
|
|
||||||
buffer+=4;
|
|
||||||
while (isspace(buffer[0]) || buffer[0]=='=')
|
|
||||||
buffer++;
|
|
||||||
if ((strncasecmp(buffer,"All",3)==0)
|
|
||||||
|| (strncasecmp(buffer,"Pers",4)==0)){
|
|
||||||
if ( HEAD_written == FALSE ){
|
|
||||||
fwrite(&Pdh,sizeof(PDQ_HEADER),1,tp);
|
|
||||||
Syslog('m', "Writting PDQ header...");
|
|
||||||
HEAD_written = TRUE;
|
|
||||||
}
|
|
||||||
if (strlen(Pdr.echotag) > 0){
|
|
||||||
fwrite(&Pdr,sizeof(PDQ_REC),1,tp);
|
|
||||||
Syslog('m', "Writting PDQ record: %s", Pdr.echotag);
|
|
||||||
memset(&Pdr,0,sizeof(PDQ_REC));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
fclose(tp);
|
continue;
|
||||||
}else{
|
}
|
||||||
WriteError("Unable to convert .OLC file to %s/%s/%s.PDQ", CFG.bbs_usersdir, exitinfo.Name, CFG.bbsid);
|
if (strncasecmp(buffer,"Filter",6)==0){
|
||||||
Syslog('?', "Unable to convert .OLC file to %s/%s/%s.PDQ",CFG.bbs_usersdir, exitinfo.Name, CFG.bbsid);
|
buffer+=6;
|
||||||
}
|
while (isspace(buffer[0]) || buffer[0]=='=')
|
||||||
fclose(iol);
|
buffer++;
|
||||||
sprintf(temp, "%s/%s/%s.OLC", CFG.bbs_usersdir, exitinfo.Name, CFG.bbsid);
|
strncpy(Pdh.filters[OLC_filter],buffer,20);
|
||||||
unlink(temp);
|
OLC_filter++;
|
||||||
temp = tl(temp);
|
continue;
|
||||||
unlink(temp);
|
}
|
||||||
}
|
if (strncasecmp(buffer,"Keyword",7)==0){
|
||||||
|
buffer+=7;
|
||||||
|
while (isspace(buffer[0]) || buffer[0]=='=')
|
||||||
|
buffer++;
|
||||||
|
strncpy(Pdh.keywords[OLC_keyword],buffer,20);
|
||||||
|
OLC_keyword++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (strncasecmp(buffer,"Macro=",5)==0){
|
||||||
|
buffer+=5;
|
||||||
|
while (isspace(buffer[0]) || buffer[0]=='=')
|
||||||
|
buffer++;
|
||||||
|
strncpy(Pdh.macros[OLC_macro],buffer,20);
|
||||||
|
OLC_macro++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (strncasecmp(buffer,"Scan",4) == 0){
|
||||||
|
buffer+=4;
|
||||||
|
while (isspace(buffer[0]) || buffer[0]=='=')
|
||||||
|
buffer++;
|
||||||
|
if ((strncasecmp(buffer,"All",3)==0) || (strncasecmp(buffer,"Pers",4)==0)){
|
||||||
|
if ( HEAD_written == FALSE ){
|
||||||
|
fwrite(&Pdh,sizeof(PDQ_HEADER),1,tp);
|
||||||
|
Syslog('m', "Writting PDQ header...");
|
||||||
|
HEAD_written = TRUE;
|
||||||
|
}
|
||||||
|
if (strlen(Pdr.echotag) > 0){
|
||||||
|
fwrite(&Pdr,sizeof(PDQ_REC),1,tp);
|
||||||
|
Syslog('m', "Writting PDQ record: %s", Pdr.echotag);
|
||||||
|
memset(&Pdr,0,sizeof(PDQ_REC));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fclose(tp);
|
||||||
|
} else {
|
||||||
|
WriteError("Unable to convert .OLC file to %s/%s/%s.PDQ", CFG.bbs_usersdir, exitinfo.Name, CFG.bbsid);
|
||||||
|
Syslog('?', "Unable to convert .OLC file to %s/%s/%s.PDQ",CFG.bbs_usersdir, exitinfo.Name, CFG.bbsid);
|
||||||
|
}
|
||||||
|
fclose(iol);
|
||||||
|
sprintf(temp, "%s/%s/%s.OLC", CFG.bbs_usersdir, exitinfo.Name, CFG.bbsid);
|
||||||
|
unlink(temp);
|
||||||
|
temp = tl(temp);
|
||||||
|
unlink(temp);
|
||||||
|
}
|
||||||
|
|
||||||
sprintf(temp, "%s/%s/%s.PDQ", CFG.bbs_usersdir, exitinfo.Name, CFG.bbsid);
|
sprintf(temp, "%s/%s/%s.PDQ", CFG.bbs_usersdir, exitinfo.Name, CFG.bbsid);
|
||||||
if ((tp = fopen(temp, "r")) == NULL) {
|
if ((tp = fopen(temp, "r")) == NULL) {
|
||||||
temp = tl(temp);
|
temp = tl(temp);
|
||||||
|
Reference in New Issue
Block a user