Changeset f0f9014510bebfe8ea372ce5e6dc01f62ea2df4e
- Timestamp:
- 14/02/06 21:41:27
(3 years ago)
- Author:
- Rémi Denis-Courmont <rem@videolan.org>
- git-committer:
- Rémi Denis-Courmont <rem@videolan.org> 1139949687 +0000
- git-parent:
[5243d4df8a0208851a6c244824290faf86a5169c]
- git-author:
- Rémi Denis-Courmont <rem@videolan.org> 1139949687 +0000
- Message:
(Win32) Support stat() for file names outside ANSI Code Page
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| r5243d4d |
rf0f9014 |
|
| 298 | 298 | return NULL; |
|---|
| 299 | 299 | #else |
|---|
| 300 | | wchar_t wpath[MAX_PATH]; |
|---|
| 301 | | wchar_t wmode[4]; |
|---|
| 302 | | |
|---|
| 303 | | if( !MultiByteToWideChar( CP_UTF8, 0, filename, -1, wpath, MAX_PATH - 1) |
|---|
| 304 | | || !MultiByteToWideChar( CP_ACP, 0, mode, -1, wmode, 3 ) ) |
|---|
| | 300 | wchar_t wpath[MAX_PATH + 1]; |
|---|
| | 301 | size_t len = strlen( mode ) + 1; |
|---|
| | 302 | wchar_t wmode[len]; |
|---|
| | 303 | |
|---|
| | 304 | if( !MultiByteToWideChar( CP_UTF8, 0, filename, -1, wpath, MAX_PATH ) |
|---|
| | 305 | || !MultiByteToWideChar( CP_ACP, 0, mode, len, wmode, len ) ) |
|---|
| 305 | 306 | { |
|---|
| 306 | 307 | errno = ENOENT; |
|---|
| 307 | 308 | return NULL; |
|---|
| 308 | 309 | } |
|---|
| | 310 | wpath[MAX_PATH] = L'\0'; |
|---|
| 309 | 311 | |
|---|
| 310 | 312 | return _wfopen( wpath, wmode ); |
|---|
| … | … | |
| 318 | 320 | { |
|---|
| 319 | 321 | #if defined (UNDER_CE) || defined (WIN32) |
|---|
| 320 | | wchar_t wname[MAX_PATH]; |
|---|
| 321 | | char mod[MAX_PATH]; |
|---|
| | 322 | wchar_t wname[MAX_PATH + 1]; |
|---|
| | 323 | char mod[MAX_PATH + 1]; |
|---|
| 322 | 324 | int i; |
|---|
| 323 | 325 | |
|---|
| … | … | |
| 342 | 344 | return -1; |
|---|
| 343 | 345 | } |
|---|
| | 346 | wname[MAX_PATH] = L'\0'; |
|---|
| 344 | 347 | |
|---|
| 345 | 348 | if( CreateDirectoryW( wname, NULL ) == 0 ) |
|---|
| … | … | |
| 398 | 401 | vlc_bool_t deref ) |
|---|
| 399 | 402 | { |
|---|
| 400 | | #ifdef HAVE_SYS_STAT_H |
|---|
| | 403 | #if !(defined (WIN32) || defined (UNDER_CE)) |
|---|
| | 404 | # ifdef HAVE_SYS_STAT_H |
|---|
| 401 | 405 | const char *local_name = ToLocale( filename ); |
|---|
| 402 | 406 | |
|---|
| … | … | |
| 409 | 413 | } |
|---|
| 410 | 414 | errno = ENOENT; |
|---|
| 411 | | #endif |
|---|
| | 415 | # endif |
|---|
| 412 | 416 | return -1; |
|---|
| | 417 | #else |
|---|
| | 418 | wchar_t wpath[MAX_PATH + 1]; |
|---|
| | 419 | |
|---|
| | 420 | if( !MultiByteToWideChar( CP_UTF8, 0, filename, -1, wpath, MAX_PATH ) ) |
|---|
| | 421 | { |
|---|
| | 422 | errno = ENOENT; |
|---|
| | 423 | return -1; |
|---|
| | 424 | } |
|---|
| | 425 | wpath[MAX_PATH] = L'\0'; |
|---|
| | 426 | |
|---|
| | 427 | /* struct _stat is just a silly Microsoft alias for struct stat */ |
|---|
| | 428 | return _wstat( wpath, (struct _stat *)buf ); |
|---|
| | 429 | #endif |
|---|
| 413 | 430 | } |
|---|
| 414 | 431 | |
|---|