https://gitlab.synchro.net/main/sbbs/-/commit/2083238e5d015903563ddb11
Modified Files:
src/sbbs3/sftp.cpp
Log Message:
sftp server: long-description availability + UTF-8 conversion
Two changes to the sbbs3 SFTP server:
1. Mark filebase entries that have an extdesc. When SFTP_EXT_DESCS is
negotiated, get_filebase_attrs() scans the loaded message header's
dfield[] array for a TEXT_BODY with non-zero length and, if found,
adds a zero-length
descs@syncterm.net attribute extension to the
entry's fattr. Presence of the extension is the marker; clients
issue the existing descs@ EXTENDED request to fetch the actual
text. No additional disk I/O — file_detail_normal already loads
the dfield array.
2. Convert CP437 → UTF-8 at every user-visible string boundary that
crosses into an SFTP attr extension or extended reply. The SFTP
wire is UTF-8, but Synchronet stores filebase strings (lib lnames,
dir lnames, file short descriptions, extdescs) in CP437. Adds a
sftp_cp437_to_utf8_strdup() helper and applies it at the four
sites: get_lib_attrs, get_dir_attrs, get_filebase_attrs (lname
short-desc), and sftp_ext_descs (extended-reply long-desc).
minval='\x80' matches the convention in writemsg / sbbsecho /
msgtoqwk — ASCII passes through unchanged.
Co-Authored-By: Claude Opus 4.7 (1M context) <
noreply@anthropic.com>
---
■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net