svn commit: r247128 - in vendor/NetBSD/vis: . dist

Brooks Davis brooks at FreeBSD.org
Thu Feb 21 20:44:55 UTC 2013


Author: brooks
Date: Thu Feb 21 20:44:53 2013
New Revision: 247128
URL: http://svnweb.freebsd.org/changeset/base/247128

Log:
  Vendor import of NetBSD's vis(1) at 2013-02-21

Added:
  vendor/NetBSD/vis/
  vendor/NetBSD/vis/FreeBSD-Upgrade
  vendor/NetBSD/vis/dist/
  vendor/NetBSD/vis/dist/Makefile   (contents, props changed)
  vendor/NetBSD/vis/dist/extern.h   (contents, props changed)
  vendor/NetBSD/vis/dist/foldit.c   (contents, props changed)
  vendor/NetBSD/vis/dist/vis.1   (contents, props changed)
  vendor/NetBSD/vis/dist/vis.c   (contents, props changed)

Added: vendor/NetBSD/vis/FreeBSD-Upgrade
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/NetBSD/vis/FreeBSD-Upgrade	Thu Feb 21 20:44:53 2013	(r247128)
@@ -0,0 +1,23 @@
+Instructions for updating vis(1):
+
+1) checkout the head of the vendor branch:
+
+	REPO=svn+ssh://svn.freebsd.org/
+	svn co $REPO/base/vendor/NetBSD/vis/dist
+
+2) Update sources:
+
+	rm dist/*
+	export CVSROOT=anoncvs at anoncvs.NetBSD.org:/cvsroot
+	cvs export -r HEAD -d dist src/usr.bin/vis
+
+3) Commit the new versions:
+
+	svn commit -m "Vendor import of NetBSD's vis(1) at `date +%F`" dist
+	svn cp -m "Tag `date +%F` import of NetBSD's vis(1)" \
+	    $REPO/base/vendor/NetBSD/vis/dist \
+	    $REPO/base/vendor/NetBSD/vis/`date +%Y%d%m`
+
+4) Update the files in src/contrib/vis:
+
+

Added: vendor/NetBSD/vis/dist/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/NetBSD/vis/dist/Makefile	Thu Feb 21 20:44:53 2013	(r247128)
@@ -0,0 +1,7 @@
+#	$NetBSD: Makefile,v 1.3 1994/11/17 07:55:57 jtc Exp $
+#	@(#)Makefile	8.1 (Berkeley) 6/6/93
+
+PROG=	vis
+SRCS=	vis.c foldit.c
+
+.include <bsd.prog.mk>

Added: vendor/NetBSD/vis/dist/extern.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/NetBSD/vis/dist/extern.h	Thu Feb 21 20:44:53 2013	(r247128)
@@ -0,0 +1,39 @@
+/*	$NetBSD: extern.h,v 1.1 2009/02/10 23:06:31 christos Exp $	*/
+
+/*-
+ * Copyright (c) 2009 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Christos Zoulas.
+ *
+ * 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.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *        This product includes software developed by the NetBSD
+ *        Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
+ */
+
+int foldit(const char *, int, int, int);

Added: vendor/NetBSD/vis/dist/foldit.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/NetBSD/vis/dist/foldit.c	Thu Feb 21 20:44:53 2013	(r247128)
@@ -0,0 +1,78 @@
+/*	$NetBSD: foldit.c,v 1.7 2009/02/10 23:06:31 christos Exp $	*/
+
+/*-
+ * 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.
+ * 3. 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>
+#ifndef lint
+#if 0
+static char sccsid[] = "@(#)foldit.c	8.1 (Berkeley) 6/6/93";
+#endif
+__RCSID("$NetBSD: foldit.c,v 1.7 2009/02/10 23:06:31 christos Exp $");
+#endif /* not lint */
+
+#include <stdio.h>
+#include <vis.h>
+#include "extern.h"
+
+int
+foldit(const char *chunk, int col, int max, int flags)
+{
+	const 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(flags & VIS_MIMESTYLE ? "=\n" : "\\\n");
+			col = 0;
+			goto again;
+		} 
+		cp++;
+	}
+	return (col);
+}

