https://gitlab.synchro.net/main/sbbs/-/commit/1af0752917c8a7c0d331582d
Modified Files:
src/sbbs3/zmodem.c
Log Message:
Handle rx'd hex headers terminated with "\x8D\x8A" (i.e. "\r\n" with parity)
Although this sequence doesn't really make sense since there's an odd number
of set bits in 0x0D and an even number of set bits in 0x0A, setting the
parity flag in each byte is just wrong, this is how Tera Term 5.5.0 terminates its transmitted ZMODEM hex headers:
ZShHdr() from Tera Term's zmodem.c:
zv->PktOut[zv->PktOutCount] = 0x8D;
zv->PktOutCount++;
zv->PktOut[zv->PktOutCount] = 0x8A;
zv->PktOutCount++;
Although this code does appear "inspired" by Chuck's rz/sz source, they failed to duplicate this logic from Chuck's zshhdr() from zm.c (with added comments):
s[len++]=015; // 0x0D
s[len++]=0212; // 0x0A
Chuck's zrhhdr() function handled this CR parity-oddity on the receive size (using octal constants as he did):
switch ( c = READLINE_PF(1)) {
case 0215: // 0x8D
/* **** FALL THRU TO **** */
case 015: // 0x0D
/* Throw away possible cr/lf */
READLINE_PF(1);
break;
}
... so we'll do so too for bug-compatibility with Chuck Forsberg (RIP) and
T. Teranishi.
This resolves issue #595
Incremented version of this file to 2.1
--- SBBSecho 3.29-Linux
* Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)