[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bash cannot print string "^-e"
From: |
naOYA-OYAma |
Subject: |
bash cannot print string "^-e" |
Date: |
Sat, 12 Jul 2003 00:13:26 +0900 |
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<--
- bash cannot print string "^-e",
naOYA-OYAma <=