Added: vendor/NetBSD/vis/dist/vis.1
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/NetBSD/vis/dist/vis.1	Thu Feb 21 20:44:53 2013	(r247128)
@@ -0,0 +1,169 @@
+.\"	$NetBSD: vis.1,v 1.17 2013/02/14 14:00:00 christos Exp $
+.\"
+.\" 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.
+.\" 3. 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
+.\"
+.Dd February 13, 2013
+.Dt VIS 1
+.Os
+.Sh NAME
+.Nm vis
+.Nd display non-printable characters in a visual format
+.Sh SYNOPSIS
+.Nm
+.Op Fl bcfhlmnostw
+.Op Fl e Ar extra
+.Op Fl F Ar foldwidth
+.Op Ar file ...
+.Sh DESCRIPTION
+.Nm
+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 Ds
+.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 .
+.Pq Dv VIS_NOSLASH
+.It Fl c
+Request a format which displays a small subset of the
+non-printable characters using C-style backslash sequences.
+.Pq Dv VIS_CSTYLE
+.It Fl e Ar extra
+Also encode characters in
+.Ar extra ,
+per
+.Xr svis 3 .
+.It Fl F Ar foldwidth
+Causes
+.Nm
+to fold output lines to 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 don't work with partial lines.
+.It Fl f
+Same as
+.Fl F .
+.It Fl h
+Encode using the URI encoding from RFC 1808.
+.Pq Dv VIS_HTTPSTYLE
+.It Fl l
+Mark newlines with the visible sequence
+.Ql \e$ ,
+followed by the newline.
+.It Fl m
+Encode using the MIME Quoted-Printable encoding from RFC 2045.
+.Pq Dv VIS_MIMESTYLE
+.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.
+.Pq Dv VIS_OCTAL
+.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.
+.Pq Dv VIS_SAFE
+.It Fl t
+Tabs are also encoded.
+.Pq Dv VIS_TAB
+.It Fl w
+White space (space-tab-newline) is also encoded.
+.Pq Dv VIS_WHITE
+.El
+.Sh MULTIBYTE CHARACTER SUPPORT
+.Nm
+supports multibyte character input.
+The encoding conversion is influenced by the setting of the
+.Ev LC_CTYPE
+environment variable which defines the set of characters that can be
+copied without encoding.
+.Pp
+When 8-bit data is present in the input,
+.Ev LC_CTYPE
+must be set to the correct locale or to the C locale.
+If the locales of the data and the conversion are mismatched, multibyte
+character recognition may fail and encoding will be performed byte-by-byte
+instead.
+.Sh ENVIRONMENT
+.Bl -tag -width ".Ev LC_CTYPE"
+.It Ev LC_CTYPE
+Specify the locale of the input data.
+Set to C if the input data locale is unknown.
+.Sh SEE ALSO
+.Xr unvis 1 ,
+.Xr svis 3 ,
+.Xr vis 3
+.Sh HISTORY
+The
+.Nm
+command appears in
+.Bx 4.4 .
+Myltibyte character support was added in
+.Nx 6.1
+and
+.Fx 9.2 .

