Commit | Line | Data |
---|---|---|
2ba45a60 | 1 | /* |
2ba45a60 DM |
2 | * This file is part of FFmpeg. |
3 | * | |
4 | * FFmpeg is free software; you can redistribute it and/or | |
5 | * modify it under the terms of the GNU Lesser General Public | |
6 | * License as published by the Free Software Foundation; either | |
7 | * version 2.1 of the License, or (at your option) any later version. | |
8 | * | |
9 | * FFmpeg is distributed in the hope that it will be useful, | |
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
12 | * Lesser General Public License for more details. | |
13 | * | |
14 | * You should have received a copy of the GNU Lesser General Public | |
15 | * License along with FFmpeg; if not, write to the Free Software | |
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |
17 | */ | |
18 | ||
f6fa7814 DM |
19 | #ifndef AVUTIL_WCHAR_FILENAME_H |
20 | #define AVUTIL_WCHAR_FILENAME_H | |
2ba45a60 | 21 | |
f6fa7814 DM |
22 | #if defined(_WIN32) && !defined(__MINGW32CE__) |
23 | #include <windows.h> | |
24 | #include "mem.h" | |
2ba45a60 | 25 | |
f6fa7814 | 26 | static inline int utf8towchar(const char *filename_utf8, wchar_t **filename_w) |
2ba45a60 | 27 | { |
f6fa7814 DM |
28 | int num_chars; |
29 | num_chars = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, filename_utf8, -1, NULL, 0); | |
30 | if (num_chars <= 0) { | |
31 | *filename_w = NULL; | |
32 | return 0; | |
33 | } | |
34 | *filename_w = (wchar_t *)av_mallocz_array(num_chars, sizeof(wchar_t)); | |
35 | if (!*filename_w) { | |
36 | errno = ENOMEM; | |
37 | return -1; | |
38 | } | |
39 | MultiByteToWideChar(CP_UTF8, 0, filename_utf8, -1, *filename_w, num_chars); | |
40 | return 0; | |
2ba45a60 | 41 | } |
2ba45a60 | 42 | #endif |
f6fa7814 DM |
43 | |
44 | #endif /* AVUTIL_WCHAR_FILENAME_H */ |