• src/smblib/smbfile.c

    From Rob Swindell (on Windows 11)@1:103/705 to Git commit to main/sbbs/master on Sun Dec 24 21:51:36 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/43575170940c3ff3a9017eee
    Modified Files:
    src/smblib/smbfile.c
    Log Message:
    Reset import time (to current date/time) in smb_renewfile()

    Don't allow smb_removefile() to corrupt a filebase if passed an uninitialized (not fully load()'d) file_t*. Doesn't fix a bug, just some extra defensive programming here.

    Addressing problems reported by echicken
    --- SBBSecho 3.20-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Rob Swindell (on Windows 11)@1:103/705 to Git commit to main/sbbs/master on Tue Dec 26 16:04:06 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/46c0eb0de29bab7607bfb0ef
    Modified Files:
    src/smblib/smbfile.c
    Log Message:
    Fix CID 471656 in smb_addfile_withlist()

    No one's using this function currently (and may never).

    It was used back when I was putting archive contents in .ini format in the files' metadata (now auxdata).
    --- SBBSecho 3.20-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Rob Swindell (on Windows 11)@1:103/705 to Git commit to main/sbbs/master on Tue Sep 17 12:06:15 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/45363fee6f6d688671faeee0
    Modified Files:
    src/smblib/smbfile.c
    Log Message:
    NUL-terminate the SMB fileidxrec_t.name field, just in case

    The terminating NUL is actually part of the index record, but with file corruption, it's technically possible the NUL could be missing.
    Fixes CID 509552

    Use strnicmp() insted of stricmp() in smb_removefile()
    Fixes CID 509551
    --- SBBSecho 3.20-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Rob Swindell (on Debian Linux)@1:103/705 to Git commit to main/sbbs/master on Tue Sep 29 17:07:32 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/662b2f6d1a71988779d94f46
    Modified Files:
    src/smblib/smbfile.c
    Log Message:
    smb_removefile(): remove only the file's own index record

    Removing a file dropped every index record whose name matched the file's, ignoring case, not just its own. In a base holding names that differ only
    in case (e.g. a.txt and A.txt), removing either one also dropped the
    other's index record, orphaning its header and data: still active in the
    base, but no longer findable or listed.

    Identify the record by the number in the index record the file was loaded
    from. The header carries the same number, but nothing checks the two agree
    on read, and a header whose number no longer matched would leave the
    file's index record in place, pointing at a header already marked deleted.

    Co-Authored-By: Claude Opus 5.5 <[email protected]>
    --- SBBSecho 3.37-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Rob Swindell (on Debian Linux)@1:103/705 to Git commit to main/sbbs/master on Tue Sep 29 17:07:32 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/f11e0cc003d712457ab29917
    Modified Files:
    src/smblib/smbfile.c
    Log Message:
    smb_findfile(): prefer an exact-case name match

    A file name lookup returned the first index record matching the name
    while ignoring case. When a base holds names that differ only in case,
    the later of them could never be found by name: FileBase.get(), update(),
    and remove() all reached the earlier file instead, whatever case the
    caller gave.

    Return an exact-case match when there is one, and otherwise the first case-insensitive match as before. A lookup given the stored case still
    stops at the first match; one given a different case now reads the rest
    of the index, as a lookup of a name that isn't there already does.

    Co-Authored-By: Claude Opus 5.5 <[email protected]>
    --- SBBSecho 3.37-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)