X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=builtins%2Fecho.def;h=e8b6edb2afa544f0d24d93968c84126d832261a2;hb=d166f048818e10cf3799aa24a174fb22835f1acc;hp=74ca0f447956684fc0de388ec8cd123e1959a5ce;hpb=ccc6cda312fea9f0468ee65b8f368e9653e1380b;p=platform%2Fupstream%2Fbash.git diff --git a/builtins/echo.def b/builtins/echo.def index 74ca0f4..e8b6edb 100644 --- a/builtins/echo.def +++ b/builtins/echo.def @@ -26,6 +26,8 @@ $PRODUCES echo.c # include #endif +#include "../bashansi.h" + #include #include "../shell.h" @@ -72,8 +74,8 @@ int echo_builtin (list) WORD_LIST *list; { - int display_return, do_v9, i; - char *temp; + int display_return, do_v9, i, len; + char *temp, *s; #if defined (DEFAULT_ECHO_TO_USG) /* System V machines already have a /bin/sh with a v9 behaviour. We @@ -130,13 +132,21 @@ just_echo: while (list) { - i = 0; - temp = do_v9 ? ansicstr (list->word->word, STRLEN (list->word->word), &i) + i = len = 0; + temp = do_v9 ? ansicstr (list->word->word, STRLEN (list->word->word), &i, &len) : list->word->word; if (temp) { - printf ("%s", temp); + if (do_v9) + { + for (s = temp; len > 0; len--) + putchar (*s++); + } + else + printf ("%s", temp); +#if defined (SunOS5) fflush (stdout); /* Fix for bug in SunOS 5.5 printf(3) */ +#endif } if (do_v9 && temp) free (temp);