Allow <blank>s to be used to separate tab stop positions with the -t
argument, not just ASCII space characters and commas. Don't count non-printing characters when determining column position.
This commit is contained in:
parent
379207e179
commit
7853af48f5
@ -95,6 +95,18 @@ are reconverted to maximal strings of tabs. If the
|
||||
option is given, then tabs are inserted whenever they would compress the
|
||||
resultant file by replacing two or more characters.
|
||||
.El
|
||||
.Sh ENVIRONMENT
|
||||
The
|
||||
.Ev LANG ,
|
||||
.Ev LC_ALL
|
||||
and
|
||||
.Ev LC_CTYPE
|
||||
environment variables affect the execution of
|
||||
.Nm expand
|
||||
and
|
||||
.Nm unexpand
|
||||
as described in
|
||||
.Xr environ 7 .
|
||||
.Sh STANDARDS
|
||||
The
|
||||
.Nm expand
|
||||
|
@ -47,6 +47,7 @@ static const char rcsid[] =
|
||||
|
||||
#include <ctype.h>
|
||||
#include <err.h>
|
||||
#include <locale.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
@ -69,8 +70,11 @@ main(argc, argv)
|
||||
register int n;
|
||||
int rval;
|
||||
|
||||
setlocale(LC_CTYPE, "");
|
||||
|
||||
/* handle obsolete syntax */
|
||||
while (argc > 1 && argv[1][0] == '-' && isdigit(argv[1][1])) {
|
||||
while (argc > 1 && argv[1][0] == '-' &&
|
||||
isdigit((unsigned char)argv[1][1])) {
|
||||
getstops(&argv[1][1]);
|
||||
argc--; argv++;
|
||||
}
|
||||
@ -140,7 +144,8 @@ main(argc, argv)
|
||||
|
||||
default:
|
||||
putchar(c);
|
||||
column++;
|
||||
if (isprint(c))
|
||||
column++;
|
||||
continue;
|
||||
|
||||
case '\n':
|
||||
@ -173,7 +178,7 @@ getstops(cp)
|
||||
tabstops[nstops++] = i;
|
||||
if (*cp == 0)
|
||||
break;
|
||||
if (*cp != ',' && *cp != ' ')
|
||||
if (*cp != ',' && !isblank((unsigned char)*cp))
|
||||
errx(1, "bad tab stop spec");
|
||||
cp++;
|
||||
}
|
||||
|
@ -48,8 +48,10 @@ static const char sccsid[] = "@(#)unexpand.c 8.1 (Berkeley) 6/6/93";
|
||||
/*
|
||||
* unexpand - put tabs into a file replacing blanks
|
||||
*/
|
||||
#include <ctype.h>
|
||||
#include <err.h>
|
||||
#include <limits.h>
|
||||
#include <locale.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
@ -71,6 +73,8 @@ main(argc, argv)
|
||||
int ch, failed;
|
||||
char *filename;
|
||||
|
||||
setlocale(LC_CTYPE, "");
|
||||
|
||||
nstops = 1;
|
||||
tabstops[0] = 8;
|
||||
while ((ch = getopt(argc, argv, "at:")) != -1) {
|
||||
@ -176,7 +180,8 @@ tabify()
|
||||
doneline = ocol = dcol = 0;
|
||||
} else if (ch != ' ' || dcol > limit) {
|
||||
putchar(ch);
|
||||
ocol++, dcol++;
|
||||
if (isprint(ch))
|
||||
ocol++, dcol++;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -213,7 +218,7 @@ getstops(cp)
|
||||
tabstops[nstops++] = i;
|
||||
if (*cp == 0)
|
||||
break;
|
||||
if (*cp != ',' && *cp != ' ')
|
||||
if (*cp != ',' && !isblank((unsigned char)*cp))
|
||||
errx(1, "bad tab stop spec");
|
||||
cp++;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user