diff options
| author | Denys Vlasenko <vda.linux@googlemail.com> | 2026-01-28 13:01:56 +0100 |
|---|---|---|
| committer | Denys Vlasenko <vda.linux@googlemail.com> | 2026-01-28 15:12:43 +0100 |
| commit | 03d6d1014aad3389a67b3050aa1e5ca049d241c6 (patch) | |
| tree | c2db7e104369982e4de531496606fcbf3baca1ea | |
| parent | 56143ea63ffe67356e8935bc8b2dfbd57d82e973 (diff) | |
| download | busybox-w32-03d6d1014aad3389a67b3050aa1e5ca049d241c6.tar.gz busybox-w32-03d6d1014aad3389a67b3050aa1e5ca049d241c6.tar.bz2 busybox-w32-03d6d1014aad3389a67b3050aa1e5ca049d241c6.zip | |
ash: fix \ooo octal printout in DEBUG code
function old new delta
ash_main 1624 1645 +21
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| -rw-r--r-- | shell/ash.c | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/shell/ash.c b/shell/ash.c index 02ed48017..2f30857d7 100644 --- a/shell/ash.c +++ b/shell/ash.c | |||
| @@ -1190,7 +1190,7 @@ trace_vprintf(const char *fmt, va_list va) | |||
| 1190 | if (debug != 1) | 1190 | if (debug != 1) |
| 1191 | return; | 1191 | return; |
| 1192 | vfprintf(tracefile, fmt, va); | 1192 | vfprintf(tracefile, fmt, va); |
| 1193 | fprintf(tracefile, "\n"); | 1193 | putc('\n', tracefile); |
| 1194 | } | 1194 | } |
| 1195 | 1195 | ||
| 1196 | static void | 1196 | static void |
| @@ -1202,21 +1202,17 @@ trace_puts(const char *s) | |||
| 1202 | } | 1202 | } |
| 1203 | 1203 | ||
| 1204 | static void | 1204 | static void |
| 1205 | trace_puts_quoted(char *s) | 1205 | trace_puts_quoted(char *p) |
| 1206 | { | 1206 | { |
| 1207 | char *p; | ||
| 1208 | char c; | ||
| 1209 | |||
| 1210 | if (debug != 1) | 1207 | if (debug != 1) |
| 1211 | return; | 1208 | return; |
| 1212 | putc('"', tracefile); | 1209 | putc('"', tracefile); |
| 1213 | for (p = s; *p; p++) { | 1210 | for (; *p; p++) { |
| 1214 | switch ((unsigned char)*p) { | 1211 | unsigned char c = *p; |
| 1212 | switch (c) { | ||
| 1215 | case '\n': c = 'n'; goto backslash; | 1213 | case '\n': c = 'n'; goto backslash; |
| 1216 | case '\t': c = 't'; goto backslash; | 1214 | case '\t': c = 't'; goto backslash; |
| 1217 | case '\r': c = 'r'; goto backslash; | 1215 | case '\r': c = 'r'; goto backslash; |
| 1218 | case '\"': c = '\"'; goto backslash; | ||
| 1219 | case '\\': c = '\\'; goto backslash; | ||
| 1220 | case CTLESC: c = 'e'; goto backslash; | 1216 | case CTLESC: c = 'e'; goto backslash; |
| 1221 | case CTLVAR: c = 'v'; goto backslash; | 1217 | case CTLVAR: c = 'v'; goto backslash; |
| 1222 | case CTLBACKQ: c = 'q'; goto backslash; | 1218 | case CTLBACKQ: c = 'q'; goto backslash; |
| @@ -1224,21 +1220,21 @@ trace_puts_quoted(char *s) | |||
| 1224 | case CTLTOPROC: c = 'p'; goto backslash; | 1220 | case CTLTOPROC: c = 'p'; goto backslash; |
| 1225 | case CTLFROMPROC: c = 'P'; goto backslash; | 1221 | case CTLFROMPROC: c = 'P'; goto backslash; |
| 1226 | #endif | 1222 | #endif |
| 1223 | case '"': | ||
| 1224 | case '\\': | ||
| 1227 | backslash: | 1225 | backslash: |
| 1228 | putc('\\', tracefile); | 1226 | putc('\\', tracefile); |
| 1229 | putc(c, tracefile); | ||
| 1230 | break; | 1227 | break; |
| 1231 | default: | 1228 | default: |
| 1232 | if (*p >= ' ' && *p <= '~') | 1229 | if (c < ' ' || c > 0x7e) { |
| 1233 | putc(*p, tracefile); | ||
| 1234 | else { | ||
| 1235 | putc('\\', tracefile); | 1230 | putc('\\', tracefile); |
| 1236 | putc((*p >> 6) & 03, tracefile); | 1231 | putc((c >> 6) + '0', tracefile); |
| 1237 | putc((*p >> 3) & 07, tracefile); | 1232 | putc(((c >> 3) & 07) + '0', tracefile); |
| 1238 | putc(*p & 07, tracefile); | 1233 | c = (c & 07) + '0'; |
| 1239 | } | 1234 | } |
| 1240 | break; | 1235 | break; |
| 1241 | } | 1236 | } |
| 1237 | putc(c, tracefile); | ||
| 1242 | } | 1238 | } |
| 1243 | putc('"', tracefile); | 1239 | putc('"', tracefile); |
| 1244 | } | 1240 | } |
