replace locale.h with clocale

Switch to std:: functions. Changed the meson check. Works locally.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
This commit is contained in:
Rosen Penev 2020-03-26 19:32:31 -07:00
parent 3540cf26b1
commit 71e551df42
2 changed files with 8 additions and 10 deletions

View File

@ -145,7 +145,7 @@ add_global_arguments(common_cppflags, language: 'cpp')
enable_daemon = not is_windows and not is_android and get_option('daemon')
conf.set('ENABLE_DAEMON', enable_daemon)
conf.set('HAVE_LOCALE_H', compiler.has_header('locale.h'))
conf.set('HAVE_CLOCALE', compiler.has_header('clocale'))
conf.set('HAVE_GETPWNAM_R', compiler.has_function('getpwnam_r'))
conf.set('HAVE_GETPWUID_R', compiler.has_function('getpwuid_r'))

View File

@ -109,14 +109,12 @@
#include <systemd/sd-daemon.h>
#endif
#include <stdlib.h>
#ifdef HAVE_LOCALE_H
#include <locale.h>
#endif
#include <climits>
#ifdef HAVE_CLOCALE
#include <clocale>
#endif
static constexpr size_t KILOBYTE = 1024;
static constexpr size_t MEGABYTE = 1024 * KILOBYTE;
@ -360,10 +358,10 @@ MainConfigured(const struct options &options, const ConfigData &raw_config)
#endif
#ifndef ANDROID
#ifdef HAVE_LOCALE_H
#ifdef HAVE_CLOCALE
/* initialize locale */
setlocale(LC_CTYPE,"");
setlocale(LC_COLLATE, "");
std::setlocale(LC_CTYPE,"");
std::setlocale(LC_COLLATE, "");
#endif
#endif