diff options
| author | Tim J. Robbins <tjr@FreeBSD.org> | 2002-07-29 14:50:54 +0000 |
|---|---|---|
| committer | Tim J. Robbins <tjr@FreeBSD.org> | 2002-07-29 14:50:54 +0000 |
| commit | 482711cfa6466dc2ec7c601474c349d36d2a2a64 (patch) | |
| tree | dd86d18e59ae8170623114290968505e139feca3 | |
| parent | d2893b161bbea64e099654c0dd78073cfb5667b0 (diff) | |
Notes
| -rw-r--r-- | usr.bin/tr/tr.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/usr.bin/tr/tr.c b/usr.bin/tr/tr.c index 524f66b88e6b..ff623cd57196 100644 --- a/usr.bin/tr/tr.c +++ b/usr.bin/tr/tr.c @@ -238,12 +238,17 @@ main(argc, argv) (void)next(&s2); } - if (cflag) - for (cnt = 0, p = string1; cnt < NCHARS; ++p, ++cnt) - *p = *p == OOBCH ? ch : cnt; - else if (Cflag) - for (cnt = 0, p = string1; cnt < NCHARS; ++p, ++cnt) - *p = *p == OOBCH && ISCHAR(cnt) ? ch : cnt; + if (cflag || Cflag) { + s2.str = argv[1]; + s2.state = NORMAL; + for (cnt = 0, p = string1; cnt < NCHARS; ++p, ++cnt) { + if (*p == OOBCH && (!Cflag || ISCHAR(cnt))) { + (void)next(&s2); + *p = s2.lastch; + } else + *p = cnt; + } + } if (sflag) for (lastch = OOBCH; (ch = getchar()) != EOF;) { |
