grub_util_fd_closedir (d);
}
+#if !(defined (GRUB_UTIL) && defined(ENABLE_NLS) && ENABLE_NLS)
static const char *
get_localedir (void)
{
}
grub_util_fd_closedir (d);
}
+#endif
+
+static void
+grub_install_copy_nls(const char *src __attribute__ ((unused)),
+ const char *dst __attribute__ ((unused)))
+{
+#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
+ {
+ size_t i;
+ 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) == 0)
+ grub_util_error (_("cannot find locale `%s'"),
+ install_locales.entries[i]);
+ free (srcf);
+ free (dstf);
+ }
+ }
+ free (dst_locale);
+#endif
+}
static struct
{
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;
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);
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;
}
free (dst_platform);
- free (dst_locale);
free (dst_fonts);
}