Fix for stone-age packets
This commit is contained in:
parent
59b0eae53f
commit
61ca58e6e9
14
ChangeLog
14
ChangeLog
@ -11,11 +11,25 @@ v0.37.4 10-May-2003
|
||||
Added check for inconv.h in configure script for UNIX98
|
||||
character set conversion.
|
||||
|
||||
common.a:
|
||||
The getheader function changed to support stone-age .pkt's.
|
||||
If the packet year has a Y2K bug, the year is fixed. This is
|
||||
only cosmetic for logging.
|
||||
If the zone info is missing, the zone is guessed from 2d aka
|
||||
matching against the system aka's. Then all mail in the .pkt
|
||||
file is also assumed to be in that zone if there is no zone
|
||||
info in the messages also.
|
||||
Guess what, these packets do still exist in Fidonet, it took
|
||||
5 years to find them! If you want to check, call 5:5/0
|
||||
|
||||
mbcico:
|
||||
The binkp transmitter does now escape the unsafe filename
|
||||
characters.
|
||||
The binkp receiver now does process escaped filenames.
|
||||
|
||||
mbfido:
|
||||
Stone age packet support, see common.a.
|
||||
|
||||
|
||||
v0.37.3 09-Apr-2003 - 10-May-2003
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
* Purpose ...............: Read fidonet .pkt header
|
||||
*
|
||||
*****************************************************************************
|
||||
* Copyright (C) 1997-2002
|
||||
* Copyright (C) 1997-2003
|
||||
*
|
||||
* Michiel Broek FIDO: 2:280/2802
|
||||
* Beekmansbos 10
|
||||
@ -84,6 +84,14 @@ int getheader(faddr *f, faddr *t, FILE *pkt, char *pname)
|
||||
t->zone = (buffer[0x25] << 8) + buffer[0x24];
|
||||
|
||||
year = (buffer[0x05] << 8) + buffer[0x04];
|
||||
/*
|
||||
* Check for Y2K bugs, if there are any this is not important,
|
||||
* it is just for logging!
|
||||
*/
|
||||
if (year < 50)
|
||||
year = year + 2000;
|
||||
else if (year < 1900)
|
||||
year = year + 1900;
|
||||
month = (buffer[0x07] << 8) + buffer[0x06] + 1;
|
||||
day = (buffer[0x09] << 8) + buffer[0x08];
|
||||
hour = (buffer[0x0b] << 8) + buffer[0x0a];
|
||||
@ -106,8 +114,28 @@ int getheader(faddr *f, faddr *t, FILE *pkt, char *pname)
|
||||
t->zone = buffer[0x30] + (buffer[0x31] << 8);
|
||||
f->point = buffer[0x32] + (buffer[0x33] << 8);
|
||||
t->point = buffer[0x34] + (buffer[0x35] << 8);
|
||||
} else {
|
||||
/*
|
||||
* Stone age @%#$@
|
||||
*/
|
||||
f->zone = buffer[0x22] + (buffer[0x23] << 8);
|
||||
t->zone = buffer[0x24] + (buffer[0x25] << 8);
|
||||
if ((f->zone == 0) && (t->zone == 0)) {
|
||||
/*
|
||||
* No zone info, since the packet should be for us, guess the zone
|
||||
* against our aka's from the setup using a 2d test.
|
||||
*/
|
||||
for (i = 0; i < 40; i++) {
|
||||
if ((CFG.akavalid[i]) && (t->net == CFG.aka[i].net) && (t->node == CFG.aka[i].node)) {
|
||||
t->zone = CFG.aka[i].zone;
|
||||
f->zone = CFG.aka[i].zone;
|
||||
Syslog('!', "Warning, zone %d assumed", CFG.aka[i].zone);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
pktpwd[i] = buffer[0x1a + i];
|
||||
pktpwd[8]='\0';
|
||||
|
Reference in New Issue
Block a user