version 1.31, 2022/01/01 02:20:38 |
version 1.32, 2022/01/01 17:44:18 |
|
|
#include <wchar.h> |
#include <wchar.h> |
#include <wctype.h> |
#include <wctype.h> |
|
|
|
long long numchars, numfields; |
|
unsigned long long repeats; |
int cflag, dflag, iflag, uflag; |
int cflag, dflag, iflag, uflag; |
int numchars, numfields, repeats; |
|
|
|
void show(const char *); |
void show(const char *); |
char *skip(char *); |
char *skip(char *); |
|
|
dflag = 1; |
dflag = 1; |
break; |
break; |
case 'f': |
case 'f': |
numfields = (int)strtonum(optarg, 0, INT_MAX, |
numfields = strtonum(optarg, 0, LLONG_MAX, &errstr); |
&errstr); |
|
if (errstr) |
if (errstr) |
errx(1, "field skip value is %s: %s", |
errx(1, "field skip value is %s: %s", |
errstr, optarg); |
errstr, optarg); |
|
|
iflag = 1; |
iflag = 1; |
break; |
break; |
case 's': |
case 's': |
numchars = (int)strtonum(optarg, 0, INT_MAX, |
numchars = strtonum(optarg, 0, LLONG_MAX, &errstr); |
&errstr); |
|
if (errstr) |
if (errstr) |
errx(1, |
errx(1, |
"character skip value is %s: %s", |
"character skip value is %s: %s", |
|
|
{ |
{ |
if ((dflag && repeats) || (uflag && !repeats)) { |
if ((dflag && repeats) || (uflag && !repeats)) { |
if (cflag) |
if (cflag) |
printf("%4d %s\n", repeats + 1, str); |
printf("%4llu %s\n", repeats + 1, str); |
else |
else |
printf("%s\n", str); |
printf("%s\n", str); |
} |
} |
|
|
char * |
char * |
skip(char *str) |
skip(char *str) |
{ |
{ |
|
long long nchars, nfields; |
wchar_t wc; |
wchar_t wc; |
int nchars, nfields; |
|
int len; |
int len; |
int field_started; |
int field_started; |
|
|