Updated WavPack decoder binary to v4.75.0 (2015-05-25), compiled with ICL 15.0 and MSVC 12.0.
This commit is contained in:
parent
845968a99c
commit
9a00f1ce23
@ -100,6 +100,7 @@ document.write('<a h'+'ref'+'="ma'+'ilto'+':'+e+'">'+e+'<\/'+'a'+'>');
|
||||
<li>Updated mpg123 decoder to v1.22.4 (2015-08-12), compiled with GCC 5.1.0<br /></li>
|
||||
<li>Updated ALAC decoder to refalac v1.47 (2015-02-15), based on reference implementation by Apple<br /></li>
|
||||
<li>Updated Monkey's Audio binary to v4.16 (2015-03-24), compiled with ICL 15.0 and MSVC 12.0<br /></li>
|
||||
<li>Updated WavPack decoder to v4.75.0 (2015-05-25), compiled with ICL 15.0 and MSVC 12.0<br /></li>
|
||||
<li>Updated GnuPG to v1.4.19 (2015-02-27), compiled with GCC 4.9.2<br /></li>
|
||||
<li>Fixed potential deadlock in Cue Sheet import dialog when "Browse..." button is clicked<br /></li>
|
||||
<li>Fixed function to restore the default Temp folder, if custom Temp folder doesn't exist anymore<br /></li>
|
||||
|
@ -17,6 +17,7 @@
|
||||
* Updated mpg123 decoder to v1.22.4 (2015-08-12), compiled with GCC 5.1.0
|
||||
* Updated ALAC decoder to refalac v1.47 (2015-02-15), based on reference implementation by Apple
|
||||
* Updated Monkey's Audio binary to v4.16 (2015-03-24), compiled with ICL 15.0 and MSVC 12.0
|
||||
* Updated WavPack decoder to v4.75.0 (2015-05-25), compiled with ICL 15.0 and MSVC 12.0
|
||||
* Updated GnuPG to v1.4.19 (2015-02-27), compiled with GCC 4.9.2
|
||||
* Fixed potential deadlock in Cue Sheet import dialog when "Browse..." button is clicked
|
||||
* Fixed function to restore the default Temp folder, if custom Temp folder doesn't exist anymore
|
||||
|
655
etc/Patches/WavPack-4.75.0-UTF8+FlushProgress.diff
Normal file
655
etc/Patches/WavPack-4.75.0-UTF8+FlushProgress.diff
Normal file
@ -0,0 +1,655 @@
|
||||
.gitignore | 6 ++
|
||||
cli/utils.c | 21 +++--
|
||||
cli/win32_unicode_support.c | 197 ++++++++++++++++++++++++++++++++++++++++++++
|
||||
cli/win32_unicode_support.h | 49 +++++++++++
|
||||
cli/wvunpack.c | 71 +++++++++++++---
|
||||
src/open_utils.c | 5 +-
|
||||
6 files changed, 331 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/.gitignore b/.gitignore
|
||||
index eb3a2f7..b09320e 100644
|
||||
--- a/.gitignore
|
||||
+++ b/.gitignore
|
||||
@@ -1 +1,7 @@
|
||||
/_old_
|
||||
+/src/Release
|
||||
+/Backup1
|
||||
+/Release
|
||||
+/*.sdf
|
||||
+/wavpackexe/Release
|
||||
+/wvunpackexe/Release
|
||||
diff --git a/cli/utils.c b/cli/utils.c
|
||||
index 8ead3df..9925a8c 100644
|
||||
--- a/cli/utils.c
|
||||
+++ b/cli/utils.c
|
||||
@@ -30,6 +30,7 @@
|
||||
|
||||
#include "wavpack.h"
|
||||
#include "utils.h"
|
||||
+#include "win32_unicode_support.h"
|
||||
|
||||
#ifdef WIN32
|
||||
#define fileno _fileno
|
||||
@@ -81,7 +82,7 @@ int copy_timestamp(const char *src_filename, const char *dst_filename)
|
||||
if (strcmp(src_filename, "-") == 0 || strcmp(dst_filename, "-") == 0)
|
||||
return TRUE;
|
||||
|
||||
- if (stat(src_filename, &fileinfo))
|
||||
+ if (stat_utf8(src_filename, &fileinfo))
|
||||
return FALSE; /* stat failed */
|
||||
|
||||
times[0].tv_sec = fileinfo.st_atime;
|
||||
@@ -186,7 +187,7 @@ char *filespec_path (char *filespec)
|
||||
globs.gl_pathc > 0)
|
||||
{
|
||||
/* test if the file is a directory */
|
||||
- if (stat(globs.gl_pathv[0], &fstats) == 0 && (fstats.st_mode & S_IFDIR)) {
|
||||
+ if (stat_utf8(globs.gl_pathv[0], &fstats) == 0 && (fstats.st_mode & S_IFDIR)) {
|
||||
filespec[0] = '\0';
|
||||
strcat (filespec, globs.gl_pathv[0]);
|
||||
globfree(&globs);
|
||||
@@ -368,6 +369,7 @@ char yna (void)
|
||||
fprintf (stderr, "%c", 7);
|
||||
}
|
||||
|
||||
+ fflush(stderr);
|
||||
waiting_input = 0;
|
||||
|
||||
return choice;
|
||||
@@ -446,6 +448,7 @@ void error_line (char *error, ...)
|
||||
vsprintf (error_msg + 1, error, argptr);
|
||||
va_end (argptr);
|
||||
fputs (error_msg, stderr);
|
||||
+ fflush(stderr);
|
||||
finish_line ();
|
||||
|
||||
if (debug_logging_mode) {
|
||||
@@ -454,7 +457,7 @@ void error_line (char *error, ...)
|
||||
|
||||
if (get_app_path (file_path)) {
|
||||
strcat (file_path, "\\WavPack\\wavpack.log");
|
||||
- error_log = fopen (file_path, "a+");
|
||||
+ error_log = fopen_utf8 (file_path, "a+");
|
||||
|
||||
if (!error_log) {
|
||||
get_app_path (file_path);
|
||||
@@ -462,13 +465,13 @@ void error_line (char *error, ...)
|
||||
|
||||
if (CreateDirectory (file_path, NULL)) {
|
||||
strcat (file_path, "\\wavpack.log");
|
||||
- error_log = fopen (file_path, "a+");
|
||||
+ error_log = fopen_utf8 (file_path, "a+");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!error_log)
|
||||
- error_log = fopen ("c:\\wavpack.log", "a+");
|
||||
+ error_log = fopen_utf8 ("c:\\wavpack.log", "a+");
|
||||
|
||||
if (error_log) {
|
||||
fputs (error_msg + 1, error_log);
|
||||
@@ -490,6 +493,7 @@ void error_line (char *error, ...)
|
||||
vsprintf (error_msg + 1, error, argptr);
|
||||
va_end (argptr);
|
||||
fputs (error_msg, stderr);
|
||||
+ fflush(stderr);
|
||||
finish_line ();
|
||||
}
|
||||
|
||||
@@ -508,10 +512,11 @@ void debug_line (char *error, ...)
|
||||
vsprintf (error_msg + 1, error, argptr);
|
||||
va_end (argptr);
|
||||
fputs (error_msg, stderr);
|
||||
+ fflush(stderr);
|
||||
finish_line ();
|
||||
|
||||
if (debug_logging_mode) {
|
||||
- FILE *error_log = fopen ("c:\\wavpack.log", "a+");
|
||||
+ FILE *error_log = fopen_utf8 ("c:\\wavpack.log", "a+");
|
||||
|
||||
if (error_log) {
|
||||
fputs (error_msg + 1, error_log);
|
||||
@@ -589,6 +594,8 @@ void finish_line (void)
|
||||
}
|
||||
else
|
||||
fputc ('\n', stderr);
|
||||
+
|
||||
+ fflush(stderr);
|
||||
}
|
||||
#else
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
@@ -599,6 +606,7 @@ void finish_line (void)
|
||||
void finish_line (void)
|
||||
{
|
||||
fprintf (stderr, " \n");
|
||||
+ fflush(stderr);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
@@ -778,6 +786,7 @@ void DoSetConsoleTitle (char *text)
|
||||
void DoSetConsoleTitle (char *text)
|
||||
{
|
||||
fprintf (stderr, "\033]0;%s\007", text);
|
||||
+ fflush(stderr);
|
||||
}
|
||||
|
||||
#endif
|
||||
diff --git a/cli/win32_unicode_support.c b/cli/win32_unicode_support.c
|
||||
new file mode 100644
|
||||
index 0000000..513cebc
|
||||
--- /dev/null
|
||||
+++ b/cli/win32_unicode_support.c
|
||||
@@ -0,0 +1,197 @@
|
||||
+/* 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.
|
||||
+*/
|
||||
+#if defined WIN32 || defined _WIN32 || defined WIN64 || defined _WIN64
|
||||
+
|
||||
+#include "win32_unicode_support.h"
|
||||
+
|
||||
+#include <windows.h>
|
||||
+#include <io.h>
|
||||
+
|
||||
+static UINT g_old_output_cp = ((UINT)-1);
|
||||
+
|
||||
+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;
|
||||
+}
|
||||
+
|
||||
+char *utf16_to_ansi(const wchar_t *input)
|
||||
+{
|
||||
+ char *Buffer;
|
||||
+ int BuffSize = 0, Result = 0;
|
||||
+
|
||||
+ BuffSize = WideCharToMultiByte(CP_ACP, 0, input, -1, NULL, 0, NULL, NULL);
|
||||
+ Buffer = (char*) malloc(sizeof(char) * BuffSize);
|
||||
+ if(Buffer)
|
||||
+ {
|
||||
+ Result = WideCharToMultiByte(CP_ACP, 0, input, -1, Buffer, BuffSize, NULL, NULL);
|
||||
+ }
|
||||
+
|
||||
+ return ((Result > 0) && (Result <= BuffSize)) ? Buffer : NULL;
|
||||
+}
|
||||
+
|
||||
+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 *fopen_utf8(const char *filename_utf8, const char *mode_utf8)
|
||||
+{
|
||||
+ FILE *ret = NULL;
|
||||
+ wchar_t *filename_utf16 = utf8_to_utf16(filename_utf8);
|
||||
+ wchar_t *mode_utf16 = utf8_to_utf16(mode_utf8);
|
||||
+
|
||||
+ 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;
|
||||
+}
|
||||
+
|
||||
+int stat_utf8(const char *path_utf8, struct _stat *buf)
|
||||
+{
|
||||
+ int ret = -1;
|
||||
+
|
||||
+ wchar_t *path_utf16 = utf8_to_utf16(path_utf8);
|
||||
+ if(path_utf16)
|
||||
+ {
|
||||
+ ret = _wstat(path_utf16, buf);
|
||||
+ free(path_utf16);
|
||||
+ }
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+int unlink_utf8(const char *path_utf8)
|
||||
+{
|
||||
+ int ret = -1;
|
||||
+
|
||||
+ wchar_t *path_utf16 = utf8_to_utf16(path_utf8);
|
||||
+ if(path_utf16)
|
||||
+ {
|
||||
+ ret = _wunlink(path_utf16);
|
||||
+ free(path_utf16);
|
||||
+ }
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+void init_console_utf8(void)
|
||||
+{
|
||||
+ 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);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+#endif
|
||||
diff --git a/cli/win32_unicode_support.h b/cli/win32_unicode_support.h
|
||||
new file mode 100644
|
||||
index 0000000..40c2e33
|
||||
--- /dev/null
|
||||
+++ b/cli/win32_unicode_support.h
|
||||
@@ -0,0 +1,49 @@
|
||||
+/* Copyright (c) 2004-2012 LoRd_MuldeR <mulder2@gmx.de>
|
||||
+ File: unicode_support.h
|
||||
+
|
||||
+ 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.
|
||||
+*/
|
||||
+#ifndef UNICODE_SUPPORT_H_INCLUDED
|
||||
+#define UNICODE_SUPPORT_H_INCLUDED
|
||||
+
|
||||
+#include <stdio.h>
|
||||
+#include <sys/stat.h>
|
||||
+
|
||||
+#define WIN_UNICODE 1
|
||||
+
|
||||
+char *utf16_to_utf8(const wchar_t *input);
|
||||
+char *utf16_to_ansi(const wchar_t *input);
|
||||
+wchar_t *utf8_to_utf16(const char *input);
|
||||
+void init_commandline_arguments_utf8(int *argc, char ***argv);
|
||||
+void free_commandline_arguments_utf8(int *argc, char ***argv);
|
||||
+FILE *fopen_utf8(const char *filename_utf8, const char *mode_utf8);
|
||||
+int stat_utf8(const char *path_utf8, struct _stat *buf);
|
||||
+int unlink_utf8(const char *path_utf8);
|
||||
+void init_console_utf8(void);
|
||||
+void uninit_console_utf8(void);
|
||||
+
|
||||
+#endif
|
||||
diff --git a/cli/wvunpack.c b/cli/wvunpack.c
|
||||
index e12b5c3..255a6a5 100644
|
||||
--- a/cli/wvunpack.c
|
||||
+++ b/cli/wvunpack.c
|
||||
@@ -46,6 +46,7 @@
|
||||
#include "wavpack.h"
|
||||
#include "utils.h"
|
||||
#include "md5.h"
|
||||
+#include "win32_unicode_support.h"
|
||||
|
||||
#ifdef WIN32
|
||||
#define strdup(x) _strdup(x)
|
||||
@@ -159,7 +160,7 @@ static void display_progress (double file_progress);
|
||||
// The "main" function for the command-line WavPack decompressor. //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
-int main (argc, argv) int argc; char **argv;
|
||||
+static int wvunpack_main (argc, argv) int argc; char **argv;
|
||||
{
|
||||
#ifdef __EMX__ /* OS/2 */
|
||||
_wildcard (&argc, &argv);
|
||||
@@ -196,7 +197,7 @@ int main (argc, argv) int argc; char **argv;
|
||||
#endif
|
||||
|
||||
#if defined (WIN32)
|
||||
- set_console_title = 1; // on Windows, we default to messing with the console title
|
||||
+ set_console_title = 0; // on Windows, we default to messing with the console title
|
||||
#endif // on Linux, this is considered uncool to do by default
|
||||
|
||||
// loop through command-line arguments
|
||||
@@ -450,9 +451,15 @@ int main (argc, argv) int argc; char **argv;
|
||||
}
|
||||
|
||||
if (strcmp (WavpackGetLibraryVersionString (), PACKAGE_VERSION))
|
||||
+ {
|
||||
fprintf (stderr, version_warning, WavpackGetLibraryVersionString (), PACKAGE_VERSION);
|
||||
+ fflush(stderr);
|
||||
+ }
|
||||
else if (!quiet_mode && !error_count)
|
||||
+ {
|
||||
fprintf (stderr, sign_on, VERSION_OS, WavpackGetLibraryVersionString ());
|
||||
+ fflush(stderr);
|
||||
+ }
|
||||
|
||||
if (!num_files) {
|
||||
printf ("%s", usage);
|
||||
@@ -473,7 +480,7 @@ int main (argc, argv) int argc; char **argv;
|
||||
// frontends, but could be used for other purposes.
|
||||
|
||||
if (*infilename == '@') {
|
||||
- FILE *list = fopen (infilename+1, "rt");
|
||||
+ FILE *list = fopen_utf8 (infilename+1, "rt");
|
||||
int di, c;
|
||||
|
||||
for (di = file_index; di < num_files - 1; di++)
|
||||
@@ -517,7 +524,7 @@ int main (argc, argv) int argc; char **argv;
|
||||
}
|
||||
#if defined (WIN32)
|
||||
else if (filespec_wild (infilename)) {
|
||||
- FILE *list = fopen (infilename+1, "rt");
|
||||
+ FILE *list = fopen_utf8 (infilename+1, "rt");
|
||||
intptr_t file;
|
||||
int di;
|
||||
|
||||
@@ -556,7 +563,7 @@ int main (argc, argv) int argc; char **argv;
|
||||
// be passed on the command-line, but could be used for other purposes.
|
||||
|
||||
if (outfilename && outfilename [0] == '@') {
|
||||
- FILE *list = fopen (outfilename+1, "rt");
|
||||
+ FILE *list = fopen_utf8 (outfilename+1, "rt");
|
||||
int c;
|
||||
|
||||
if (list == NULL) {
|
||||
@@ -629,7 +636,10 @@ int main (argc, argv) int argc; char **argv;
|
||||
strcat (outfilename, raw_decode ? ".raw" : ".wav");
|
||||
|
||||
if (num_files > 1 && !quiet_mode)
|
||||
+ {
|
||||
fprintf (stderr, "\n%s:\n", matches [file_index]);
|
||||
+ fflush(stderr);
|
||||
+ }
|
||||
|
||||
result = unpack_file (matches [file_index], verify_only ? NULL : outfilename);
|
||||
|
||||
@@ -653,9 +663,15 @@ int main (argc, argv) int argc; char **argv;
|
||||
|
||||
if (num_files > 1) {
|
||||
if (error_count)
|
||||
+ {
|
||||
fprintf (stderr, "\n **** warning: errors occurred in %d of %d files! ****\n", error_count, num_files);
|
||||
+ fflush(stderr);
|
||||
+ }
|
||||
else if (!quiet_mode)
|
||||
+ {
|
||||
fprintf (stderr, "\n **** %d files successfully processed ****\n", num_files);
|
||||
+ fflush(stderr);
|
||||
+ }
|
||||
}
|
||||
|
||||
free (matches);
|
||||
@@ -742,7 +758,7 @@ static FILE *open_output_file (char *filename, char **tempfilename)
|
||||
return stdout;
|
||||
}
|
||||
|
||||
- testfile = fopen (filename, "rb");
|
||||
+ testfile = fopen_utf8 (filename, "rb");
|
||||
|
||||
if (testfile) {
|
||||
size_t res = fread (&dummy, 1, 1, testfile);
|
||||
@@ -754,6 +770,7 @@ static FILE *open_output_file (char *filename, char **tempfilename)
|
||||
|
||||
if (!overwrite_all) {
|
||||
fprintf (stderr, "overwrite %s (yes/no/all)? ", FN_FIT (filename));
|
||||
+ fflush(stderr);
|
||||
|
||||
if (set_console_title)
|
||||
DoSetConsoleTitle ("overwrite?");
|
||||
@@ -787,7 +804,7 @@ static FILE *open_output_file (char *filename, char **tempfilename)
|
||||
strcat (*tempfilename, ".tmp");
|
||||
}
|
||||
|
||||
- testfile = fopen (*tempfilename, "rb");
|
||||
+ testfile = fopen_utf8 (*tempfilename, "rb");
|
||||
|
||||
if (!testfile)
|
||||
break;
|
||||
@@ -801,7 +818,7 @@ static FILE *open_output_file (char *filename, char **tempfilename)
|
||||
}
|
||||
}
|
||||
|
||||
- retval = fopen (*tempfilename ? *tempfilename : filename, "w+b");
|
||||
+ retval = fopen_utf8 (*tempfilename ? *tempfilename : filename, "w+b");
|
||||
|
||||
if (retval == NULL)
|
||||
error_line ("can't create file %s!", *tempfilename ? *tempfilename : filename);
|
||||
@@ -960,11 +977,17 @@ static int unpack_file (char *infilename, char *outfilename)
|
||||
}
|
||||
else if (*outfilename == '-') {
|
||||
if (!quiet_mode)
|
||||
+ {
|
||||
fprintf (stderr, "unpacking %s%s to stdout,", *infilename == '-' ?
|
||||
"stdin" : FN_FIT (infilename), wvc_mode ? " (+.wvc)" : "");
|
||||
+ fflush(stderr);
|
||||
+ }
|
||||
}
|
||||
else if (!quiet_mode)
|
||||
+ {
|
||||
fprintf (stderr, "restoring %s,", FN_FIT (outfilename));
|
||||
+ fflush(stderr);
|
||||
+ }
|
||||
|
||||
if (outbuf_k)
|
||||
output_buffer_size = outbuf_k * 1024;
|
||||
@@ -983,8 +1006,11 @@ static int unpack_file (char *infilename, char *outfilename)
|
||||
outfile = NULL;
|
||||
|
||||
if (!quiet_mode)
|
||||
+ {
|
||||
fprintf (stderr, "verifying %s%s,", *infilename == '-' ? "stdin" :
|
||||
FN_FIT (infilename), wvc_mode ? " (+.wvc)" : "");
|
||||
+ fflush(stderr);
|
||||
+ }
|
||||
}
|
||||
|
||||
#if defined(WIN32)
|
||||
@@ -1071,6 +1097,7 @@ static int unpack_file (char *infilename, char *outfilename)
|
||||
#else
|
||||
fprintf (stderr, "\n");
|
||||
#endif
|
||||
+ fflush(stderr);
|
||||
DoTruncateFile (outfile);
|
||||
result = SOFT_ERROR;
|
||||
break;
|
||||
@@ -1085,8 +1112,11 @@ static int unpack_file (char *infilename, char *outfilename)
|
||||
progress = floor (progress * 100.0 + 0.5);
|
||||
|
||||
if (!quiet_mode)
|
||||
+ {
|
||||
fprintf (stderr, "%s%3d%% done...",
|
||||
nobs ? " " : "\b\b\b\b\b\b\b\b\b\b\b\b", (int) progress);
|
||||
+ fflush(stderr);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1364,9 +1394,10 @@ static int do_tag_extractions (WavpackContext *wpc, char *outfilename)
|
||||
else
|
||||
strcpy (filespec_name (full_filename), tag_filename);
|
||||
|
||||
- if (!overwrite_all && (outfile = fopen (full_filename, "r")) != NULL) {
|
||||
+ if (!overwrite_all && (outfile = fopen_utf8 (full_filename, "r")) != NULL) {
|
||||
DoCloseHandle (outfile);
|
||||
fprintf (stderr, "overwrite %s (yes/no/all)? ", FN_FIT (full_filename));
|
||||
+ fflush(stderr);
|
||||
|
||||
if (set_console_title)
|
||||
DoSetConsoleTitle ("overwrite?");
|
||||
@@ -1385,7 +1416,7 @@ static int do_tag_extractions (WavpackContext *wpc, char *outfilename)
|
||||
// open output file for writing
|
||||
|
||||
if (*full_filename) {
|
||||
- if ((outfile = fopen (full_filename, "w")) == NULL) {
|
||||
+ if ((outfile = fopen_utf8 (full_filename, "w")) == NULL) {
|
||||
error_line ("can't create file %s!", FN_FIT (full_filename));
|
||||
result = SOFT_ERROR;
|
||||
}
|
||||
@@ -2074,3 +2105,23 @@ void display_progress (double file_progress)
|
||||
DoSetConsoleTitle (title);
|
||||
}
|
||||
}
|
||||
+
|
||||
+//////////////////////////////////////////////////////////////////////////////
|
||||
+// MAIN
|
||||
+//////////////////////////////////////////////////////////////////////////////
|
||||
+
|
||||
+int main(int argc, char **argv)
|
||||
+{
|
||||
+ int ret = -1, argc_utf8 = -1;
|
||||
+ char **argv_utf8 = NULL;
|
||||
+
|
||||
+ init_console_utf8();
|
||||
+ init_commandline_arguments_utf8(&argc_utf8, &argv_utf8);
|
||||
+
|
||||
+ ret = wvunpack_main(argc_utf8, argv_utf8);
|
||||
+
|
||||
+ free_commandline_arguments_utf8(&argc_utf8, &argv_utf8);
|
||||
+ uninit_console_utf8();
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
diff --git a/src/open_utils.c b/src/open_utils.c
|
||||
index a8c7baa..a77f90f 100644
|
||||
--- a/src/open_utils.c
|
||||
+++ b/src/open_utils.c
|
||||
@@ -20,6 +20,7 @@
|
||||
#include <string.h>
|
||||
|
||||
#include "wavpack_local.h"
|
||||
+#include "../cli/win32_unicode_support.h"
|
||||
|
||||
// This code provides an interface between the reader callback mechanism that
|
||||
// WavPack uses internally and the standard fstream C library. This allows an
|
||||
@@ -137,7 +138,7 @@ WavpackContext *WavpackOpenFileInput (const char *infilename, char *error, int f
|
||||
setmode (fileno (stdin), O_BINARY);
|
||||
#endif
|
||||
}
|
||||
- else if ((wv_id = fopen (infilename, file_mode)) == NULL) {
|
||||
+ else if ((wv_id = fopen_utf8 (infilename, file_mode)) == NULL) {
|
||||
if (error) strcpy (error, (flags & OPEN_EDIT_TAGS) ? "can't open file for editing" : "can't open file");
|
||||
return NULL;
|
||||
}
|
||||
@@ -147,7 +148,7 @@ WavpackContext *WavpackOpenFileInput (const char *infilename, char *error, int f
|
||||
|
||||
strcpy (in2filename, infilename);
|
||||
strcat (in2filename, "c");
|
||||
- wvc_id = fopen (in2filename, "rb");
|
||||
+ wvc_id = fopen_utf8 (in2filename, "rb");
|
||||
free (in2filename);
|
||||
}
|
||||
else
|
Binary file not shown.
@ -34,8 +34,8 @@
|
||||
#define VER_LAMEXP_MINOR_HI 1
|
||||
#define VER_LAMEXP_MINOR_LO 2
|
||||
#define VER_LAMEXP_TYPE Beta
|
||||
#define VER_LAMEXP_PATCH 5
|
||||
#define VER_LAMEXP_BUILD 1796
|
||||
#define VER_LAMEXP_PATCH 6
|
||||
#define VER_LAMEXP_BUILD 1798
|
||||
#define VER_LAMEXP_CONFG 1700
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -94,7 +94,7 @@ g_lamexp_tools[] =
|
||||
{"509df39fdd7033b0f1af831304d0d6c08b74d5a48e2c038857a78b9dfaa4fb83c6b5c7ea202ba2270c0384607f2316ee", CPU_TYPE_ALL_ALL, "wget.exe", 1140, ""},
|
||||
{"572b9448bf4a338ecb9727951fdfcc5a219cc69896695cc96b9f6b083690e339910e41558968264a38992e45f2be152c", CPU_TYPE_ALL_ALL, "wma2wav.exe", 20111001, ""},
|
||||
{"53c7ce1de68285b2440e6d36887708d816cc5a16dfb076669b9ad24a84bb9a4f1080c1885259446b58673366d729cf33", CPU_TYPE_ALL_ALL, "wupdate.exe", 20150819, ""},
|
||||
{"221efeabe47e9bf65404c4687df156b326b4fd244d910ef937213e6b0169a57350e897140a2e9965822d60aada609f79", CPU_TYPE_ALL_ALL, "wvunpack.exe", 4700, ""},
|
||||
{"cb83e9393e0aceb012611241eb87eca5cc5edb81935a27d902e7435c1314962558044bae8a152e718cc5a56a1280f6b7", CPU_TYPE_ALL_ALL, "wvunpack.exe", 4750, ""},
|
||||
{NULL, NULL, NULL, NULL, NULL}
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user