aboutsummaryrefslogtreecommitdiff
path: root/coreutils/echo.c
diff options
context:
space:
mode:
authorandersen <andersen@69ca8d6d-28ef-0310-b511-8ec308f3f277>2000-07-05 17:26:35 +0000
committerandersen <andersen@69ca8d6d-28ef-0310-b511-8ec308f3f277>2000-07-05 17:26:35 +0000
commitd51df1bb1b5513658a5517d49ed8ded55c819f62 (patch)
treea2fa5e67df2ccd2881a21ed4d22c6f7453b793b2 /coreutils/echo.c
parent2323f4066d8cab67c2edc21361d27e1983e55b7a (diff)
downloadbusybox-w32-d51df1bb1b5513658a5517d49ed8ded55c819f62.tar.gz
busybox-w32-d51df1bb1b5513658a5517d49ed8ded55c819f62.tar.bz2
busybox-w32-d51df1bb1b5513658a5517d49ed8ded55c819f62.zip
* Fix to tr so it recognizes standard escape sequences. Merged common
escape seq. code from tr and echo into utility.c. Fix thanks to Matt Kraai <kraai@alumni.carnegiemellon.edu>. * This should close Bug #1015. Please test. -Erik git-svn-id: svn://busybox.net/trunk/busybox@737 69ca8d6d-28ef-0310-b511-8ec308f3f277
Diffstat (limited to 'coreutils/echo.c')
-rw-r--r--coreutils/echo.c28
1 files changed, 5 insertions, 23 deletions
diff --git a/coreutils/echo.c b/coreutils/echo.c
index 4659e4bc6..6e279d1c6 100644
--- a/coreutils/echo.c
+++ b/coreutils/echo.c
@@ -40,7 +40,7 @@ extern int
40echo_main(int argc, char** argv) 40echo_main(int argc, char** argv)
41{ 41{
42 register char **ap; 42 register char **ap;
43 register char *p; 43 char *p;
44 register char c; 44 register char c;
45 int nflag = 0; 45 int nflag = 0;
46 int eflag = 0; 46 int eflag = 0;
@@ -65,28 +65,10 @@ echo_main(int argc, char** argv)
65 while ((p = *ap++) != NULL) { 65 while ((p = *ap++) != NULL) {
66 while ((c = *p++) != '\0') { 66 while ((c = *p++) != '\0') {
67 if (c == '\\' && eflag) { 67 if (c == '\\' && eflag) {
68 switch (c = *p++) { 68 if (*p == 'c')
69 case 'a': c = '\007'; break; 69 exit(0);
70 case 'b': c = '\b'; break; 70 else
71 case 'c': exit( 0); /* exit */ 71 c = process_escape_sequence(&p);
72 case 'f': c = '\f'; break;
73 case 'n': c = '\n'; break;
74 case 'r': c = '\r'; break;
75 case 't': c = '\t'; break;
76 case 'v': c = '\v'; break;
77 case '\\': break; /* c = '\\' */
78 case '0': case '1': case '2': case '3':
79 case '4': case '5': case '6': case '7':
80 c -= '0';
81 if (*p >= '0' && *p <= '7')
82 c = c * 8 + (*p++ - '0');
83 if (*p >= '0' && *p <= '7')
84 c = c * 8 + (*p++ - '0');
85 break;
86 default:
87 p--;
88 break;
89 }
90 } 72 }
91 putchar(c); 73 putchar(c);
92 } 74 }