| 2412 | */ |
| 2413 | |
| 2414 | TFileStream * FileStream_OpenFile( |
| 2415 | const TCHAR * szFileName, |
| 2416 | DWORD dwStreamFlags) |
| 2417 | { |
| 2418 | DWORD dwProvider = dwStreamFlags & STREAM_PROVIDERS_MASK; |
| 2419 | size_t nPrefixLength = FileStream_Prefix(szFileName, &dwProvider); |
| 2420 | |
| 2421 | // Re-assemble the stream flags |
| 2422 | dwStreamFlags = (dwStreamFlags & STREAM_OPTIONS_MASK) | dwProvider; |
| 2423 | szFileName += nPrefixLength; |
| 2424 | |
| 2425 | // Perform provider-specific open |
| 2426 | switch(dwStreamFlags & STREAM_PROVIDER_MASK) |
| 2427 | { |
| 2428 | case STREAM_PROVIDER_FLAT: |
| 2429 | return FlatStream_Open(szFileName, dwStreamFlags); |
| 2430 | |
| 2431 | case STREAM_PROVIDER_PARTIAL: |
| 2432 | return PartStream_Open(szFileName, dwStreamFlags); |
| 2433 | |
| 2434 | case STREAM_PROVIDER_MPQE: |
| 2435 | return MpqeStream_Open(szFileName, dwStreamFlags); |
| 2436 | |
| 2437 | case STREAM_PROVIDER_BLOCK4: |
| 2438 | return Block4Stream_Open(szFileName, dwStreamFlags); |
| 2439 | |
| 2440 | default: |
| 2441 | SetLastError(ERROR_INVALID_PARAMETER); |
| 2442 | return NULL; |
| 2443 | } |
| 2444 | } |
| 2445 | |
| 2446 | /** |
| 2447 | * Returns the file name of the stream |
no test coverage detected