https://gitlab.synchro.net/main/sbbs/-/commit/222dbfc7f6fd9921e2754adc
Modified Files:
docs/v322_new.md src/sbbs3/sexyz.c
Log Message:
sexyz: expose the ZMODEM file-management option, and -e for ESCCTL
The engine has carried management_protect / management_clobber / management_newer for years and honors all three in zmodem_send_zfile(),
but nothing ever set them -- not sexyz, not SyncTERM -- so every send
fell through to the default and announced ZF1_ZMCRC ("transfer if
different CRC or length"). The protocol work was already done; only
the plumbing was missing.
Add SendManagement to sexyz.ini's [ZMODEM] section, taking crc (the
default, unchanged), clobber, protect or newer. One enumerated key
rather than three booleans, because the engine treats them as mutually exclusive in a fixed precedence and three independent flags could be
set to a combination that silently resolves to one of them.
On the command line, -p and -n are new and match lsz. -y keeps its
current meaning when receiving -- may we overwrite a file already here
-- and gains the matching one when sending: tell the receiver to
overwrite its own. That is exactly the lrzsz split, where lsz -y sets
ZMCLOB and lrz -y clobbers locally, and -y was previously documented as applying only to receives, so nothing that worked before changes. Note
the two act on different disks: receiving, the destination is this
machine; sending, it is the user's. Synchronet's own receiver ignores
a ZFILE's management field entirely, so this reaches third-party
terminals only.
Also add -e, the command-line equivalent of the existing
EscapeCtrlChars ini key, for links that do not pass control characters
intact. Verified against lrzsz: receiving with -e, the wire grows from 4,312,067 to 5,245,286 bytes for the same 4 MB file, within 0.005 % of
what lrz -e negotiates from the same sender, and verifies
byte-identical. It took the hex-header terminator fix in the preceding
commit to work at all.
When sending, -e is subject to the receiver's ZRINIT, which is what the
engine derives escape_ctrl_chars from, so the usage text says the
receiver's request governs rather than promising something the protocol
layer overrides. Sending with ESCCTL actually negotiated is broken for
a separate, pre-existing reason noted in the preceding commit.
Options parse after the ini is read, so a flag overrides the file;
verified with SendManagement=protect in the ini and -y on the command
line yielding "overwriting destination".
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net