https://gitlab.synchro.net/main/sbbs/-/commit/1700efd673bca1d65a7e6919
Modified Files:
src/sbbs3/file.cpp filedat.c filedat.h js_filebase.cpp src/smblib/smbfile.c smblib.h
Log Message:
File renames: check a new name against every other file, ignoring case
Renaming a file checked for a duplicate with smb_findfile(), which returns
the first case-insensitive match. For a rename that changes only the case,
that match may be the file being renamed: FileBase.update() then refused
the rename as a duplicate of itself, while the file-info editor skipped
the check for such renames. But a base can already hold names differing
only in case (renamed in by the since-fixed file-info editor check, or colliding in the 64-character index name), and there a case-only rename
in the editor could give two files an identical name. On a case-sensitive
file system the rename could also replace the other file on disk.
Add smb_findfile_other(), and a findfile_other() wrapper, which match a
name ignoring case against every file but the one being renamed, and use
them in both rename paths for any change of name, including case. A
case-only rename now succeeds unless another file already has that name.
Co-Authored-By: Claude Opus 5.5 <
noreply@anthropic.com>
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net