diff options
| author | jacqueline <me@jacqueline.id.au> | 2024-01-18 14:55:27 +1100 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2024-01-18 14:55:27 +1100 |
| commit | d1ae1a4230b413b6a92179936d431c83247c5fd2 (patch) | |
| tree | 3d209249d1829ff0e24660190035fad64fef050d /lib/faad2/frontend/unicode_support.c | |
| parent | 442c45d461ad4c81d01898962e3ad420d390495a (diff) | |
| download | tangara-fw-d1ae1a4230b413b6a92179936d431c83247c5fd2.tar.gz | |
on second thought, let's not violate patents. 'tis a silly system.
Diffstat (limited to 'lib/faad2/frontend/unicode_support.c')
| -rw-r--r-- | lib/faad2/frontend/unicode_support.c | 172 |
1 files changed, 0 insertions, 172 deletions
diff --git a/lib/faad2/frontend/unicode_support.c b/lib/faad2/frontend/unicode_support.c deleted file mode 100644 index d3f50ac6..00000000 --- a/lib/faad2/frontend/unicode_support.c +++ /dev/null @@ -1,172 +0,0 @@ -/* Copyright (c) 2004-2012 LoRd_MuldeR <mulder2@gmx.de> - File: unicode_support.c - - This file was originally part of a patch included with LameXP, - released under the same license as the original audio tools. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#define _CRT_SECURE_NO_WARNINGS -#include <stdio.h> - -#if defined WIN32 || defined _WIN32 || defined WIN64 || defined _WIN64 - -#include "unicode_support.h" - -#include <stdlib.h> - -#define WIN32_LEAN_AND_MEAN -#include <windows.h> -#include <shellapi.h> -#include <io.h> - -static UINT g_old_output_cp = ((UINT)-1); - -static char *utf16_to_utf8(const wchar_t *input) -{ - char *Buffer; - int BuffSize = 0, Result = 0; - - BuffSize = WideCharToMultiByte(CP_UTF8, 0, input, -1, NULL, 0, NULL, NULL); - Buffer = (char*) malloc(sizeof(char) * BuffSize); - if(Buffer) - { - Result = WideCharToMultiByte(CP_UTF8, 0, input, -1, Buffer, BuffSize, NULL, NULL); - } - - return ((Result > 0) && (Result <= BuffSize)) ? Buffer : NULL; -} - -static wchar_t *utf8_to_utf16(const char *input) -{ - wchar_t *Buffer; - int BuffSize = 0, Result = 0; - - BuffSize = MultiByteToWideChar(CP_UTF8, 0, input, -1, NULL, 0); - Buffer = (wchar_t*) malloc(sizeof(wchar_t) * BuffSize); - if(Buffer) - { - Result = MultiByteToWideChar(CP_UTF8, 0, input, -1, Buffer, BuffSize); - } - - return ((Result > 0) && (Result <= BuffSize)) ? Buffer : NULL; -} - -void init_commandline_arguments_utf8(int *argc, char ***argv) -{ - int i, nArgs; - LPWSTR *szArglist; - - szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs); - - if(NULL == szArglist) - { - fprintf(stderr, "\nFATAL: CommandLineToArgvW failed\n\n"); - exit(-1); - } - - *argv = (char**) malloc(sizeof(char*) * nArgs); - *argc = nArgs; - - if(NULL == *argv) - { - fprintf(stderr, "\nFATAL: Malloc failed\n\n"); - exit(-1); - } - - for(i = 0; i < nArgs; i++) - { - (*argv)[i] = utf16_to_utf8(szArglist[i]); - if(NULL == (*argv)[i]) - { - fprintf(stderr, "\nFATAL: utf16_to_utf8 failed\n\n"); - exit(-1); - } - } - - LocalFree(szArglist); -} - -void free_commandline_arguments_utf8(int *argc, char ***argv) -{ - int i = 0; - - if(*argv != NULL) - { - for(i = 0; i < *argc; i++) - { - if((*argv)[i] != NULL) - { - free((*argv)[i]); - (*argv)[i] = NULL; - } - } - free(*argv); - *argv = NULL; - } -} - -FILE *faad_fopen(const char *filename, const char *mode) -{ - FILE *ret = NULL; - wchar_t *filename_utf16 = utf8_to_utf16(filename); - wchar_t *mode_utf16 = utf8_to_utf16(mode); - - if(filename_utf16 && mode_utf16) - { - ret = _wfopen(filename_utf16, mode_utf16); - } - - if(filename_utf16) free(filename_utf16); - if(mode_utf16) free(mode_utf16); - - return ret; -} - -void init_console_utf8(FILE *const stream) -{ - if (_isatty(_fileno(stream))) - { - g_old_output_cp = GetConsoleOutputCP(); - SetConsoleOutputCP(CP_UTF8); - } -} - -void uninit_console_utf8(void) -{ - if(g_old_output_cp != ((UINT)-1)) - { - SetConsoleOutputCP(g_old_output_cp); - } -} - -#else - -FILE *faad_fopen(const char *filename, const char *mode) -{ - return fopen(filename, mode); -} - -#endif |
