diff options
author | sjg <sjg@FreeBSD.org> | 2013-04-12 20:48:55 +0000 |
---|---|---|
committer | sjg <sjg@FreeBSD.org> | 2013-04-12 20:48:55 +0000 |
commit | 97d8b9495668afa398ab17c8c5f7e223b5fd2e89 (patch) | |
tree | 54038c9ac32a45f8741dcc23fb9a8ffc0e15ff89 /usr.bin/vis | |
parent | 5ee3bfdb338e7c80af29a67f4425c4be24c7b866 (diff) | |
parent | 086d73aef6d0ab7d21daa2076fdc8d25961f9b05 (diff) | |
download | FreeBSD-src-97d8b9495668afa398ab17c8c5f7e223b5fd2e89.zip FreeBSD-src-97d8b9495668afa398ab17c8c5f7e223b5fd2e89.tar.gz |
sync from head
Diffstat (limited to 'usr.bin/vis')
-rw-r--r-- | usr.bin/vis/Makefile | 4 | ||||
-rw-r--r-- | usr.bin/vis/extern.h | 32 | ||||
-rw-r--r-- | usr.bin/vis/foldit.c | 76 | ||||
-rw-r--r-- | usr.bin/vis/vis.1 | 138 | ||||
-rw-r--r-- | usr.bin/vis/vis.c | 189 |
5 files changed, 4 insertions, 435 deletions
diff --git a/usr.bin/vis/Makefile b/usr.bin/vis/Makefile index 8f83a14..5d860de 100644 --- a/usr.bin/vis/Makefile +++ b/usr.bin/vis/Makefile @@ -1,6 +1,10 @@ # @(#)Makefile 8.1 (Berkeley) 6/6/93 +# $FreeBSD$ PROG= vis SRCS= vis.c foldit.c +.PATH: ${.CURDIR}/../../contrib/vis +CFLAGS+= -I${.CURDIR}/../../contrib/vis + .include <bsd.prog.mk> diff --git a/usr.bin/vis/extern.h b/usr.bin/vis/extern.h deleted file mode 100644 index 683402b..0000000 --- a/usr.bin/vis/extern.h +++ /dev/null @@ -1,32 +0,0 @@ -/*- - * Copyright (c) 1989, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -extern int foldit(char *, int, int); diff --git a/usr.bin/vis/foldit.c b/usr.bin/vis/foldit.c deleted file mode 100644 index b3cbec3..0000000 --- a/usr.bin/vis/foldit.c +++ /dev/null @@ -1,76 +0,0 @@ -/*- - * Copyright (c) 1990, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include <sys/cdefs.h> - -__FBSDID("$FreeBSD$"); - -#ifndef lint -static const char sccsid[] = "@(#)foldit.c 8.1 (Berkeley) 6/6/93"; -#endif - -#include <stdio.h> - -#include "extern.h" - -int -foldit(char *chunk, int col, int max) -{ - char *cp; - - /* - * Keep track of column position. Insert hidden newline - * if this chunk puts us over the limit. - */ -again: - cp = chunk; - while (*cp) { - switch(*cp) { - case '\n': - case '\r': - col = 0; - break; - case '\t': - col = (col + 8) &~ 07; - break; - case '\b': - col = col ? col - 1 : 0; - break; - default: - col++; - } - if (col > (max - 2)) { - printf("\\\n"); - col = 0; - goto again; - } - cp++; - } - return (col); -} diff --git a/usr.bin/vis/vis.1 b/usr.bin/vis/vis.1 deleted file mode 100644 index 7851218..0000000 --- a/usr.bin/vis/vis.1 +++ /dev/null @@ -1,138 +0,0 @@ -.\" Copyright (c) 1989, 1991, 1993, 1994 -.\" The Regents of the University of California. All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 4. Neither the name of the University nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" @(#)vis.1 8.4 (Berkeley) 4/19/94 -.\" $FreeBSD$ -.\" -.Dd June 25, 2004 -.Dt VIS 1 -.Os -.Sh NAME -.Nm vis -.Nd display non-printable characters in a visual format -.Sh SYNOPSIS -.Nm -.Op Fl cbflnostw -.Op Fl F Ar foldwidth -.Op Ar -.Sh DESCRIPTION -The -.Nm -utility is a filter for converting non-printable characters -into a visual representation. -It differs from -.Ql cat -v -in that -the form is unique and invertible. -By default, all non-graphic -characters except space, tab, and newline are encoded. -A detailed description of the -various visual formats is given in -.Xr vis 3 . -.Pp -The options are as follows: -.Bl -tag -width indent -.It Fl b -Turns off prepending of backslash before up-arrow control sequences -and meta characters, and disables the doubling of backslashes. -This -produces output which is neither invertible or precise, but does -represent a minimum of change to the input. -It is similar to -.Dq Li cat -v . -.It Fl c -Request a format which displays a small subset of the -non-printable characters using C-style backslash sequences. -.It Fl F -Causes -.Nm -to fold output lines to -.Ar foldwidth -columns (default 80), like -.Xr fold 1 , -except -that a hidden newline sequence is used (which is removed -when inverting the file back to its original form with -.Xr unvis 1 ) . -If the last character in the encoded file does not end in a newline, -a hidden newline sequence is appended to the output. -This makes -the output usable with various editors and other utilities which -typically do not work with partial lines. -.It Fl f -Same as -.Fl F . -.It Fl l -Mark newlines with the visible sequence -.Ql \e$ , -followed by the newline. -.It Fl n -Turns off any encoding, except for the fact that backslashes are -still doubled and hidden newline sequences inserted if -.Fl f -or -.Fl F -is selected. -When combined with the -.Fl f -flag, -.Nm -becomes like -an invertible version of the -.Xr fold 1 -utility. -That is, the output -can be unfolded by running the output through -.Xr unvis 1 . -.It Fl o -Request a format which displays non-printable characters as -an octal number, \eddd. -.It Fl s -Only characters considered unsafe to send to a terminal are encoded. -This flag allows backspace, bell, and carriage return in addition -to the default space, tab and newline. -.It Fl t -Tabs are also encoded. -.It Fl w -White space (space-tab-newline) is also encoded. -.El -.Sh SEE ALSO -.Xr unvis 1 , -.Xr vis 3 -.Sh HISTORY -The -.Nm -command appeared in -.Bx 4.4 . -.Sh BUGS -Due to limitations in the underlying -.Xr vis 3 -function, the -.Nm -utility -does not recognize multibyte characters, and thus may consider them to be -non-printable when they are in fact printable (and vice versa). diff --git a/usr.bin/vis/vis.c b/usr.bin/vis/vis.c deleted file mode 100644 index 71b6404..0000000 --- a/usr.bin/vis/vis.c +++ /dev/null @@ -1,189 +0,0 @@ -/*- - * Copyright (c) 1989, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include <sys/cdefs.h> - -__FBSDID("$FreeBSD$"); - -#ifndef lint -static const char copyright[] = -"@(#) Copyright (c) 1989, 1993\n\ - The Regents of the University of California. All rights reserved.\n"; -#endif - -#ifndef lint -static const char sccsid[] = "@(#)vis.c 8.1 (Berkeley) 6/6/93"; -#endif - -#include <err.h> -#include <locale.h> -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <vis.h> - -#include "extern.h" - -static int eflags, fold, foldwidth = 80, none, markeol; -#ifdef DEBUG -static int debug; -#endif - -static void process(FILE *); -static void usage(void); - -int -main(int argc, char *argv[]) -{ - FILE *fp; - int ch; - - (void) setlocale(LC_CTYPE, ""); - - while ((ch = getopt(argc, argv, "nwctsobfF:ld")) != -1) - switch((char)ch) { - case 'n': - none++; - break; - case 'w': - eflags |= VIS_WHITE; - break; - case 'c': - eflags |= VIS_CSTYLE; - break; - case 't': - eflags |= VIS_TAB; - break; - case 's': - eflags |= VIS_SAFE; - break; - case 'o': - eflags |= VIS_OCTAL; - break; - case 'b': - eflags |= VIS_NOSLASH; - break; - case 'F': - if ((foldwidth = atoi(optarg))<5) - errx(1, "can't fold lines to less than 5 cols"); - /*FALLTHROUGH*/ - case 'f': - fold++; /* fold output lines to 80 cols */ - break; /* using hidden newline */ - case 'l': - markeol++; /* mark end of line with \$ */ - break; -#ifdef DEBUG - case 'd': - debug++; - break; -#endif - case '?': - default: - usage(); - } - argc -= optind; - argv += optind; - - if (*argv) - while (*argv) { - if ((fp=fopen(*argv, "r")) != NULL) - process(fp); - else - warn("%s", *argv); - argv++; - } - else - process(stdin); - exit(0); -} - - -static void -usage(void) -{ -#ifdef DEBUG - fprintf(stderr, "usage: vis [-cbflnostwd] [-F foldwidth] [file ...]\n"); -#else - fprintf(stderr, "usage: vis [-cbflnostw] [-F foldwidth] [file ...]\n"); -#endif - exit(1); -} - -static void -process(FILE *fp) -{ - static int col = 0; - static char dummy[] = "\0"; - char *cp = dummy+1; /* so *(cp-1) starts out != '\n' */ - int c, rachar; - char buff[5]; - - c = getc(fp); - while (c != EOF) { - rachar = getc(fp); - if (none) { - cp = buff; - *cp++ = c; - if (c == '\\') - *cp++ = '\\'; - *cp = '\0'; - } else if (markeol && c == '\n') { - cp = buff; - if ((eflags & VIS_NOSLASH) == 0) - *cp++ = '\\'; - *cp++ = '$'; - *cp++ = '\n'; - *cp = '\0'; - } else - (void) vis(buff, (char)c, eflags, (char)rachar); - - cp = buff; - if (fold) { -#ifdef DEBUG - if (debug) - printf("<%02d,", col); -#endif - col = foldit(cp, col, foldwidth); -#ifdef DEBUG - if (debug) - printf("%02d>", col); -#endif - } - do { - putchar(*cp); - } while (*++cp); - c = rachar; - } - /* - * terminate partial line with a hidden newline - */ - if (fold && *(cp-1) != '\n') - printf("\\\n"); -} |