link lm publicly to FLAC
[flac.git] / src / metaflac / main.c
index 10baffd..8c5d5ee 100644 (file)
@@ -1,5 +1,6 @@
 /* metaflac - Command-line FLAC metadata editor
- * Copyright (C) 2001,2002,2003,2004,2005,2006,2007,2008,2009  Josh Coalson
+ * Copyright (C) 2001-2009  Josh Coalson
+ * Copyright (C) 2011-2016  Xiph.Org Foundation
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -16,7 +17,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-#if HAVE_CONFIG_H
+#ifdef HAVE_CONFIG_H
 #  include <config.h>
 #endif
 
@@ -24,6 +25,8 @@
 #include "options.h"
 #include <locale.h>
 #include <stdlib.h>
+#include <string.h>
+#include "share/compat.h"
 
 int main(int argc, char *argv[])
 {
@@ -34,8 +37,27 @@ int main(int argc, char *argv[])
        _response(&argc, &argv);
        _wildcard(&argc, &argv);
 #endif
+#ifdef _WIN32
+       if (get_utf8_argv(&argc, &argv) != 0) {
+               fputs("ERROR: failed to convert command line parameters to UTF-8\n", stderr);
+               return 1;
+       }
+#endif
 
+#ifdef _WIN32
+       {
+               const char *var;
+               var = getenv("LC_ALL");
+               if (!var)
+                       var = getenv("LC_NUMERIC");
+               if (!var)
+                       var = getenv("LANG");
+               if (!var || strcmp(var, "C") != 0)
+                       setlocale(LC_ALL, "");
+       }
+#else
        setlocale(LC_ALL, "");
+#endif
        init_options(&options);
 
        if ((ret = parse_options(argc, argv, &options)) == 0)