bug-bash
[Top][All Lists]
Advanced

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

Re: bash cannot print string "^-e"


From: Justin Piszcz
Subject: Re: bash cannot print string "^-e"
Date: Fri, 11 Jul 2003 11:17:30 -0400 (EDT)

address@hidden:~$ echo '-e -n'
-e -n
address@hidden:~$


On Sat, 12 Jul 2003, naOYA-OYAma wrote:

> Configuration Information [Automatically generated, do not change]:
> Machine: i386
> OS: linux-gnu
> Compiler: gcc -static
> Compilation CFLAGS:  -DPROGRAM='bash' -DCONF_HOSTTYPE='i386' 
> -DCONF_OSTYPE='linux-gnu' -DCONF_MACHTYPE='i386-turbo-linux-gnu' 
> -DCONF_VENDOR='turbo' -DSHELL -DHAVE_CONFIG_H -DNON_INTERACTIVE_LOGIN_SHELLS 
> -D_FILE_OFFSET_BITS=64  -I.  -I. -I./include -I./lib -I/usr/include -O2 
> -march=i586
> uname output: Linux unicorn.minaminoshima.org 2.4.18-8usb #4 木 12月 19 
> 00:26:27 JST 2002 i686 unknown
> Machine Type: i386-turbo-linux-gnu
>
> Bash Version: 2.04
> Patch Level: 0
> Release Status: release
>
> Description:
> builtin command of echo cannot print "-e" string.
> echo cannot print option string "-e, -n".
>
> Repeat-By:
> $ echo -e
>
> $
> $ echo -e -e
>
> $
> $ echo -- -e
> -- -e
> $
> $ echo -e \\055\\145
> -e
>
>
> Fix:
> i make a patch for bash-2.05.
> this patch adds an option  like -- of rm(1).
>
> --8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<--
> --- bash-2.05/builtins/echo.def       Fri Dec 17 21:12:40 1999
> +++ bash-2.05/builtins/echo.def.new   Mon Aug 27 22:26:41 2001
> @@ -62,9 +62,9 @@
>  $END
>
>  #if defined (V9_ECHO)
> -#  define VALID_ECHO_OPTIONS "neE"
> +#  define VALID_ECHO_OPTIONS "neE-"
>  #else /* !V9_ECHO */
> -#  define VALID_ECHO_OPTIONS "n"
> +#  define VALID_ECHO_OPTIONS "n-"
>  #endif /* !V9_ECHO */
>
>  /* System V machines already have a /bin/sh with a v9 behaviour.  We
> @@ -85,11 +85,12 @@
>  echo_builtin (list)
>       WORD_LIST *list;
>  {
> -  int display_return, do_v9, i, len;
> +  int display_return, do_v9, i, len, ignore_option;
>    char *temp, *s;
>
>    do_v9 = xpg_echo;
>    display_return = 1;
> +  ignore_option = 1;
>
>    for (; list && (temp = list->word->word) && *temp == '-'; list = 
> list->next)
>      {
> @@ -114,6 +115,9 @@
>       {
>         switch (i)
>           {
> +         case '-':
> +           ignore_option = 0;
> +           goto just_echo;
>           case 'n':
>             display_return = 0;
>             break;
> @@ -143,10 +147,10 @@
>         if (do_v9)
>           {
>             for (s = temp; len > 0; len--)
> -             putchar (*s++);
> +             ignore_option ? putchar (*s++):0;
>           }
>         else
> -         printf ("%s", temp);
> +         ignore_option ? printf ("%s", temp):0;
>  #if defined (SunOS5)
>         fflush (stdout);      /* Fix for bug in SunOS 5.5 printf(3) */
>  #endif
> @@ -159,8 +163,11 @@
>         display_return = 0;
>         break;
>       }
> -      if (list)
> +      if (list&&ignore_option)
>       putchar(' ');
> +      else
> +     ignore_option = 1;
> +
>      }
>
>    if (display_return)
> --8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<--
>
>
>
> _______________________________________________
> Bug-bash mailing list
> address@hidden
> http://mail.gnu.org/mailman/listinfo/bug-bash
>




reply via email to

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