Changeset 2879 for trunk/src/kmk
- Timestamp:
- Sep 5, 2016, 10:14:21 PM (9 years ago)
- Location:
- trunk/src/kmk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kmk/dir-nt-bird.c
r2868 r2879 71 71 * Global Variables * 72 72 *********************************************************************************************************************************/ 73 PKFSCACHE g_pFsCache = NULL; 73 /** The cache.*/ 74 PKFSCACHE g_pFsCache = NULL; 75 /** Number of times dir_cache_invalid_missing was called. */ 76 static KU32 g_cInvalidates = 0; 74 77 75 78 … … 445 448 else 446 449 { 447 if ( pPathObj->cchName + 1 < cbFull)450 if ((size_t)pPathObj->cchName + 1 < cbFull) 448 451 { 449 452 memcpy(pszFull, pPathObj->pszName, pPathObj->cchName); … … 474 477 int stat_only_mtime(const char *pszPath, struct stat *pStat) 475 478 { 476 KFSLOOKUPERROR enmError; 477 PKFSOBJ pPathObj = kFsCacheLookupA(g_pFsCache, pszPath, &enmError); 478 if (pPathObj) 479 { 480 if (pPathObj->bObjType != KFSOBJ_TYPE_MISSING) 481 { 482 kHlpAssert(pPathObj->fHaveStats); /* currently always true. */ 483 pStat->st_mtime = pPathObj->Stats.st_mtime; 479 /* Currently a little expensive, so just hit the file system once the 480 jobs starts comming in. */ 481 if (g_cInvalidates == 0) 482 { 483 KFSLOOKUPERROR enmError; 484 PKFSOBJ pPathObj = kFsCacheLookupA(g_pFsCache, pszPath, &enmError); 485 if (pPathObj) 486 { 487 if (pPathObj->bObjType != KFSOBJ_TYPE_MISSING) 488 { 489 kHlpAssert(pPathObj->fHaveStats); /* currently always true. */ 490 pStat->st_mtime = pPathObj->Stats.st_mtime; 491 kFsCacheObjRelease(g_pFsCache, pPathObj); 492 return 0; 493 } 494 484 495 kFsCacheObjRelease(g_pFsCache, pPathObj); 485 return 0; 486 } 487 488 kFsCacheObjRelease(g_pFsCache, pPathObj); 489 errno = ENOENT; 490 } 491 else 492 errno = enmError == KFSLOOKUPERROR_NOT_DIR 493 || enmError == KFSLOOKUPERROR_PATH_COMP_NOT_DIR 494 ? ENOTDIR : ENOENT; 495 return -1; 496 errno = ENOENT; 497 } 498 else 499 errno = enmError == KFSLOOKUPERROR_NOT_DIR 500 || enmError == KFSLOOKUPERROR_PATH_COMP_NOT_DIR 501 ? ENOTDIR : ENOENT; 502 return -1; 503 } 504 return birdStatModTimeOnly(pszPath, &pStat->st_mtim, 1 /*fFollowLink*/); 496 505 } 497 506 … … 504 513 void dir_cache_invalid_missing(void) 505 514 { 515 g_cInvalidates++; 506 516 kFsCacheInvalidateAll(g_pFsCache); 507 517 } -
trunk/src/kmk/kmkbuiltin/kSubmit.c
r2877 r2879 791 791 * @param pWorker The worker instance. 792 792 * @param dwErr The error code. 793 */ 794 static int kSubmitWinReadFailed(PWORKERINSTANCE pWorker, DWORD dwErr) 793 * @param pszWhere Where it failed. 794 */ 795 static int kSubmitWinReadFailed(PWORKERINSTANCE pWorker, DWORD dwErr, const char *pszWhere) 795 796 { 796 797 DWORD dwExitCode; 797 798 798 799 if (pWorker->cbResultRead == 0) 799 errx(1, " ReadFile failed: %u", dwErr);800 errx(1, "%s/ReadFile failed: %u", pszWhere, dwErr); 800 801 else 801 errx(1, " ReadFile failed: %u (read %u bytes)", dwErr, pWorker->cbResultRead);802 errx(1, "%s/ReadFile failed: %u (read %u bytes)", pszWhere, dwErr, pWorker->cbResultRead); 802 803 assert(dwErr != 0); 803 804 … … 824 825 * @param pWorker The worker instance. 825 826 */ 826 static int kSubmitReadMoreResultWin(PWORKERINSTANCE pWorker )827 static int kSubmitReadMoreResultWin(PWORKERINSTANCE pWorker, const char *pszWhere) 827 828 { 828 829 /* … … 847 848 if (dwErr == ERROR_IO_PENDING) 848 849 return -1; 849 return kSubmitWinReadFailed(pWorker, dwErr );850 return kSubmitWinReadFailed(pWorker, dwErr, pszWhere); 850 851 } 851 852 … … 886 887 */ 887 888 l_again: 888 rc = kSubmitReadMoreResultWin(pWorker );889 rc = kSubmitReadMoreResultWin(pWorker, "kSubmitMarkActive"); 889 890 if (rc == -1) 890 891 { … … 952 953 while (pWorker->cbResultRead < sizeof(pWorker->Result)) 953 954 { 954 int rc = kSubmitReadMoreResultWin(pWorker );955 int rc = kSubmitReadMoreResultWin(pWorker, "kSubmitSubProcGetResult/more"); 955 956 if (rc == -1) 956 957 return -1; … … 962 963 { 963 964 DWORD dwErr = GetLastError(); 964 kSubmitWinReadFailed(pWorker, dwErr );965 kSubmitWinReadFailed(pWorker, dwErr, "kSubmitSubProcGetResult/result"); 965 966 } 966 967
Note:
See TracChangeset
for help on using the changeset viewer.