All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] minimum bash version
@ 2011-10-10 21:58 Michal Soltys
       [not found] ` <1318283885-1792-1-git-send-email-soltys-R61QfzASbfY@public.gmane.org>
  0 siblings, 1 reply; 8+ messages in thread
From: Michal Soltys @ 2011-10-10 21:58 UTC (permalink / raw)
  To: initramfs-u79uwXL29TY76Z2rM5mHXA

I'm not sure what is current policy on bash version, but with 2 small
adjustments, dracut can be easily made bash 3.1 compatible (if I haven't missed
anything).

If this is desirable, the first patch adjusts {var}>& redirections with eval
and explicit FDs, and ^^/,, case-modifiers with temporary shopt ajustment.

If it's not necessary, then 2nd patch can be adjusted to simply require at least
bash 4.0.

Also pullable from:
The following changes since commit 450f5d66944e4a4ae005c75a818c3cccd28836f3:

  95udev-rules/module-setup.s: fixed symlink for udevd to initdir (2011-10-10 20:17:16 +0200)

  are available in the git repository at:
    git://git.hasevolq.net/dracut.git bashfix


Michal Soltys (2):
  bash3 compat patch
  explicitly verify bash version

 dracut                                     |    7 +++++++
 dracut-functions                           |   11 +++++++----
 modules.d/10i18n/module-setup.sh           |    8 +++++---
 modules.d/40network/module-setup.sh        |   19 ++++++++++++-------
 modules.d/90kernel-modules/module-setup.sh |   19 ++++++++++++-------
 5 files changed, 43 insertions(+), 21 deletions(-)

-- 
1.7.5.3

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 1/2] bash3 compat patch
       [not found] ` <1318283885-1792-1-git-send-email-soltys-R61QfzASbfY@public.gmane.org>
@ 2011-10-10 21:58   ` Michal Soltys
  2011-10-11  7:11     ` WANG Cong
       [not found]     ` <1318283885-1792-2-git-send-email-soltys-R61QfzASbfY@public.gmane.org>
  2011-10-10 21:58   ` [PATCH 2/2] explicitly verify bash version Michal Soltys
  1 sibling, 2 replies; 8+ messages in thread
From: Michal Soltys @ 2011-10-10 21:58 UTC (permalink / raw)
  To: initramfs-u79uwXL29TY76Z2rM5mHXA

This patch replaces:

- {var}>... redirections with functionally identical eval construct +
  explicit FDs
- ^^ and ,, case modifiers with temporary shopt

This allows us to lower minimum required bash version
to at least 3.1 (with current code).

Signed-off-by: Michal Soltys <soltys-R61QfzASbfY@public.gmane.org>
---
 dracut-functions                           |   11 +++++++----
 modules.d/10i18n/module-setup.sh           |    8 +++++---
 modules.d/40network/module-setup.sh        |   19 ++++++++++++-------
 modules.d/90kernel-modules/module-setup.sh |   19 ++++++++++++-------
 4 files changed, 36 insertions(+), 21 deletions(-)

