Changeset 08936b3bbeae3b93615fa665683c540de4eb8d23
- Timestamp:
- 11/21/06 06:58:55
(2 years ago)
- Author:
- Rafaël Carré <funman@videolan.org>
- git-committer:
- Rafaël Carré <funman@videolan.org> 1164088735 +0000
- git-parent:
[e77b5163a51dde46815bea3ae41537525498d4c4]
- git-author:
- Rafaël Carré <funman@videolan.org> 1164088735 +0000
- Message:
Unicode support in directory access on windows. Patch by xxcv. Untested.
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| rce6d823 |
r08936b3 |
|
| 417 | 417 | } |
|---|
| 418 | 418 | |
|---|
| 419 | | p_real_dir = opendir( psz_path ); |
|---|
| | 419 | if (GetVersion() < 0x80000000) |
|---|
| | 420 | { |
|---|
| | 421 | /* for Windows NT and above */ |
|---|
| | 422 | wchar_t wpath[MAX_PATH + 1]; |
|---|
| | 423 | |
|---|
| | 424 | if (!MultiByteToWideChar (CP_UTF8, 0, psz_path, -1, wpath, MAX_PATH)) |
|---|
| | 425 | return NULL; |
|---|
| | 426 | wpath[MAX_PATH] = L'\0'; |
|---|
| | 427 | p_real_dir = _wopendir( wpath ); |
|---|
| | 428 | } |
|---|
| | 429 | |
|---|
| 420 | 430 | if ( p_real_dir == NULL ) |
|---|
| 421 | 431 | return NULL; |
|---|
| … | … | |
| 446 | 456 | } |
|---|
| 447 | 457 | |
|---|
| 448 | | return readdir( p_dir->p_real_dir ); |
|---|
| | 458 | return _wreaddir( p_dir->p_real_dir ); |
|---|
| 449 | 459 | } |
|---|
| 450 | 460 | |
|---|
| … | … | |
| 472 | 482 | if ( p_dir->p_real_dir != NULL ) |
|---|
| 473 | 483 | { |
|---|
| 474 | | int i_ret = closedir( p_dir->p_real_dir ); |
|---|
| | 484 | int i_ret = _wclosedir( p_dir->p_real_dir ); |
|---|
| 475 | 485 | free( p_dir ); |
|---|
| 476 | 486 | return i_ret; |
|---|
| r2f09505 |
r08936b3 |
|
| 430 | 430 | void *utf8_opendir( const char *dirname ) |
|---|
| 431 | 431 | { |
|---|
| 432 | | /* TODO: support for WinNT non-ACP filenames */ |
|---|
| | 432 | |
|---|
| | 433 | #if defined (UNDER_CE) || defined (WIN32) |
|---|
| | 434 | DIR *dir = vlc_opendir_wrapper( dirname ); |
|---|
| | 435 | return dir; |
|---|
| | 436 | #else |
|---|
| 433 | 437 | const char *local_name = ToLocale( dirname ); |
|---|
| 434 | 438 | |
|---|
| … | … | |
| 441 | 445 | else |
|---|
| 442 | 446 | errno = ENOENT; |
|---|
| | 447 | #endif |
|---|
| | 448 | |
|---|
| 443 | 449 | return NULL; |
|---|
| 444 | 450 | } |
|---|
| … | … | |
| 453 | 459 | return NULL; |
|---|
| 454 | 460 | |
|---|
| | 461 | #if defined (UNDER_CE) || defined (WIN32) |
|---|
| | 462 | return FromWide(ent->d_name); |
|---|
| | 463 | #else |
|---|
| 455 | 464 | return vlc_fix_readdir( ent->d_name ); |
|---|
| | 465 | #endif |
|---|
| 456 | 466 | } |
|---|
| 457 | 467 | |
|---|