diff options
author | andersen <andersen@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2000-07-05 17:26:35 +0000 |
---|---|---|
committer | andersen <andersen@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2000-07-05 17:26:35 +0000 |
commit | d51df1bb1b5513658a5517d49ed8ded55c819f62 (patch) | |
tree | a2fa5e67df2ccd2881a21ed4d22c6f7453b793b2 /tr.c | |
parent | 2323f4066d8cab67c2edc21361d27e1983e55b7a (diff) | |
download | busybox-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 'tr.c')
-rw-r--r-- | tr.c | 12 |
1 files changed, 2 insertions, 10 deletions
@@ -111,22 +111,14 @@ static void map(register unsigned char *string1, register unsigned char *string2 | |||
111 | } | 111 | } |
112 | } | 112 | } |
113 | 113 | ||
114 | static void expand(register char *arg, register unsigned char *buffer) | 114 | static void expand(char *arg, register unsigned char *buffer) |
115 | { | 115 | { |
116 | int i, ac; | 116 | int i, ac; |
117 | 117 | ||
118 | while (*arg) { | 118 | while (*arg) { |
119 | if (*arg == '\\') { | 119 | if (*arg == '\\') { |
120 | arg++; | 120 | arg++; |
121 | i = ac = 0; | 121 | *buffer++ = process_escape_sequence(&arg); |
122 | if (*arg >= '0' && *arg <= '7') { | ||
123 | do { | ||
124 | ac = (ac << 3) + *arg++ - '0'; | ||
125 | i++; | ||
126 | } while (i < 4 && *arg >= '0' && *arg <= '7'); | ||
127 | *buffer++ = ac; | ||
128 | } else if (*arg != '\0') | ||
129 | *buffer++ = *arg++; | ||
130 | } else if (*arg == '[') { | 122 | } else if (*arg == '[') { |
131 | arg++; | 123 | arg++; |
132 | i = *arg++; | 124 | i = *arg++; |