[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] grub-install: locale depends on nls
From: |
Olaf Hering |
Subject: |
[PATCH] grub-install: locale depends on nls |
Date: |
Tue, 27 Feb 2018 09:39:20 +0100 |
With --disable-nls no locales exist.
Avoid runtime error by wrapping install logic inside ENABLE_NLS.
Signed-off-by: Olaf Hering <address@hidden>
---
util/grub-install-common.c | 108 +++++++++++++++++++++++++--------------------
1 file changed, 59 insertions(+), 49 deletions(-)
--- a/util/grub-install-common.c
+++ b/util/grub-install-common.c
@@ -725,13 +725,69 @@ grub_install_get_platform_platform (enum
grub_install_plat platid)
return platforms[platid].platform;
}
+static void
+grub_install_copy_nls(const char *src, const char *dst)
+{
+#if (defined (GRUB_UTIL) && defined(ENABLE_NLS) && ENABLE_NLS)
+ char *dst_locale;
+
+ dst_locale = grub_util_path_concat (2, dst, "locale");
+ grub_install_mkdir_p (dst_locale);
+ clean_grub_dir (dst_locale);
+
+ if (install_locales.is_default)
+ {
+ char *srcd = grub_util_path_concat (2, src, "po");
+ copy_by_ext (srcd, dst_locale, ".mo", 0);
+ copy_locales (dst_locale);
+ free (srcd);
+ }
+ else
+ {
+ const char *locale_dir = get_localedir ();
+
+ for (i = 0; i < install_locales.n_entries; i++)
+ {
+ char *srcf = grub_util_path_concat_ext (3, src,
+ "po",
+ install_locales.entries[i],
+ ".mo");
+ char *dstf = grub_util_path_concat_ext (2, dst_locale,
+ install_locales.entries[i],
+ ".mo");
+ if (grub_install_compress_file (srcf, dstf, 0))
+ {
+ free (srcf);
+ free (dstf);
+ continue;
+ }
+ free (srcf);
+ srcf = grub_util_path_concat_ext (4,
+ locale_dir,
+ install_locales.entries[i],
+ "LC_MESSAGES",
+ PACKAGE,
+ ".mo");
+ if (grub_install_compress_file (srcf, dstf, 0))
+ {
+ free (srcf);
+ free (dstf);
+ continue;
+ }
+ grub_util_error (_("cannot find locale `%s'"),
+ install_locales.entries[i]);
+ }
+ }
+ free (dst_locale);
+#endif
+}
void
grub_install_copy_files (const char *src,
const char *dst,
enum grub_install_plat platid)
{
- char *dst_platform, *dst_locale, *dst_fonts;
+ char *dst_platform, *dst_fonts;
const char *pkgdatadir = grub_util_get_pkgdatadir ();
char *themes_dir;
@@ -742,13 +798,12 @@ grub_install_copy_files (const char *src,
dst_platform = grub_util_path_concat (2, dst, platform);
free (platform);
}
- dst_locale = grub_util_path_concat (2, dst, "locale");
dst_fonts = grub_util_path_concat (2, dst, "fonts");
grub_install_mkdir_p (dst_platform);
- grub_install_mkdir_p (dst_locale);
clean_grub_dir (dst);
clean_grub_dir (dst_platform);
- clean_grub_dir (dst_locale);
+
+ grub_install_copy_nls(src, dst);
if (install_modules.is_default)
copy_by_ext (src, dst_platform, ".mod", 1);
@@ -797,50 +852,6 @@ grub_install_copy_files (const char *src,
free (dstf);
}
- if (install_locales.is_default)
- {
- char *srcd = grub_util_path_concat (2, src, "po");
- copy_by_ext (srcd, dst_locale, ".mo", 0);
- copy_locales (dst_locale);
- free (srcd);
- }
- else
- {
- const char *locale_dir = get_localedir ();
-
- for (i = 0; i < install_locales.n_entries; i++)
- {
- char *srcf = grub_util_path_concat_ext (3, src,
- "po",
- install_locales.entries[i],
- ".mo");
- char *dstf = grub_util_path_concat_ext (2, dst_locale,
- install_locales.entries[i],
- ".mo");
- if (grub_install_compress_file (srcf, dstf, 0))
- {
- free (srcf);
- free (dstf);
- continue;
- }
- free (srcf);
- srcf = grub_util_path_concat_ext (4,
- locale_dir,
- install_locales.entries[i],
- "LC_MESSAGES",
- PACKAGE,
- ".mo");
- if (grub_install_compress_file (srcf, dstf, 0))
- {
- free (srcf);
- free (dstf);
- continue;
- }
- grub_util_error (_("cannot find locale `%s'"),
- install_locales.entries[i]);
- }
- }
-
if (install_themes.is_default)
{
install_themes.is_default = 0;
@@ -903,7 +914,6 @@ grub_install_copy_files (const char *src,
}
free (dst_platform);
- free (dst_locale);
free (dst_fonts);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [PATCH] grub-install: locale depends on nls,
Olaf Hering <=