https://gitlab.synchro.net/main/sbbs/-/commit/e14c0e14d471c7b7597756d5
Modified Files:
src/sbbs3/xmodem.c xmodem.h src/syncterm/term.c term.h
Log Message:
SyncTERM: batch uploads for YMODEM and ZMODEM (feature request 28)
Adds "ZMODEM Batch" and "YMODEM Batch" entries to the upload protocol
menu. Batch selections use filepick_multi() to tag any number of files
and transmit them in a single session using the protocol's native batch
framing — ZRQINIT/ZFILE×N/ZFIN for ZMODEM, block-0 headers plus a zero-filename terminator for YMODEM.
begin_upload() now shows the protocol menu before the file picker so
batch choices can route to filepick_multi() while single-file choices
stay on filepick() (which still allows typing a path). The existing zmodem_upload() / xmodem_upload() single-file signatures are unchanged,
so ripper.c's seven call sites keep working.
The new zmodem_batch_upload() and xmodem_batch_upload() helpers mirror sexyz.c:send_files(): pre-scan the file list for totals, loop over each
path, and fire the trailing ZFIN / YMODEM zero-filename block once at
the end. ZRQINIT is sent only for the first file of the session.
xmodem_t gains current_file_num and current_file_name fields, populated
by xmodem_send_file() (name) and by the batch / single-file / download
drivers (num / totals). xmodem_progress() gains a "File (n of N): name"
line gated on YMODEM mode, matching the one in zmodem_progress().
Adding that line exposed a latent scroll bug in xmodem_progress(): the
progress bar draws tww-4 characters in a tww-4 wide window, and writing
the final character advances the cursor past the last column. With
_wscroll = 1 (the default) and the new line pushing the bar into the
last row of the 5-row progress area, the wrap-advance scrolled the
window up and chewed off the File line. Now set _wscroll = 0 for the
redraw, matching zmodem_progress().
Co-Authored-By: Claude Opus 4.7 (1M context) <
[email protected]>
---
■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net