version 1.19, 2015/10/09 01:37:09 |
version 1.20, 2021/11/02 15:45:52 |
|
|
main(int argc, char *argv[]) |
main(int argc, char *argv[]) |
{ |
{ |
int ch, cnt, lastch, *p; |
int ch, cnt, lastch, *p; |
int cflag, dflag, sflag, isstring2; |
int cflag, dflag, sflag; |
|
|
if (pledge("stdio", NULL) == -1) |
if (pledge("stdio", NULL) == -1) |
err(1, "pledge"); |
err(1, "pledge"); |
|
|
argc -= optind; |
argc -= optind; |
argv += optind; |
argv += optind; |
|
|
switch(argc) { |
if (argc < 1 || argc > 2) |
case 0: |
|
default: |
|
usage(); |
usage(); |
/* NOTREACHED */ |
|
case 1: |
|
isstring2 = 0; |
|
break; |
|
case 2: |
|
isstring2 = 1; |
|
break; |
|
} |
|
|
|
/* |
/* |
* tr -ds [-Cc] string1 string2 |
* tr -ds [-Cc] string1 string2 |
|
|
* Squeeze all characters in string2. |
* Squeeze all characters in string2. |
*/ |
*/ |
if (dflag && sflag) { |
if (dflag && sflag) { |
if (!isstring2) |
if (argc != 2) |
usage(); |
usage(); |
|
|
setup(string1, argv[0], &s1, cflag); |
setup(string1, argv[0], &s1, cflag); |
|
|
* Delete all characters (or complemented characters) in string1. |
* Delete all characters (or complemented characters) in string1. |
*/ |
*/ |
if (dflag) { |
if (dflag) { |
if (isstring2) |
if (argc != 1) |
usage(); |
usage(); |
|
|
setup(string1, argv[0], &s1, cflag); |
setup(string1, argv[0], &s1, cflag); |
|
|
* tr -s [-Cc] string1 |
* tr -s [-Cc] string1 |
* Squeeze all characters (or complemented characters) in string1. |
* Squeeze all characters (or complemented characters) in string1. |
*/ |
*/ |
if (sflag && !isstring2) { |
if (sflag && argc == 1) { |
setup(string1, argv[0], &s1, cflag); |
setup(string1, argv[0], &s1, cflag); |
|
|
for (lastch = OOBCH; (ch = getchar()) != EOF;) |
for (lastch = OOBCH; (ch = getchar()) != EOF;) |
|
|
* the character in the same position in string2. If the -s option is |
* the character in the same position in string2. If the -s option is |
* specified, squeeze all the characters in string2. |
* specified, squeeze all the characters in string2. |
*/ |
*/ |
if (!isstring2) |
if (argc != 2) |
usage(); |
usage(); |
|
|
s1.str = (unsigned char *)argv[0]; |
s1.str = (unsigned char *)argv[0]; |