comparison src/os_win32.c @ 2604:6a85219723b9 v7.3.027

updated for version 7.3.027 Problem: Opening a file on a network share is very slow. Solution: When fixing file name case append "\*" to directory, server and network share names. (David Anderson, John Beckett)
author Bram Moolenaar <bram@vim.org>
date Wed, 13 Oct 2010 20:37:41 +0200
parents f9bd6784f393
children fa5dee44df3f
comparison
equal deleted inserted replaced
2603:ac0458d9b9dd 2604:6a85219723b9
2306 fname_case( 2306 fname_case(
2307 char_u *name, 2307 char_u *name,
2308 int len) 2308 int len)
2309 { 2309 {
2310 char szTrueName[_MAX_PATH + 2]; 2310 char szTrueName[_MAX_PATH + 2];
2311 char szTrueNameTemp[_MAX_PATH + 2];
2311 char *ptrue, *ptruePrev; 2312 char *ptrue, *ptruePrev;
2312 char *porig, *porigPrev; 2313 char *porig, *porigPrev;
2313 int flen; 2314 int flen;
2314 WIN32_FIND_DATA fb; 2315 WIN32_FIND_DATA fb;
2315 HANDLE hFind; 2316 HANDLE hFind;
2316 int c; 2317 int c;
2318 int slen;
2317 2319
2318 flen = (int)STRLEN(name); 2320 flen = (int)STRLEN(name);
2319 if (flen == 0 || flen > _MAX_PATH) 2321 if (flen == 0 || flen > _MAX_PATH)
2320 return; 2322 return;
2321 2323
2356 #endif 2358 #endif
2357 *ptrue++ = *porig++; 2359 *ptrue++ = *porig++;
2358 } 2360 }
2359 *ptrue = NUL; 2361 *ptrue = NUL;
2360 2362
2363 /* To avoid a slow failure append "\*" when searching a directory,
2364 * server or network share. */
2365 STRCPY(szTrueNameTemp, szTrueName);
2366 slen = strlen(szTrueNameTemp);
2367 if (*porig == psepc && slen + 2 < _MAX_PATH)
2368 STRCPY(szTrueNameTemp + slen, "\\*");
2369
2361 /* Skip "", "." and "..". */ 2370 /* Skip "", "." and "..". */
2362 if (ptrue > ptruePrev 2371 if (ptrue > ptruePrev
2363 && (ptruePrev[0] != '.' 2372 && (ptruePrev[0] != '.'
2364 || (ptruePrev[1] != NUL 2373 || (ptruePrev[1] != NUL
2365 && (ptruePrev[1] != '.' || ptruePrev[2] != NUL))) 2374 && (ptruePrev[1] != '.' || ptruePrev[2] != NUL)))
2366 && (hFind = FindFirstFile(szTrueName, &fb)) 2375 && (hFind = FindFirstFile(szTrueNameTemp, &fb))
2367 != INVALID_HANDLE_VALUE) 2376 != INVALID_HANDLE_VALUE)
2368 { 2377 {
2369 c = *porig; 2378 c = *porig;
2370 *porig = NUL; 2379 *porig = NUL;
2371 2380