* [PATCH] Add a --locale-directory option to grub-install and related tools.
@ 2013-11-21 18:32 Colin Watson
2013-11-22 3:29 ` Vladimir 'φ-coder/phcoder' Serbinenko
0 siblings, 1 reply; 2+ messages in thread
From: Colin Watson @ 2013-11-21 18:32 UTC (permalink / raw)
To: grub-devel
* include/grub/util/install.h (GRUB_INSTALL_OPTIONS): Add
--locale-directory option.
(enum grub_install_options): Add
GRUB_INSTALL_OPTIONS_LOCALE_DIRECTORY.
* util/grub-install-common.c (grub_install_help_filter): Handle
GRUB_INSTALL_OPTIONS_LOCALE_DIRECTORY.
(grub_install_parse): Likewise.
(get_localedir): New function to check for a user-provided option
before trying grub_util_get_localedir.
(copy_locales): Use get_localedir rather than
grub_util_get_localedir.
(grub_install_copy_files): Likewise.
---
ChangeLog | 17 +++++++++++++++++
include/grub/util/install.h | 4 ++++
util/grub-install-common.c | 20 ++++++++++++++++++--
3 files changed, 39 insertions(+), 2 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 6d4b5b2..62a4d48 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,22 @@
2013-11-21 Colin Watson <cjwatson@ubuntu.com>
+ Add a --locale-directory option to grub-install and related tools.
+
+ * include/grub/util/install.h (GRUB_INSTALL_OPTIONS): Add
+ --locale-directory option.
+ (enum grub_install_options): Add
+ GRUB_INSTALL_OPTIONS_LOCALE_DIRECTORY.
+ * util/grub-install-common.c (grub_install_help_filter): Handle
+ GRUB_INSTALL_OPTIONS_LOCALE_DIRECTORY.
+ (grub_install_parse): Likewise.
+ (get_localedir): New function to check for a user-provided option
+ before trying grub_util_get_localedir.
+ (copy_locales): Use get_localedir rather than
+ grub_util_get_localedir.
+ (grub_install_copy_files): Likewise.
+
+2013-11-21 Colin Watson <cjwatson@ubuntu.com>
+
* util/grub-mkrescue.c (main): If a source directory is not
specified, read platform-specific files from subdirectories of
pkglibdir, not pkgdatadir.
diff --git a/include/grub/util/install.h b/include/grub/util/install.h
index c1cd6b3..6b0bc33 100644
--- a/include/grub/util/install.h
+++ b/include/grub/util/install.h
@@ -47,6 +47,9 @@
{ "override-directory", GRUB_INSTALL_OPTIONS_DIRECTORY2, \
N_("DIR"), OPTION_HIDDEN, \
N_("use images and modules under DIR [default=%s/<platform>]"), 1 }, \
+ { "locale-directory", GRUB_INSTALL_OPTIONS_LOCALE_DIRECTORY, \
+ N_("DIR"), 0, \
+ N_("use translations under DIR [default=%s]"), 1 }, \
{ "grub-mkimage", GRUB_INSTALL_OPTIONS_GRUB_MKIMAGE, \
"FILE", OPTION_HIDDEN, 0, 1 }, \
/* TRANSLATORS: "embed" is a verb (command description). "*/ \
@@ -100,6 +103,7 @@ enum grub_install_options {
GRUB_INSTALL_OPTIONS_INSTALL_LOCALES,
GRUB_INSTALL_OPTIONS_INSTALL_COMPRESS,
GRUB_INSTALL_OPTIONS_DIRECTORY2,
+ GRUB_INSTALL_OPTIONS_LOCALE_DIRECTORY,
GRUB_INSTALL_OPTIONS_GRUB_MKIMAGE
};
diff --git a/util/grub-install-common.c b/util/grub-install-common.c
index 4e1d41a..c733489 100644
--- a/util/grub-install-common.c
+++ b/util/grub-install-common.c
@@ -58,6 +58,8 @@ grub_install_help_filter (int key, const char *text,
case GRUB_INSTALL_OPTIONS_DIRECTORY:
case GRUB_INSTALL_OPTIONS_DIRECTORY2:
return xasprintf(text, grub_util_get_pkglibdir ());
+ case GRUB_INSTALL_OPTIONS_LOCALE_DIRECTORY:
+ return xasprintf(text, grub_util_get_localedir ());
default:
return (char *) text;
}
@@ -217,6 +219,7 @@ struct install_list install_locales = { 1, 0, 0, 0 };
struct install_list install_fonts = { 1, 0, 0, 0 };
struct install_list install_themes = { 1, 0, 0, 0 };
char *grub_install_source_directory = NULL;
+char *grub_install_locale_directory = NULL;
void
grub_install_push_module (const char *val)
@@ -313,6 +316,10 @@ grub_install_parse (int key, char *arg)
free (grub_install_source_directory);
grub_install_source_directory = xstrdup (arg);
return 1;
+ case GRUB_INSTALL_OPTIONS_LOCALE_DIRECTORY:
+ free (grub_install_locale_directory);
+ grub_install_locale_directory = xstrdup (arg);
+ return 1;
case GRUB_INSTALL_OPTIONS_INSTALL_MODULES:
handle_install_list (&install_modules, arg, 0);
return 1;
@@ -551,12 +558,21 @@ copy_all (const char *srcd,
grub_util_fd_closedir (d);
}
+static const char *
+get_localedir (void)
+{
+ if (grub_install_locale_directory)
+ return grub_install_locale_directory;
+ else
+ return grub_util_get_localedir ();
+}
+
static void
copy_locales (const char *dstd)
{
grub_util_fd_dir_t d;
grub_util_fd_dirent_t de;
- const char *locale_dir = grub_util_get_localedir ();
+ const char *locale_dir = get_localedir ();
d = grub_util_fd_opendir (locale_dir);
if (!d)
@@ -706,7 +722,7 @@ grub_install_copy_files (const char *src,
}
else
{
- const char *locale_dir = grub_util_get_localedir ();
+ const char *locale_dir = get_localedir ();
for (i = 0; i < install_locales.n_entries; i++)
{
--
1.8.4.3
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] Add a --locale-directory option to grub-install and related tools.
2013-11-21 18:32 [PATCH] Add a --locale-directory option to grub-install and related tools Colin Watson
@ 2013-11-22 3:29 ` Vladimir 'φ-coder/phcoder' Serbinenko
0 siblings, 0 replies; 2+ messages in thread
From: Vladimir 'φ-coder/phcoder' Serbinenko @ 2013-11-22 3:29 UTC (permalink / raw)
To: grub-devel
[-- Attachment #1: Type: text/plain, Size: 2099 bytes --]
On 21.11.2013 19:32, Colin Watson wrote:
> * include/grub/util/install.h (GRUB_INSTALL_OPTIONS): Add
> --locale-directory option.
> (enum grub_install_options): Add
> GRUB_INSTALL_OPTIONS_LOCALE_DIRECTORY.
> * util/grub-install-common.c (grub_install_help_filter): Handle
> GRUB_INSTALL_OPTIONS_LOCALE_DIRECTORY.
> (grub_install_parse): Likewise.
> (get_localedir): New function to check for a user-provided option
> before trying grub_util_get_localedir.
> (copy_locales): Use get_localedir rather than
> grub_util_get_localedir.
> (grub_install_copy_files): Likewise.
I think you need an addition to look for all of
$localedir/$lang{.mo,.gmo} and $localedir/$lang/LC_MESSAGES/grub.mo.
Like following (not tested):
diff --git a/util/grub-install-common.c b/util/grub-install-common.c
diff --git a/util/grub-install-common.c b/util/grub-install-common.c
index 4e1d41a..bf722da 100644
--- a/util/grub-install-common.c
+++ b/util/grub-install-common.c
@@ -570,13 +586,26 @@ copy_locales (const char *dstd)
{
char *srcf;
char *dstf;
+ char *ext;
if (strcmp (de->d_name, ".") == 0)
continue;
if (strcmp (de->d_name, "..") == 0)
continue;
- srcf = grub_util_path_concat_ext (4, locale_dir, de->d_name,
+ ext = grub_strrchr (de->d_name, '.');
+ if (ext && (grub_strcmp (ext, ".mo") == 0
+ || grub_strcmp (ext, ".gmo") == 0))
+ {
+ srcf = grub_util_path_concat (2, locale_dir, de->d_name);
+ dstf = grub_util_path_concat (2, dstd, de->d_name);
+ ext = grub_strrchr (dstf, '.');
+ grub_strcpy (ext, ".mo");
+ }
+ else
+ {
+ srcf = grub_util_path_concat_ext (4, locale_dir, de->d_name,
"LC_MESSAGES", PACKAGE, ".mo");
- dstf = grub_util_path_concat_ext (2, dstd, de->d_name, ".mo");
+ dstf = grub_util_path_concat_ext (2, dstd, de->d_name, ".mo");
+ }
grub_install_compress_file (srcf, dstf, 0);
free (srcf);
free (dstf);
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 291 bytes --]
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2013-11-22 3:30 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-11-21 18:32 [PATCH] Add a --locale-directory option to grub-install and related tools Colin Watson
2013-11-22 3:29 ` Vladimir 'φ-coder/phcoder' Serbinenko
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).