MCPcopy Create free account
hub / github.com/ProgerXP/Notepad2e / HL_Open_File_by_prefix

Function HL_Open_File_by_prefix

src/Helpers.c:2445–2512  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2443 return TRUE;
2444}
2445BOOL 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]) {

Callers 1

HL_OFN__hook_procFunction · 0.85

Calls 1

HL_Compare_filesFunction · 0.85

Tested by

no test coverage detected