diff options
author | James Youngman <jay@gnu.org> | 2011-06-25 18:13:26 +0100 |
---|---|---|
committer | James Youngman <jay@gnu.org> | 2011-06-29 09:50:25 +0100 |
commit | ffd4980a0de2c6791dfe50b4e8b6229e29f27d32 (patch) | |
tree | 509cb1e5a6adef26b95badeaa41aa795db41504d | |
parent | fa84607eb8e1c29ca9de7c3f46e7e2e57f7c5985 (diff) | |
download | findutils-ffd4980a0de2c6791dfe50b4e8b6229e29f27d32.tar.gz |
Separate out the handling of \c.
* find/print.c (insert_fprintf): Deal with \c as a special case.
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | find/print.c | 27 |
2 files changed, 19 insertions, 11 deletions
@@ -1,5 +1,8 @@ 2011-06-25 James Youngman <jay@gnu.org> + Separate out the handling of \c. + * find/print.c (insert_fprintf): Deal with \c as a special case. + Remove some redundant continue statements. * find/print.c (insert_fprintf): Remove a pair of redundant 'continue' statements. diff --git a/find/print.c b/find/print.c index 7270b94f..0d53bac6 100644 --- a/find/print.c +++ b/find/print.c @@ -239,13 +239,22 @@ insert_fprintf (struct format_val *vec, for (fmt_editpos = segstart; *fmt_editpos; fmt_editpos++) { - if (*fmt_editpos == '\\') + if (fmt_editpos[0] == '\\' && fmt_editpos[1] == 'c') { - fmt_inpos = fmt_editpos + 1; - if (*fmt_inpos >= '0' && *fmt_inpos <= '7') + make_segment (segmentp, segstart, fmt_editpos - segstart, + KIND_STOP, 0, 0, + our_pred); + if (our_pred->need_stat && (our_pred->p_cost < NeedsStatInfo)) + our_pred->p_cost = NeedsStatInfo; + return true; + } + else if (*fmt_editpos == '\\') + { + if (fmt_editpos[1] >= '0' && fmt_editpos[1] <= '7') { register int n, i; + fmt_inpos = fmt_editpos + 1; for (i = n = 0; i < 3 && (*fmt_inpos >= '0' && *fmt_inpos <= '7'); i++, fmt_inpos++) n = 8 * n + *fmt_inpos - '0'; @@ -254,21 +263,15 @@ insert_fprintf (struct format_val *vec, } else { + fmt_inpos = fmt_editpos + 1; switch (*fmt_inpos) { case 'a': - *fmt_editpos = 7; + *fmt_editpos = '\a'; break; case 'b': *fmt_editpos = '\b'; break; - case 'c': - make_segment (segmentp, segstart, fmt_editpos - segstart, - KIND_STOP, 0, 0, - our_pred); - if (our_pred->need_stat && (our_pred->p_cost < NeedsStatInfo)) - our_pred->p_cost = NeedsStatInfo; - return true; case 'f': *fmt_editpos = '\f'; break; @@ -290,6 +293,7 @@ insert_fprintf (struct format_val *vec, default: error (0, 0, _("warning: unrecognized escape `\\%c'"), *fmt_inpos); + fmt_editpos++; continue; } @@ -1175,6 +1179,7 @@ do_fprintf (struct format_val *dest, } break; + case 0: case '%': checked_fprintf (dest, segment->text); break; |