autoconf-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: cvs build prob


From: Patrick Welche
Subject: Re: cvs build prob
Date: Thu, 29 Jul 2004 19:47:05 +0100
User-agent: Mutt/1.5.6i

On Wed, Jul 28, 2004 at 11:22:09AM -0700, Paul Eggert wrote:
> Patrick Welche <address@hidden> writes:
> 
> > -elif test -n "${BASH_VERSION+set}${KSH_VERSION+set}" && (set -o posix) 
> > >/dev/null 2>&1; then
> > +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
> >    set -o posix
> > +elif test -n "${KSH_VERSION+set}" && (set +o posix) >/dev/null 2>&1; then
> > +  set +o posix
> 
> You need "set +o posix" for pdksh?  Doesn't that disable POSIX compatibility?

yes ?!

> Hmm, why would this fix things?  Autoconf uses what is supposed to be
> a subset of plain POSIX; we don't want to encourage shells to be
> incompatible with POSIX.

Well, here is

====================== bar =======================
set -o posix
Xsed='sed -e s/^X//'
no_glob_subst='s/\*/\\\*/g'

output_cmd="hello"
echo "output_cmd: ($output_cmd)"
output_one="`echo \"X$output_cmd\" | $Xsed -e \"$no_glob_subst\"`"
echo "output_one: ($output_cmd)"
output_two=`echo "X$output_cmd" | $Xsed -e "$no_glob_subst"`
echo "output_two: ($output_cmd)"
output_tri=$(echo "X$output_cmd" | $Xsed -e "$no_glob_subst")
echo "output_tri: ($output_cmd)"
===================================================
% ksh bar
output_cmd: (hello)
sed: 1: ""s/\*/\\\*/g"": invalid command code "
output_one: (hello)
output_two: (hello)
output_tri: (hello)

However, if I change that first line to set +o posix,

% ksh bar
output_cmd: (hello)
output_one: (hello)
output_two: (hello)
output_tri: (hello)

@(#)PD KSH v5.2.14 99/07/13.2

which is the same output as with sh, and no seting of posix.

Quoting from ksh(1):

       Note:  see  POSIX  Mode below for a special rule regarding sequences of
       the form "...`...\"...`..".
...
   POSIX Mode
       The shell is intended to be POSIX compliant, however,  in  some  cases,
       POSIX behaviour is contrary either to the original Korn shell behaviour
       or to user convenience.  How the shell behaves in these cases is deter-
       mined  by  the state of the posix option (set -o posix) -- if it is on,
       the POSIX behaviour is followed, otherwise it is not.  The posix option
       is  set  automatically when the shell starts up if the environment con-
       tains the POSIXLY_CORRECT parameter.  (The shell can also  be  compiled
       so  that  it  is  in POSIX mode by default, however this is usually not
       desirable).

       The following is a list of things that are affected by the state of the
       posix option:
         o    \"  inside  double  quoted  `..` command substitutions: in posix
              mode, the \" is interpreted when the command is interpreted;  in
              non-posix  mode,  the  backslash  is stripped before the command
              substitution is interpreted.  For example, echo "`echo  \"hi\"`"
              produces `"hi"' in posix mode, `hi' in non-posix mode.  To avoid
              problems, use the $(...)  form of command substitution.


Cheers,

Patrick




reply via email to

[Prev in Thread] Current Thread [Next in Thread]