summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2014-07-28 12:09:14 +0800
committerJeremy Kerr <jk@ozlabs.org>2014-07-28 14:23:11 +0800
commit2a44f3c936f948d6fedc4729dbf2216da558e490 (patch)
tree6b225bea0cf0969c5fa1767c19aa7fe7f1d7d499
parent9330aba60a05a8d9889dab42bc92b9ebbc55941b (diff)
downloadtalos-petitboot-2a44f3c936f948d6fedc4729dbf2216da558e490.tar.gz
talos-petitboot-2a44f3c936f948d6fedc4729dbf2216da558e490.zip
discover: Add setlocale calls in discover server
We want the discover server to respect the configured language, so we'll need to add appropriate setlocale() calls. We use the config->lang setting to use any previously-saved language. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
-rw-r--r--discover/Makefile.am4
-rw-r--r--discover/device-handler.c22
-rw-r--r--discover/pb-discover.c8
3 files changed, 33 insertions, 1 deletions
diff --git a/discover/Makefile.am b/discover/Makefile.am
index 5d5f5b4..01c29d7 100644
--- a/discover/Makefile.am
+++ b/discover/Makefile.am
@@ -16,7 +16,9 @@ pkgsysconfdir = @sysconfdir@/@PACKAGE@
SUBDIRS = grub2
-AM_CPPFLAGS = -I$(top_srcdir)/lib $(DEFAULT_CPPFLAGS)
+AM_CPPFLAGS = -I$(top_srcdir)/lib \
+ -DLOCALEDIR='"$(localedir)"' \
+ $(DEFAULT_CPPFLAGS)
AM_CFLAGS = $(DEFAULT_CFLAGS) \
-DPREFIX='"$(prefix)"' \
diff --git a/discover/device-handler.c b/discover/device-handler.c
index 22866e6..e7990e7 100644
--- a/discover/device-handler.c
+++ b/discover/device-handler.c
@@ -16,6 +16,7 @@
#include <system/system.h>
#include <process/process.h>
#include <url/url.h>
+#include <i18n/i18n.h>
#include "device-handler.h"
#include "discover-server.h"
@@ -59,6 +60,8 @@ static int umount_device(struct discover_device *dev);
static int device_handler_init_sources(struct device_handler *handler);
static void device_handler_reinit_sources(struct device_handler *handler);
+static void device_handler_update_lang(const char *lang);
+
void discover_context_add_boot_option(struct discover_context *ctx,
struct discover_boot_option *boot_option)
{
@@ -824,11 +827,26 @@ void device_handler_update_config(struct device_handler *handler,
return;
discover_server_notify_config(handler->server, config);
+ device_handler_update_lang(config->lang);
device_handler_reinit(handler);
}
#ifndef PETITBOOT_TEST
+static void device_handler_update_lang(const char *lang)
+{
+ const char *cur_lang;
+
+ if (!lang)
+ return;
+
+ cur_lang = setlocale(LC_ALL, NULL);
+ if (cur_lang && !strcmp(cur_lang, lang))
+ return;
+
+ setlocale(LC_ALL, lang);
+}
+
static int device_handler_init_sources(struct device_handler *handler)
{
/* init our device sources: udev, network and user events */
@@ -1025,6 +1043,10 @@ void device_release_write(struct discover_device *dev, bool release)
#else
+static void device_handler_update_lang(const char *lang __attribute__((unused)))
+{
+}
+
static int device_handler_init_sources(
struct device_handler *handler __attribute__((unused)))
{
diff --git a/discover/pb-discover.c b/discover/pb-discover.c
index f876a3d..81c582d 100644
--- a/discover/pb-discover.c
+++ b/discover/pb-discover.c
@@ -13,6 +13,7 @@
#include <log/log.h>
#include <process/process.h>
#include <talloc/talloc.h>
+#include <i18n/i18n.h>
#include "discover-server.h"
#include "device-handler.h"
@@ -127,6 +128,10 @@ int main(int argc, char *argv[])
struct opts opts;
FILE *log;
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
if (opts_parse(&opts, argc, argv)) {
print_usage();
return EXIT_FAILURE;
@@ -177,6 +182,9 @@ int main(int argc, char *argv[])
if (opts.no_autoboot == opt_yes)
config_set_autoboot(false);
+ if (config_get()->lang)
+ setlocale(LC_ALL, config_get()->lang);
+
system_info_init(server);
handler = device_handler_init(server, waitset, opts.dry_run == opt_yes);
OpenPOWER on IntegriCloud