diff --git a/dracut-functions b/dracut-functions
index ce593c9..1ef5269 100755
--- a/dracut-functions
+++ b/dracut-functions
@@ -821,10 +821,11 @@ install_kmod_with_fw() {
 #      It will be passed the full path to the found kernel module
 # $2 = module to get dependencies for
 # rest of args = arguments to modprobe
+# _fderr specifies FD passed from surrounding scope
 for_each_kmod_dep() {
     local _func=$1 _kmod=$2 _cmd _modpath _options _found=0
     shift 2
-    modprobe "$@" --ignore-install --show-depends $_kmod 2>&$modprobe_stderr | (
+    modprobe "$@" --ignore-install --show-depends $_kmod 2>&${_fderr} | (
         while read _cmd _modpath _options; do
             [[ $_cmd = insmod ]] || continue
             $_func ${_modpath} || exit $?
@@ -885,6 +886,8 @@ find_kernel_modules () {
 # install kernel modules along with all their dependencies.
 instmods() {
     [[ $no_kernel = yes ]] && return
+    # called [sub]functions inherit _fderr
+    local _fderr=9
 
     function inst1mod() {
         local _mod="$1"
@@ -949,9 +952,9 @@ instmods() {
         return $_ret
     }
 
-    # Capture all stderr from modprobe onto a new fd $modprobe_stderr,
-    # and pipe it into egrep.  See REDIRECTION in bash manpage.
-    ( instmods_1 "$@" ) {modprobe_stderr}>&1 \
+    # Capture all stderr from modprobe to _fderr. We could use {var}>...
+    # redirections, but that would make dracut require bash4 at least.
+    eval "( instmods_1 \"\$@\" ) ${_fderr}>&1" \
     | egrep -v 'FATAL: Module .* not found.' | derror
     return $?
 }
diff --git a/modules.d/10i18n/module-setup.sh b/modules.d/10i18n/module-setup.sh
index 5c09100..6248607 100755
--- a/modules.d/10i18n/module-setup.sh
+++ b/modules.d/10i18n/module-setup.sh
@@ -150,22 +150,24 @@ install() {
             inst_simple ${kbddir}/unimaps/${FONT_UNIMAP}.uni
         fi
 
+        shopt -q -s nocasematch
         if [[ ${UNICODE} ]]
         then
-            if [[ ${UNICODE^^} = YES || ${UNICODE} = 1 ]]
+            if [[ ${UNICODE} = YES || ${UNICODE} = 1 ]]
             then
                 UNICODE=1
-            elif [[ ${UNICODE^^} = NO || ${UNICODE} = 0 ]]
+            elif [[ ${UNICODE} = NO || ${UNICODE} = 0 ]]
             then
                 UNICODE=0
             else
                 UNICODE=''
             fi
         fi
-        if [[ ! ${UNICODE} && ${LANG^^} =~ .*\.UTF-?8 ]]
+        if [[ ! ${UNICODE} && ${LANG} =~ .*\.UTF-?8 ]]
         then
             UNICODE=1
         fi
+        shopt -q -u nocasematch
 
         mksubdirs ${initdir}${I18N_CONF}
         mksubdirs ${initdir}${VCONFIG_CONF}
diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh
index 03684f1..eb7ef9b 100755
--- a/modules.d/40network/module-setup.sh
+++ b/modules.d/40network/module-setup.sh
@@ -27,6 +27,8 @@ installkernel() {
     net_module_filter() {
         local _net_drivers='eth_type_trans|register_virtio_device'
         local _unwanted_drivers='/(wireless|isdn|uwb)/'
+        # subfunctions inherit following FDs
+        local _merge=8 _side2=9
         function nmf1() {
             local _fname _fcont
             while read _fname; do
@@ -40,14 +42,17 @@ installkernel() {
                 && echo "$_fname"
             done
         }
+        function rotor() {
+            local _f1 _f2
+            while read _f1; do
+                echo "$_f1"
+                if read _f2; then
+                    echo "$_f2" 1>&${_side2}
+                fi
+            done | nmf1 1>&${_merge}
+        }
         # Use two parallel streams to filter alternating modules.
-        local merge side2
-        ( ( local _f1 _f2
-            while  read _f1; do   echo "$_f1"
-                if read _f2; then echo "$_f2" 1>&${side2}; fi
-            done \
-            | nmf1     1>&${merge}    ) {side2}>&1 \
-            | nmf1  )      {merge}>&1
+        eval "( ( rotor ) ${_side2}>&1 | nmf1 ) ${_merge}>&1"
     }
 
     find_kernel_modules_by_path drivers/net | net_module_filter | instmods
diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh
index 09bd87e..6e3a918 100755
--- a/modules.d/90kernel-modules/module-setup.sh
+++ b/modules.d/90kernel-modules/module-setup.sh
@@ -11,6 +11,8 @@ installkernel() {
         }
         block_module_filter() {
             local _blockfuncs='ahci_init_controller|ata_scsi_ioctl|scsi_add_host|blk_init_queue|register_mtd_blktrans|scsi_esp_register|register_virtio_device'
+            # subfunctions inherit following FDs
+            local _merge=8 _side2=9
             function bmf1() {
                 local _f
                 while read _f; do case "$_f" in
@@ -19,14 +21,17 @@ installkernel() {
                     esac
                 done
             }
+            function rotor() {
+                local _f1 _f2
+                while read _f1; do
+                    echo "$_f1"
+                    if read _f2; then
+                        echo "$_f2" 1>&${_side2}
+                    fi
+                done | bmf1 1>&${_merge}
+            }
             # Use two parallel streams to filter alternating modules.
-            local merge side2
-            ( ( local _f1 _f2
-                while  read _f1; do   echo "$_f1"
-                    if read _f2; then echo "$_f2" 1>&${side2}; fi
-                done \
-                | bmf1     1>&${merge}    ) {side2}>&1 \
-                | bmf1  )      {merge}>&1
+            eval "( ( rotor ) ${_side2}>&1 | bmf1 ) ${_merge}>&1"
         }
         hostonly='' instmods sr_mod sd_mod scsi_dh scsi_dh_rdac scsi_dh_emc
         hostonly='' instmods pcmcia firewire-ohci
-- 
1.7.5.3

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/2] explicitly verify bash version
       [not found] ` <1318283885-1792-1-git-send-email-soltys-R61QfzASbfY@public.gmane.org>
  2011-10-10 21:58   ` [PATCH 1/2] bash3 compat patch Michal Soltys
@ 2011-10-10 21:58   ` Michal Soltys
       [not found]     ` <1318283885-1792-3-git-send-email-soltys-R61QfzASbfY@public.gmane.org>
  1 sibling, 1 reply; 8+ messages in thread
From: Michal Soltys @ 2011-10-10 21:58 UTC (permalink / raw)
  To: initramfs-u79uwXL29TY76Z2rM5mHXA

A simple check in main dracut script.

Signed-off-by: Michal Soltys <soltys-R61QfzASbfY@public.gmane.org>
---
 dracut |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/dracut b/dracut
index 63d4ea6..205f5d1 100755
--- a/dracut
+++ b/dracut
@@ -418,6 +418,13 @@ else
     exit 1
 fi
 
+# Verify bash version, curret minimum is 3.1
+if (( ${BASH_VERSINFO[0]} < 3 ||
+    ( ${BASH_VERSINFO[0]} == 3 && ${BASH_VERSINFO[1]} < 1 ) )); then
+    dfatal 'You need at least Bash 3.1 to use dracut, sorry.'
+    exit 1
+fi
+
 dracutfunctions=$dracutbasedir/dracut-functions
 export dracutfunctions
 
-- 
1.7.5.3

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/2] bash3 compat patch
  2011-10-10 21:58   ` [PATCH 1/2] bash3 compat patch Michal Soltys
@ 2011-10-11  7:11     ` WANG Cong
  2011-10-11  8:53       ` Michal Soltys
       [not found]     ` <1318283885-1792-2-git-send-email-soltys-R61QfzASbfY@public.gmane.org>
  1 sibling, 1 reply; 8+ messages in thread
From: WANG Cong @ 2011-10-11  7:11 UTC (permalink / raw)
  To: initramfs-u79uwXL29TY76Z2rM5mHXA

On Mon, 10 Oct 2011 23:58:04 +0200, Michal Soltys wrote:

> +            function rotor() {
> +                local _f1 _f2
> +                while read _f1; do
> +                    echo "$_f1"
> +                    if read _f2; then 
> +                        echo "$_f2" 1>&${_side2} 
> +                    fi
> +                done | bmf1 1>&${_merge} +            }
>              # Use two parallel streams to filter alternating modules.
> -            local merge side2
> -            ( ( local _f1 _f2
> -                while  read _f1; do   echo "$_f1" 
> -                   if read _f2; then echo "$_f2" 1>&${side2}; fi 
> -                done \
> -                | bmf1     1>&${merge}    ) {side2}>&1 \ 
> -             
>   | bmf1  )      {merge}>&1 
> +            eval "( ( rotor ) ${_side2}>&1
> | bmf1 ) ${_merge}>&1"
>          }
>          hostonly='' instmods sr_mod sd_mod scsi_dh scsi_dh_rdac
>          scsi_dh_emc hostonly='' instmods pcmcia firewire-ohci

Interesting function, if i understand it correctly, it parallelizes
the stream into two so that can speed up the pattern filtering?

My brain spins...

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/2] bash3 compat patch
       [not found]     ` <1318283885-1792-2-git-send-email-soltys-R61QfzASbfY@public.gmane.org>
@ 2011-10-11  7:39       ` Harald Hoyer
  0 siblings, 0 replies; 8+ messages in thread
From: Harald Hoyer @ 2011-10-11  7:39 UTC (permalink / raw)
  To: Michal Soltys; +Cc: initramfs-u79uwXL29TY76Z2rM5mHXA

pushed

On 10.10.2011 23:58, Michal Soltys wrote:
> This patch replaces:
> 
> - {var}>... redirections with functionally identical eval construct +
>   explicit FDs
> - ^^ and ,, case modifiers with temporary shopt
> 
> This allows us to lower minimum required bash version
> to at least 3.1 (with current code).
> 
> Signed-off-by: Michal Soltys <soltys-R61QfzASbfY@public.gmane.org>
> ---
>  dracut-functions                           |   11 +++++++----
>  modules.d/10i18n/module-setup.sh           |    8 +++++---
>  modules.d/40network/module-setup.sh        |   19 ++++++++++++-------
>  modules.d/90kernel-modules/module-setup.sh |   19 ++++++++++++-------
>  4 files changed, 36 insertions(+), 21 deletions(-)
> 
> diff --git a/dracut-functions b/dracut-functions
> index ce593c9..1ef5269 100755
> --- a/dracut-functions
> +++ b/dracut-functions
> @@ -821,10 +821,11 @@ install_kmod_with_fw() {
>  #      It will be passed the full path to the found kernel module
>  # $2 = module to get dependencies for
>  # rest of args = arguments to modprobe
> +# _fderr specifies FD passed from surrounding scope
>  for_each_kmod_dep() {
>      local _func=$1 _kmod=$2 _cmd _modpath _options _found=0
>      shift 2
> -    modprobe "$@" --ignore-install --show-depends $_kmod 2>&$modprobe_stderr | (
> +    modprobe "$@" --ignore-install --show-depends $_kmod 2>&${_fderr} | (
>          while read _cmd _modpath _options; do
>              [[ $_cmd = insmod ]] || continue
>              $_func ${_modpath} || exit $?
> @@ -885,6 +886,8 @@ find_kernel_modules () {
>  # install kernel modules along with all their dependencies.
>  instmods() {
>      [[ $no_kernel = yes ]] && return
> +    # called [sub]functions inherit _fderr
> +    local _fderr=9
>  
>      function inst1mod() {
>          local _mod="$1"
> @@ -949,9 +952,9 @@ instmods() {
>          return $_ret
>      }
>  
> -    # Capture all stderr from modprobe onto a new fd $modprobe_stderr,
> -    # and pipe it into egrep.  See REDIRECTION in bash manpage.
> -    ( instmods_1 "$@" ) {modprobe_stderr}>&1 \
> +    # Capture all stderr from modprobe to _fderr. We could use {var}>...
> +    # redirections, but that would make dracut require bash4 at least.
> +    eval "( instmods_1 \"\$@\" ) ${_fderr}>&1" \
>      | egrep -v 'FATAL: Module .* not found.' | derror
>      return $?
>  }
> diff --git a/modules.d/10i18n/module-setup.sh b/modules.d/10i18n/module-setup.sh
> index 5c09100..6248607 100755
> --- a/modules.d/10i18n/module-setup.sh
> +++ b/modules.d/10i18n/module-setup.sh
> @@ -150,22 +150,24 @@ install() {
>              inst_simple ${kbddir}/unimaps/${FONT_UNIMAP}.uni
>          fi
>  
> +        shopt -q -s nocasematch
>          if [[ ${UNICODE} ]]
>          then
> -            if [[ ${UNICODE^^} = YES || ${UNICODE} = 1 ]]
> +            if [[ ${UNICODE} = YES || ${UNICODE} = 1 ]]
>              then
>                  UNICODE=1
> -            elif [[ ${UNICODE^^} = NO || ${UNICODE} = 0 ]]
> +            elif [[ ${UNICODE} = NO || ${UNICODE} = 0 ]]
>              then
>                  UNICODE=0
>              else
>                  UNICODE=''
>              fi
>          fi
> -        if [[ ! ${UNICODE} && ${LANG^^} =~ .*\.UTF-?8 ]]
> +        if [[ ! ${UNICODE} && ${LANG} =~ .*\.UTF-?8 ]]
>          then
>              UNICODE=1
>          fi
> +        shopt -q -u nocasematch
>  
>          mksubdirs ${initdir}${I18N_CONF}
>          mksubdirs ${initdir}${VCONFIG_CONF}
> diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh
> index 03684f1..eb7ef9b 100755
> --- a/modules.d/40network/module-setup.sh
> +++ b/modules.d/40network/module-setup.sh
> @@ -27,6 +27,8 @@ installkernel() {
>      net_module_filter() {
>          local _net_drivers='eth_type_trans|register_virtio_device'
>          local _unwanted_drivers='/(wireless|isdn|uwb)/'
> +        # subfunctions inherit following FDs
> +        local _merge=8 _side2=9
>          function nmf1() {
>              local _fname _fcont
>              while read _fname; do
> @@ -40,14 +42,17 @@ installkernel() {
>                  && echo "$_fname"
>              done
>          }
> +        function rotor() {
> +            local _f1 _f2
> +            while read _f1; do
> +                echo "$_f1"
> +                if read _f2; then
> +                    echo "$_f2" 1>&${_side2}
> +                fi
> +            done | nmf1 1>&${_merge}
> +        }
>          # Use two parallel streams to filter alternating modules.
> -        local merge side2
> -        ( ( local _f1 _f2
> -            while  read _f1; do   echo "$_f1"
> -                if read _f2; then echo "$_f2" 1>&${side2}; fi
> -            done \
> -            | nmf1     1>&${merge}    ) {side2}>&1 \
> -            | nmf1  )      {merge}>&1
> +        eval "( ( rotor ) ${_side2}>&1 | nmf1 ) ${_merge}>&1"
>      }
>  
>      find_kernel_modules_by_path drivers/net | net_module_filter | instmods
> diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh
> index 09bd87e..6e3a918 100755
> --- a/modules.d/90kernel-modules/module-setup.sh
> +++ b/modules.d/90kernel-modules/module-setup.sh
> @@ -11,6 +11,8 @@ installkernel() {
>          }
>          block_module_filter() {
>              local _blockfuncs='ahci_init_controller|ata_scsi_ioctl|scsi_add_host|blk_init_queue|register_mtd_blktrans|scsi_esp_register|register_virtio_device'
> +            # subfunctions inherit following FDs
> +            local _merge=8 _side2=9
>              function bmf1() {
>                  local _f
>                  while read _f; do case "$_f" in
> @@ -19,14 +21,17 @@ installkernel() {
>                      esac
>                  done
>              }
> +            function rotor() {
> +                local _f1 _f2
> +                while read _f1; do
> +                    echo "$_f1"
> +                    if read _f2; then
> +                        echo "$_f2" 1>&${_side2}
> +                    fi
> +                done | bmf1 1>&${_merge}
> +            }
>              # Use two parallel streams to filter alternating modules.
> -            local merge side2
> -            ( ( local _f1 _f2
> -                while  read _f1; do   echo "$_f1"
> -                    if read _f2; then echo "$_f2" 1>&${side2}; fi
> -                done \
> -                | bmf1     1>&${merge}    ) {side2}>&1 \
> -                | bmf1  )      {merge}>&1
> +            eval "( ( rotor ) ${_side2}>&1 | bmf1 ) ${_merge}>&1"
>          }
>          hostonly='' instmods sr_mod sd_mod scsi_dh scsi_dh_rdac scsi_dh_emc
>          hostonly='' instmods pcmcia firewire-ohci

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/2] explicitly verify bash version
       [not found]     ` <1318283885-1792-3-git-send-email-soltys-R61QfzASbfY@public.gmane.org>
@ 2011-10-11  7:39       ` Harald Hoyer
  0 siblings, 0 replies; 8+ messages in thread
From: Harald Hoyer @ 2011-10-11  7:39 UTC (permalink / raw)
  To: Michal Soltys; +Cc: initramfs-u79uwXL29TY76Z2rM5mHXA

On 10.10.2011 23:58, Michal Soltys wrote:
> A simple check in main dracut script.
> 
> Signed-off-by: Michal Soltys <soltys-R61QfzASbfY@public.gmane.org>
> ---
>  dracut |    7 +++++++
>  1 files changed, 7 insertions(+), 0 deletions(-)
> 
> diff --git a/dracut b/dracut
> index 63d4ea6..205f5d1 100755
> --- a/dracut
> +++ b/dracut
> @@ -418,6 +418,13 @@ else
>      exit 1
>  fi
>  
> +# Verify bash version, curret minimum is 3.1
> +if (( ${BASH_VERSINFO[0]} < 3 ||
> +    ( ${BASH_VERSINFO[0]} == 3 && ${BASH_VERSINFO[1]} < 1 ) )); then
> +    dfatal 'You need at least Bash 3.1 to use dracut, sorry.'
> +    exit 1
> +fi
> +
>  dracutfunctions=$dracutbasedir/dracut-functions
>  export dracutfunctions
>  

pushed

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/2] bash3 compat patch
  2011-10-11  7:11     ` WANG Cong
@ 2011-10-11  8:53       ` Michal Soltys
       [not found]         ` <4E940418.6080102-R61QfzASbfY@public.gmane.org>
  0 siblings, 1 reply; 8+ messages in thread
From: Michal Soltys @ 2011-10-11  8:53 UTC (permalink / raw)
  To: WANG Cong; +Cc: initramfs-u79uwXL29TY76Z2rM5mHXA

On 11.10.2011 09:11, WANG Cong wrote:
>
> Interesting function, if i understand it correctly, it parallelizes
> the stream into two so that can speed up the pattern filtering?
>
> My brain spins...
>
It was added by John Reiser (see commit 
d23159a69c818274486f1287ba6267b96f3febb7).

I just moved the main body into a function, so it's easily eval'able - 
in order to avoid {var}>& construct. As a side effect, it's 
(subjectively) a bit easier to read.

 From what I can see, the outermost parentheses along with related 
_merge fd could probably be removed. Not tested that though, no big 
difference either.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/2] bash3 compat patch
       [not found]         ` <4E940418.6080102-R61QfzASbfY@public.gmane.org>
@ 2011-10-12 16:09           ` John Reiser
  0 siblings, 0 replies; 8+ messages in thread
From: John Reiser @ 2011-10-12 16:09 UTC (permalink / raw)
  To: Michal Soltys; +Cc: WANG Cong, initramfs-u79uwXL29TY76Z2rM5mHXA

On 10/11/2011 01:53 AM, Michal Soltys wrote:
> On 11.10.2011 09:11, WANG Cong wrote:
>>
>> Interesting function, if i understand it correctly, it parallelizes
>> the stream into two so that can speed up the pattern filtering?
>>
>> My brain spins...
>>
> It was added by John Reiser (see commit d23159a69c818274486f1287ba6267b96f3febb7).
> 
> I just moved the main body into a function, so it's easily eval'able - in order to avoid {var}>& construct. As a side effect, it's (subjectively) a bit easier to read.

It may be easier to read the latest version "in the small",
but the re-formatting has destroyed the visual parallelism of the code.
The two-dimensional presentation highlights both the similarities
and differences of the two sides, and this can be essential
for easy understanding of the global situation.  In particular,
the 2-D presentation makes it easier to trace the pipes
and to see the similarities of the two sides:
-----
       local merge side2
       ( ( local _f1 _f2
           while  read _f1; do   echo "$_f1"
               if read _f2; then echo "$_f2" 1>&${side2}; fi
           done \
           | nmf1     1>&${merge}    )           {side2}>&1 \
           | nmf1  )      {merge}>&1
-----

-- 

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2011-10-12 16:09 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-10-10 21:58 [PATCH 0/2] minimum bash version Michal Soltys
     [not found] ` <1318283885-1792-1-git-send-email-soltys-R61QfzASbfY@public.gmane.org>
2011-10-10 21:58   ` [PATCH 1/2] bash3 compat patch Michal Soltys
2011-10-11  7:11     ` WANG Cong
2011-10-11  8:53       ` Michal Soltys
     [not found]         ` <4E940418.6080102-R61QfzASbfY@public.gmane.org>
2011-10-12 16:09           ` John Reiser
     [not found]     ` <1318283885-1792-2-git-send-email-soltys-R61QfzASbfY@public.gmane.org>
2011-10-11  7:39       ` Harald Hoyer
2011-10-10 21:58   ` [PATCH 2/2] explicitly verify bash version Michal Soltys
     [not found]     ` <1318283885-1792-3-git-send-email-soltys-R61QfzASbfY@public.gmane.org>
2011-10-11  7:39       ` Harald Hoyer

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.