Changeset 3682 for trunk/src/kmk/kmkbuiltin
- Timestamp:
- Aug 13, 2025, 1:34:19 AM (3 months ago)
- Location:
- trunk/src/kmk/kmkbuiltin
- Files:
-
- 3 edited
-
mscfakes.c (modified) (3 diffs)
-
mscfakes.h (modified) (3 diffs)
-
rm.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kmk/kmkbuiltin/mscfakes.c
r3636 r3682 44 44 #undef utimes 45 45 #undef lutimes 46 #include "nt/ntmkdirat.h" 47 #undef mkdir 48 #undef mkdirat 46 49 47 50 #include "console.h" … … 314 317 int mkdir_msc(const char *path, mode_t mode) 315 318 { 319 #if 0 316 320 int rc = (mkdir)(path); 317 321 if (rc) … … 328 332 } 329 333 return rc; 334 #else 335 return birdMkDir(path, mode); 336 #endif 330 337 } 331 338 -
trunk/src/kmk/kmkbuiltin/mscfakes.h
r3636 r3682 50 50 #include <stdio.h> /* unlink for UCRT */ 51 51 #include "nt/ntstat.h" 52 #include "nt/ntunlink.h" 52 #include "nt/ntunlink.h" /* redefines both unlink and rmdir */ 53 53 #ifdef MSC_DO_64_BIT_IO 54 54 # if _MSC_VER >= 1400 /* We want 64-bit file lengths here when possible. */ … … 61 61 62 62 #undef PATH_MAX 63 #define PATH_MAX _MAX_PATH 63 /*#define PATH_MAX _MAX_PATH */ 64 #define PATH_MAX 1024 64 65 #undef MAXPATHLEN 65 #define MAXPATHLEN _MAX_PATH66 #define MAXPATHLEN PATH_MAX 66 67 67 68 #define EX_OK 0 … … 146 147 #define readlink(link, buf, size) -1 147 148 #define reallocf(old, size) realloc(old, size) 148 int rmdir_msc(const char *path);149 #define rmdir(path) rmdir_msc(path) 149 /*int rmdir_msc(const char *path); 150 #define rmdir(path) rmdir_msc(path) */ 150 151 intmax_t strtoimax(const char *nptr, char **endptr, int base); 151 152 uintmax_t strtoumax(const char *nptr, char **endptr, int base); -
trunk/src/kmk/kmkbuiltin/rm.c
r3618 r3682 82 82 # include "mscfakes.h" 83 83 # endif 84 # include "nt/ntunlink.h" 85 /* Use the special unlink implementation to do rmdir too. */ 86 # undef rmdir 87 # define rmdir(a_pszPath) birdUnlinkForced(a_pszPath) 84 # include "nt/ntunlink.h" /* redefines both unlink & rmdir */ 88 85 #endif 89 86 #if defined(__OS2__) || defined(_MSC_VER) … … 430 427 #ifdef KBUILD_OS_WINDOWS 431 428 if (p->fts_parent->fts_dirfd != NT_FTS_INVALID_HANDLE_VALUE) { 432 rval = bird UnlinkForcedEx(p->fts_parent->fts_dirfd, p->fts_name);429 rval = birdRmDirForcedEx(p->fts_parent->fts_dirfd, p->fts_name); 433 430 } else { 434 rval = bird UnlinkForced(p->fts_accpath);431 rval = birdRmDirForced(p->fts_accpath); 435 432 } 436 433 #else … … 480 477 rval = birdUnlinkForcedFastEx(p->fts_parent->fts_dirfd, p->fts_name); 481 478 } else { /* NtDeleteFile doesn't work on directory links, so slow symlink deletion: */ 482 rval = birdUnlinkForcedEx(p->fts_parent->fts_dirfd, p->fts_name); 479 if (p->fts_stat.st_isdirsymlink) { 480 rval = birdRmDirForcedEx(p->fts_parent->fts_dirfd, p->fts_name); 481 } else { 482 rval = birdUnlinkForcedEx(p->fts_parent->fts_dirfd, p->fts_name); 483 } 483 484 } 484 485 } else { … … 486 487 rval = birdUnlinkForcedFast(p->fts_accpath); 487 488 } else { /* NtDeleteFile doesn't work on directory links, so slow symlink deletion: */ 488 rval = birdUnlinkForced(p->fts_accpath); 489 if (p->fts_stat.st_isdirsymlink) { 490 rval = birdRmDirForced(p->fts_accpath); 491 } else { 492 rval = birdUnlinkForced(p->fts_accpath); 493 } 489 494 } 490 495 } … … 586 591 operation = "unlink"; 587 592 #else 588 if (pThis->fUseNtDeleteFile) { 593 /*if (sb.st_isdirsymlink) { 594 rval = birdRmDirForced(f); 595 operation = "rmdir"; 596 } else*/ if (pThis->fUseNtDeleteFile /*&& S_ISREG(sb.st_mode) && !sb.st_isdirsymlink*/) { 589 597 rval = birdUnlinkForcedFast(f); 590 598 operation = "NtDeleteFile";
Note:
See TracChangeset
for help on using the changeset viewer.
