| 2443 | return TRUE; |
| 2444 | } |
| 2445 | BOOL HL_Open_File_by_prefix ( LPCWSTR pref , LPCWSTR dir , LPWSTR out ) |
| 2446 | { |
| 2447 | WIN32_FIND_DATA wfd; |
| 2448 | WCHAR path[MAX_PATH]; |
| 2449 | WCHAR temp[MAX_PATH]; |
| 2450 | WCHAR _in[MAX_PATH]; |
| 2451 | WCHAR* in = _in; |
| 2452 | HANDLE res; |
| 2453 | int len; |
| 2454 | lstrcpy(_in, pref); |
| 2455 | // |
| 2456 | while ((len = lstrlen(in) - 1) >= 0 ) { |
| 2457 | if (L' ' == in[len]) { |
| 2458 | in[len] = 0; |
| 2459 | } |
| 2460 | else if (L' ' == in[0]){ |
| 2461 | ++in; |
| 2462 | } |
| 2463 | else { |
| 2464 | break; |
| 2465 | } |
| 2466 | } |
| 2467 | // |
| 2468 | |
| 2469 | if (!PathIsRelative(in)) { |
| 2470 | lstrcpy(out, in); |
| 2471 | return TRUE; |
| 2472 | } |
| 2473 | |
| 2474 | lstrcpy ( path, dir ); |
| 2475 | lstrcat ( path, L"\\" ); |
| 2476 | lstrcat(path, in); |
| 2477 | lstrcat ( path, L"*" ); |
| 2478 | res = FindFirstFile ( path, &wfd ); |
| 2479 | HL_TRACE ( "search file by mask '%S'" , path ); |
| 2480 | if ( INVALID_HANDLE_VALUE == res ) { |
| 2481 | return FALSE; |
| 2482 | } |
| 2483 | // |
| 2484 | temp[0] = 0; |
| 2485 | // |
| 2486 | do { |
| 2487 | if ( 0 == ( wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) ) { |
| 2488 | HL_TRACE ( "file: '%S'" , wfd.cFileName ); |
| 2489 | // |
| 2490 | if (wcsnicmp(wfd.cFileName, in, 1)){ |
| 2491 | HL_TRACE("skip"); |
| 2492 | continue; |
| 2493 | } |
| 2494 | // |
| 2495 | if (0 == temp[0] || HL_Compare_files(temp, wfd.cFileName) > 0) { |
| 2496 | lstrcpy(temp, wfd.cFileName); |
| 2497 | } |
| 2498 | } |
| 2499 | } while ( FindNextFile ( res , &wfd ) != 0 ); |
| 2500 | FindClose ( res ); |
| 2501 | // |
| 2502 | if (temp[0]) { |
no test coverage detected