• src/smblib/tests/GNUmakefile smbfiletest.c smbidxtest.csrc/sbbs3/file.

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Tue Sep 29 17:07:32 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/1c50da7f2b8fec13c9329826
    Added Files:
    src/smblib/tests/GNUmakefile smbfiletest.c smbidxtest.c
    Modified Files:
    src/sbbs3/file.cpp sbbs.h
    Log Message:
    Keep a file's auxdata when editing its extended description

    Editing a file's extended description in the terminal server replaced the record's data through editmsg(), which only knows the message layout. It
    freed both data fields, wrote just the new description, and left the
    TEXT_TAIL field in the header: for a record with a description, the tail
    then pointed past the new text into free space or another record's data;
    for a record with only auxdata, the tail was overwritten and the auxdata (including the stored archive content listing) was lost.

    editfileinfo() now calls a new editfileextdesc(), which runs the same
    editor on the description, reads the record's stored auxdata back from
    disk (the file lister loads records without it), and replaces both fields
    with smb_updatefile(). The record's index position is re-read first, as smb_updatemsg() does, since other nodes may have changed the index since
    the listing was loaded. smb_getmsgtxt() appends a CRLF to each data
    field's text, so that one CRLF is dropped from the auxdata before it is
    written back; otherwise every edit would add one.

    Add src/smblib/tests/, with a GNUmakefile ("make" builds the tests,
    "make test" runs them), smbfiletest covering both record layouts, and smbidxtest for the index auto-repair in smb_new_msghdr().

    Fixes #1269

    Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net