Fossil

Check-in [d7d106227f]
Login

Check-in [d7d106227f]

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Amend [9919dfbbaa]: fix a comment typo and rename a variable.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: d7d106227fad4ae365daa9c309f23daeb231bc0f40e67135dc335cb7e75381d6
User & Date: florian 2024-10-15 05:36:00
Context
2024-10-16
07:28
Create new branch named "bv-corrections01" ... (check-in: 6809736e33 user: brickviking tags: bv-corrections01)
2024-10-15
15:03
Harden the synchronization process against sending or receiving settings flagged as sensitive. Mark the th1-setup setting as sensitive because it can contain not only th1, but also arbitrary TCL code if fossil is configured using --with-tcl. This addresses [forum:6179500deadf6ec7 | forum post 6179500dead]. (Edit: this was actually a merge from [6a114c48], but user error on my part lost that link.) ... (check-in: 2ff87d4e0f user: stephan tags: trunk)
05:36
Amend [9919dfbbaa]: fix a comment typo and rename a variable. ... (check-in: d7d106227f user: florian tags: trunk)
05:25
Fix a crash if the test-file-environment command is called from outside a check-out. ... (check-in: 3bb9cbe8cc user: florian tags: trunk)
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to src/winfile.c.

298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
** lstrcmpiW() function on Windows XP.
*/
int win32_compare_filenames_nocase(
  const wchar_t *fn1,
  const wchar_t *fn2
){
  static FARPROC fnCompareStringOrdinal;
  static int try_fnCompareStringOrdinal;
  if( !try_fnCompareStringOrdinal ){
    fnCompareStringOrdinal =
      GetProcAddress(GetModuleHandleA("kernel32"),"CompareStringOrdinal");
    try_fnCompareStringOrdinal = 1;
  }
  if( fnCompareStringOrdinal ){
    return -2 + fnCompareStringOrdinal(fn1,-1,fn2,-1,1);
  }else{
    return lstrcmpiW(fn1,fn2);
  }
}

/* Helper macros to deal with directory separators. */
#define IS_DIRSEP(s,i) ( s[i]=='/' || s[i]=='\\' )
#define NEXT_DIRSEP(s,i) while( s[i] && s[i]!='/' && s[i]!='\\' ){i++;}

/* The Win32 version of file_case_preferred_name() from file.c, which is able to
** find case-preserved file names containing non-ASCII characters. The result is
** allocated by fossil_malloc() and *should* be free'd by tha caller. While this
** function usually gets canonicalized paths, it is able to handle any input and
** figure out more cases than the original:
**
**    fossil test-case-filename C:/ .//..\WINDOWS\/.//.\SYSTEM32\.\NOTEPAD.EXE
**    → Original:   .//..\WINDOWS\/.//.\SYSTEM32\.\NOTEPAD.EXE
**    → Modified:   .//..\Windows\/.//.\System32\.\notepad.exe
**







|
|


|














|







298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
** lstrcmpiW() function on Windows XP.
*/
int win32_compare_filenames_nocase(
  const wchar_t *fn1,
  const wchar_t *fn2
){
  static FARPROC fnCompareStringOrdinal;
  static int tried_CompareStringOrdinal;
  if( !tried_CompareStringOrdinal ){
    fnCompareStringOrdinal =
      GetProcAddress(GetModuleHandleA("kernel32"),"CompareStringOrdinal");
    tried_CompareStringOrdinal = 1;
  }
  if( fnCompareStringOrdinal ){
    return -2 + fnCompareStringOrdinal(fn1,-1,fn2,-1,1);
  }else{
    return lstrcmpiW(fn1,fn2);
  }
}

/* Helper macros to deal with directory separators. */
#define IS_DIRSEP(s,i) ( s[i]=='/' || s[i]=='\\' )
#define NEXT_DIRSEP(s,i) while( s[i] && s[i]!='/' && s[i]!='\\' ){i++;}

/* The Win32 version of file_case_preferred_name() from file.c, which is able to
** find case-preserved file names containing non-ASCII characters. The result is
** allocated by fossil_malloc() and *should* be free'd by the caller. While this
** function usually gets canonicalized paths, it is able to handle any input and
** figure out more cases than the original:
**
**    fossil test-case-filename C:/ .//..\WINDOWS\/.//.\SYSTEM32\.\NOTEPAD.EXE
**    → Original:   .//..\WINDOWS\/.//.\SYSTEM32\.\NOTEPAD.EXE
**    → Modified:   .//..\Windows\/.//.\System32\.\notepad.exe
**