Added: vendor/NetBSD/vis/dist/vis.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/NetBSD/vis/dist/vis.c	Thu Feb 21 20:44:53 2013	(r247128)
@@ -0,0 +1,276 @@
+/*	$NetBSD: vis.c,v 1.22 2013/02/20 17:04:45 christos Exp $	*/
+
+/*-
+ * 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.
+ * 3. 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>
+#ifndef lint
+__COPYRIGHT("@(#) Copyright (c) 1989, 1993\
+ The Regents of the University of California.  All rights reserved.");
+#endif /* not lint */
+
+#ifndef lint
+#if 0
+static char sccsid[] = "@(#)vis.c	8.1 (Berkeley) 6/6/93";
+#endif
+__RCSID("$NetBSD: vis.c,v 1.22 2013/02/20 17:04:45 christos Exp $");
+#endif /* not lint */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <wchar.h>
+#include <limits.h>
+#include <unistd.h>
+#include <err.h>
+#include <vis.h>
+
+#include "extern.h"
+
+static int eflags, fold, foldwidth = 80, none, markeol;
+#ifdef DEBUG
+int debug;
+#endif
+static const char *extra = "";
+
+static void process(FILE *);
+
+int
+main(int argc, char *argv[])
+{
+	FILE *fp;
+	int ch;
+	int rval;
+
+	while ((ch = getopt(argc, argv, "bcde:F:fhlmnostw")) != -1)
+		switch((char)ch) {
+		case 'b':
+			eflags |= VIS_NOSLASH;
+			break;
+		case 'c':
+			eflags |= VIS_CSTYLE;
+			break;
+#ifdef DEBUG
+		case 'd':
+			debug++;
+			break;
+#endif
+		case 'e':
+			extra = optarg;
+			break;
+		case 'F':
+			if ((foldwidth = atoi(optarg)) < 5) {
+				errx(1, "can't fold lines to less than 5 cols");
+				/* NOTREACHED */
+			}
+			markeol++;
+			break;
+		case 'f':
+			fold++;		/* fold output lines to 80 cols */
+			break;		/* using hidden newline */
+		case 'h':
+			eflags |= VIS_HTTPSTYLE;
+			break;
+		case 'l':
+			markeol++;	/* mark end of line with \$ */
+			break;
+		case 'm':
+			eflags |= VIS_MIMESTYLE;
+			if (foldwidth == 80)
+				foldwidth = 76;
+			break;
+		case 'n':
+			none++;
+			break;
+		case 'o':
+			eflags |= VIS_OCTAL;
+			break;
+		case 's':
+			eflags |= VIS_SAFE;
+			break;
+		case 't':
+			eflags |= VIS_TAB;
+			break;
+		case 'w':
+			eflags |= VIS_WHITE;
+			break;
+		case '?':
+		default:
+			(void)fprintf(stderr, 
+			    "Usage: %s [-bcfhlmnostw] [-e extra]" 
+			    " [-F foldwidth] [file ...]\n", getprogname());
+			return 1;
+		}
+
+	if ((eflags & (VIS_HTTPSTYLE|VIS_MIMESTYLE)) ==
+	    (VIS_HTTPSTYLE|VIS_MIMESTYLE))
+		errx(1, "Can't specify -m and -h at the same time");
+
+	argc -= optind;
+	argv += optind;
+
+	rval = 0;
+
+	if (*argv)
+		while (*argv) {
+			if ((fp = fopen(*argv, "r")) != NULL) {
+				process(fp);
+				(void)fclose(fp);
+			} else {
+				warn("%s", *argv);
+				rval = 1;
+			}
+			argv++;
+		}
+	else
+		process(stdin);
+	return rval;
+}
+	
+static void
+process(FILE *fp)
+{
+	static int col = 0;
+	static char nul[] = "\0";
+	char *cp = nul + 1;	/* so *(cp-1) starts out != '\n' */
+	wint_t c, c1, rachar;
+	char mbibuff[2 * MB_LEN_MAX + 1]; /* max space for 2 wchars */
+	char buff[4 * MB_LEN_MAX + 1]; /* max encoding length for one char */
+	int mbilen, cerr = 0, raerr = 0;
+	
+        /*
+         * The input stream is considered to be multibyte characters.
+         * The input loop will read this data inputing one character,
+	 * possibly multiple bytes, at a time and converting each to
+	 * a wide character wchar_t.
+         *
+	 * The vis(3) functions, however, require single either bytes
+	 * or a multibyte string as their arguments.  So we convert
+	 * our input wchar_t and the following look-ahead wchar_t to
+	 * a multibyte string for processing by vis(3).
+         */
+
+	/* Read one multibyte character, store as wchar_t */
+	c = getwc(fp);
+	if (c == WEOF && errno == EILSEQ) {
+		/* Error in multibyte data.  Read one byte. */
+		c = (wint_t)getc(fp);
+		cerr = 1;
+	}
+	while (c != WEOF) {
+		/* Clear multibyte input buffer. */
+		memset(mbibuff, 0, sizeof(mbibuff));
+		/* Read-ahead next multibyte character. */
+		if (!cerr)
+			rachar = getwc(fp);
+		if (cerr || (rachar == WEOF && errno == EILSEQ)) {
+			/* Error in multibyte data.  Read one byte. */
+			rachar = (wint_t)getc(fp);
+			raerr = 1;
+		}
+		if (none) {
+			/* Handle -n flag. */
+			cp = buff;
+			*cp++ = c;
+			if (c == '\\')
+				*cp++ = '\\';
+			*cp = '\0';
+		} else if (markeol && c == '\n') {
+			/* Handle -l flag. */
+			cp = buff;
+			if ((eflags & VIS_NOSLASH) == 0)
+				*cp++ = '\\';
+			*cp++ = '$';
+			*cp++ = '\n';
+			*cp = '\0';
+		} else {
+			/*
+			 * Convert character using vis(3) library.
+			 * At this point we will process one character.
+			 * But we must pass the vis(3) library this
+			 * character plus the next one because the next
+			 * one is used as a look-ahead to decide how to
+			 * encode this one under certain circumstances.
+			 *
+			 * Since our characters may be multibyte, e.g.,
+			 * in the UTF-8 locale, we cannot use vis() and
+			 * svis() which require byte input, so we must
+			 * create a multibyte string and use strvisx().
+			 */
+			/* Treat EOF as a NUL char. */
+			c1 = rachar;
+			if (c1 == WEOF)
+				c1 = L'\0';
+			/*
+			 * If we hit a multibyte conversion error above,
+			 * insert byte directly into string buff because
+			 * wctomb() will fail.  Else convert wchar_t to
+			 * multibyte using wctomb().
+			 */
+			if (cerr) {
+				*mbibuff = (char)c;
+				mbilen = 1;
+			} else
+				mbilen = wctomb(mbibuff, c);
+			/* Same for look-ahead character. */
+			if (raerr)
+				mbibuff[mbilen] = (char)c1;
+			else
+				wctomb(mbibuff + mbilen, c1);
+			/* Perform encoding on just first character. */
+			(void) strsenvisx(buff, 4 * MB_LEN_MAX, mbibuff,
+			    1, eflags, extra, &cerr);
+		}
+
+		cp = buff;
+		if (fold) {
+#ifdef DEBUG
+			if (debug)
+				(void)printf("<%02d,", col);
+#endif
+			col = foldit(cp, col, foldwidth, eflags);
+#ifdef DEBUG
+			if (debug)
+				(void)printf("%02d>", col);
+#endif
+		}
+		do {
+			(void)putchar(*cp);
+		} while (*++cp);
+		c = rachar;
+		cerr = raerr;
+	}
+	/*
+	 * terminate partial line with a hidden newline
+	 */
+	if (fold && *(cp - 1) != '\n')
+		(void)printf(eflags & VIS_MIMESTYLE ? "=\n" : "\\\n");
+}


More information about the svn-src-all mailing list