On 06/18/2010 01:38 PM, Amadeusz Żołnowski wrote:
Dracut rely upon programs' output like ldd's "not a dynamic executable".
Assume user sets up Polish locales and then ldd prints
"nie jest dynamicznym programem wykonywalnym".  The patch prevents this.
---
  dracut |   15 +++++++++++++++
  1 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/dracut b/dracut
index 3be4989..1437625 100755
--- a/dracut
+++ b/dracut
@@ -71,6 +71,17 @@ Creates initial ramdisk images for preloading modules
  "
  }

+# Change locales and language leaving existing suffix (.utf8 or similar).
+# $1 = language (e.g. en_US)
+change_locales() {
+    local lang=(${LANG/./ })
+    lang[0]=$1
+    lang=${la...@]}
+    LANG=${lang/ /.}
+    LC_ALL=${LANG}
+    export LANG LC_ALL
+}
+
  while (($#>  0)); do
      case $1 in
        -f|--force) force=yes;;
@@ -107,6 +118,10 @@ done

  PATH=/sbin:/bin:/usr/sbin:/usr/bin
  export PATH
+# We rely upon programs' output like ldd's "not found", so we have to
+# set up English locales.
+change_locales en_US
+

  [[ $debug ]]&&  {
      export PS4='${bash_sour...@${lineno}(${FUNCNAME[0]}): ';

Hmm, we probably should prefix every call to an app, where we parse the output with LANG=C like this:

LANG=C ldd $file | grep -q "not found"
--
To unsubscribe from this list: send the line "unsubscribe initramfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to