autoconf
[Top][All Lists]
Advanced

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

RE: AS_EXIT (Was: Backquotes in quotes in backquotes)


From: Bernard Dautrevaux
Subject: RE: AS_EXIT (Was: Backquotes in quotes in backquotes)
Date: Thu, 30 Nov 2000 18:52:49 +0100

> -----Original Message-----
> From: Akim Demaille [mailto:address@hidden
> Sent: Thursday, November 30, 2000 6:34 PM
> To: Daniele Arena
> Cc: Pavel Roskin; address@hidden; APatche
> Subject: FYI: AS_EXIT (Was: Backquotes in quotes in backquotes)
> 
> 
> >>>>> "Akim" == Akim Demaille <address@hidden> writes:
> 
> Akim> Gimme a couple minutes :)
> 
> You can check now.
> 
> Index: ChangeLog
> from  Akim Demaille  <address@hidden>
>       * sh.m4 (AS_EXIT): Don't rely on false exiting 1.
>       Actually, always use `(exit $val); exit', don't try smart stuff.
>       * doc/autoconf.texi (Limitations of Builtins) <false>: new.
> 
> Index: m4sh.m4
> ===================================================================
> RCS file: /cvs/autoconf/m4sh.m4,v
> retrieving revision 1.15
> diff -u -u -r1.15 m4sh.m4
> --- m4sh.m4 2000/11/30 16:30:54 1.15
> +++ m4sh.m4 2000/11/30 17:26:25
> @@ -106,11 +106,7 @@
>  # So we set $? by executing "exit N" in the subshell and then exit.
>  # "false" is used for exit code 1 (default), ":" is used for 0

Isn't this comment misleading now?...

>  m4_define([AS_EXIT],
> -[{ m4_case([$1],
> -           [0], [:; exit],
> -           [],  [false; exit],
> -           [1], [false; exit],
> -           [(exit $1); exit]); }])
> +[{ (exit m4_default([$1], 1)); exit; }])
>  
>  
>  # AS_IFELSE(TEST, [IF-TRUE], [IF-FALSE])
> Index: doc/autoconf.texi
> ===================================================================
> RCS file: /cvs/autoconf/doc/autoconf.texi,v
> retrieving revision 1.400
> diff -u -u -r1.400 autoconf.texi
> --- doc/autoconf.texi 2000/11/30 14:48:03 1.400
> +++ doc/autoconf.texi 2000/11/30 17:26:46
> @@ -5515,11 +5515,15 @@
>  @cindex @command{!}
>  You can't use @command{!}, you'll have to rewrite your code.
>  
> +
>  @item @command{break}
> address@hidden ------------------
>  @cindex @command{break}
>  The use of @samp{break 2} etc. is safe.
>  
> +
>  @item @command{case}
> address@hidden -----------------
>  @cindex @command{case}
>  You don't need to quote the argument, no splitting is performed.
>  
> @@ -5545,7 +5549,9 @@
>  OK
>  @end example
>  
> +
>  @item @command{echo}
> address@hidden -----------------
>  @cindex @command{echo}
>  The simple @code{echo} is probably the most surprising source of
>  portability troubles.
> @@ -5562,7 +5568,9 @@
>  problem is truly @command{echo}: all the shells understand 
> @samp{'\n'}
>  as the string composed of a backslash and an n.
>  
> +
>  @item @command{exit}
> address@hidden -----------------
>  @cindex @command{exit}
>  @c FIXME: A better merging between this item and `trap' is welcome.
>  Some shell scripts, such as those generated by 
> @command{autoconf}, use a
> @@ -5576,7 +5584,9 @@
>  @code{exit 1}.  Instead of calling @code{exit} directly, use the
>  @code{AC_MSG_ERROR} macro that has a workaround for this problem.
>  
> +
>  @item @command{export}
> address@hidden -------------------
>  @cindex @command{export}
>  The builtin @command{export} dubs @dfn{environment variable} a shell
>  variable.  Each update of exported variables corresponds to 
> an update of
> @@ -5606,7 +5616,16 @@
>  Therefore you should @command{export} again each environment variable
>  you update.
>  
> +
> address@hidden @command{false}
> address@hidden ------------------
> address@hidden @command{false}
> +Don't expect @command{false} to exit with status 1: The native Bourne
> +shell of Solaris 2.8 exits with status 255.
> +
> +
>  @item @command{for}
> address@hidden ----------------
>  @cindex @command{for}
>  To loop over positional arguments, use
>  
> @@ -5656,6 +5675,7 @@
>  @end example
>  
>  @item @command{set}
> address@hidden ----------------
>  @cindex @command{set}
>  This builtin faces the usual problem with arguments starting with a
>  dash.  Modern shells, such as Bash or Zsh understand @samp{--} to
> @@ -5670,12 +5690,14 @@
>  @end example
>  
>  @item @command{shift}
> address@hidden ------------------
>  @cindex @command{shift}
>  Not only is @command{shift}ing a bad idea when there is 
> nothing left to
>  shift, but in addition it is not portable: the shell of @sc{mips
>  risc/os} 4.52 refuses it.
>  
>  @item @command{test}
> address@hidden -----------------
>  @cindex @command{test}
>  The @code{test} program is the way to perform many file and string
>  tests.  It is often invoked by the alternate name @samp{[}, but using
> @@ -5773,7 +5795,9 @@
>  "address@hidden" | grep "address@hidden"}, because it avoids problems when
>  @address@hidden contains backslashes.
>  
> +
>  @item @command{trap}
> address@hidden -----------------
>  @cindex @command{trap}
>  It is safe to trap at least the signals 1, 2, 13 and 15.  
> You can also
>  trap 0, i.e., have the trap run when the script end (either via an
> @@ -5825,6 +5849,7 @@
>  Fortunately this bug affects only trap.
>  
>  @item @command{true}
> address@hidden -----------------
>  @cindex @command{true}
>  @cindex @command{:}
>  Don't worry: as far as we know @command{true} is portable.
> @@ -5841,6 +5866,7 @@
>  
>  
>  @item @command{unset}
> address@hidden ------------------
>  @cindex @command{unset}
>  You cannot assume the support of @command{unset}, 
> nevertheless, because
>  it is extremely useful to disable embarrassing variables such as
> @@ -5870,6 +5896,7 @@
>  
>  @table @asis
>  @item @command{awk}
> address@hidden ----------------
>  @cindex @command{awk}
>  Don't leave white spaces before the parentheses in user 
> functions calls,
>  @sc{gnu} awk will reject it:
> 
> 

Otherwise, seems OK :-)

        Bernard

--------------------------------------------
Bernard Dautrevaux
Microprocess Ingenierie
97 bis, rue de Colombes
92400 COURBEVOIE
FRANCE
Tel:    +33 (0) 1 47 68 80 80
Fax:    +33 (0) 1 47 88 97 85
e-mail: address@hidden
                address@hidden
-------------------------------------------- 



reply via email to

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