 84d9c625bf
			
		
	
	
		84d9c625bf
		
	
	
	
	
		
			
			- Fix for possible unset uid/gid in toproto
 - Fix for default mtree style
 - Update libelf
 - Importing libexecinfo
 - Resynchronize GCC, mpc, gmp, mpfr
 - build.sh: Replace params with show-params.
     This has been done as the make target has been renamed in the same
     way, while a new target named params has been added. This new
     target generates a file containing all the parameters, instead of
     printing it on the console.
 - Update test48 with new etc/services (Fix by Ben Gras <ben@minix3.org)
     get getservbyport() out of the inner loop
Change-Id: Ie6ad5226fa2621ff9f0dee8782ea48f9443d2091
		
	
			
		
			
				
	
	
		
			517 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			517 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .\"	$NetBSD: vis.3,v 1.39 2013/02/20 20:05:26 christos Exp $
 | |
| .\"
 | |
| .\" Copyright (c) 1989, 1991, 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.
 | |
| .\"
 | |
| .\"     @(#)vis.3	8.1 (Berkeley) 6/9/93
 | |
| .\"
 | |
| .Dd February 19, 2013
 | |
| .Dt VIS 3
 | |
| .Os
 | |
| .Sh NAME
 | |
| .Nm vis ,
 | |
| .Nm nvis ,
 | |
| .Nm strvis ,
 | |
| .Nm strnvis ,
 | |
| .Nm strvisx ,
 | |
| .Nm strnvisx ,
 | |
| .Nm strenvisx ,
 | |
| .Nm svis ,
 | |
| .Nm snvis ,
 | |
| .Nm strsvis ,
 | |
| .Nm strsnvis ,
 | |
| .Nm strsvisx ,
 | |
| .Nm strsnvisx ,
 | |
| .Nm strsenvisx
 | |
| .Nd visually encode characters
 | |
| .Sh LIBRARY
 | |
| .Lb libc
 | |
| .Sh SYNOPSIS
 | |
| .In vis.h
 | |
| .Ft char *
 | |
| .Fn vis "char *dst" "int c" "int flag" "int nextc"
 | |
| .Ft char *
 | |
| .Fn nvis "char *dst" "size_t dlen" "int c" "int flag" "int nextc"
 | |
| .Ft int
 | |
| .Fn strvis "char *dst" "const char *src" "int flag"
 | |
| .Ft int
 | |
| .Fn strnvis "char *dst" "size_t dlen" "const char *src" "int flag"
 | |
| .Ft int
 | |
| .Fn strvisx "char *dst" "const char *src" "size_t len" "int flag"
 | |
| .Ft int
 | |
| .Fn strnvisx "char *dst" "size_t dlen" "const char *src" "size_t len" "int flag"
 | |
| .Ft int
 | |
| .Fn strenvisx "char *dst" "size_t dlen" "const char *src" "size_t len" "int flag" "int *cerr_ptr"
 | |
| .Ft char *
 | |
| .Fn svis "char *dst" "int c" "int flag" "int nextc" "const char *extra"
 | |
| .Ft char *
 | |
| .Fn snvis "char *dst" "size_t dlen" "int c" "int flag" "int nextc" "const char *extra"
 | |
| .Ft int
 | |
| .Fn strsvis "char *dst" "const char *src" "int flag" "const char *extra"
 | |
| .Ft int
 | |
| .Fn strsnvis "char *dst" "size_t dlen" "const char *src" "int flag" "const char *extra"
 | |
| .Ft int
 | |
| .Fn strsvisx "char *dst" "const char *src" "size_t len" "int flag" "const char *extra"
 | |
| .Ft int
 | |
| .Fn strsnvisx "char *dst" "size_t dlen" "const char *src" "size_t len" "int flag" "const char *extra"
 | |
| .Ft int
 | |
| .Fn strsenvisx "char *dst" "size_t dlen" "const char *src" "size_t len" "int flag" "const char *extra" "int *cerr_ptr"
 | |
| .Sh DESCRIPTION
 | |
| The
 | |
| .Fn vis
 | |
| function
 | |
| copies into
 | |
| .Fa dst
 | |
| a string which represents the character
 | |
| .Fa c .
 | |
| If
 | |
| .Fa c
 | |
| needs no encoding, it is copied in unaltered.
 | |
| The string is null terminated, and a pointer to the end of the string is
 | |
| returned.
 | |
| The maximum length of any encoding is four
 | |
| bytes (not including the trailing
 | |
| .Dv NUL ) ;
 | |
| thus, when
 | |
| encoding a set of characters into a buffer, the size of the buffer should
 | |
| be four times the number of bytes encoded, plus one for the trailing
 | |
| .Dv NUL .
 | |
| The flag parameter is used for altering the default range of
 | |
| characters considered for encoding and for altering the visual
 | |
| representation.
 | |
| The additional character,
 | |
| .Fa nextc ,
 | |
| is only used when selecting the
 | |
| .Dv VIS_CSTYLE
 | |
| encoding format (explained below).
 | |
| .Pp
 | |
| The
 | |
| .Fn strvis ,
 | |
| .Fn strnvis ,
 | |
| .Fn strvisx ,
 | |
| and
 | |
| .Fn strnvisx
 | |
| functions copy into
 | |
| .Fa dst
 | |
| a visual representation of
 | |
| the string
 | |
| .Fa src .
 | |
| The
 | |
| .Fn strvis
 | |
| and
 | |
| .Fn strnvis
 | |
| functions encode characters from
 | |
| .Fa src
 | |
| up to the
 | |
| first
 | |
| .Dv NUL .
 | |
| The
 | |
| .Fn strvisx
 | |
| and
 | |
| .Fn strnvisx
 | |
| functions encode exactly
 | |
| .Fa len
 | |
| characters from
 | |
| .Fa src
 | |
| (this
 | |
| is useful for encoding a block of data that may contain
 | |
| .Dv NUL Ns 's ) .
 | |
| Both forms
 | |
| .Dv NUL
 | |
| terminate
 | |
| .Fa dst .
 | |
| The size of
 | |
| .Fa dst
 | |
| must be four times the number
 | |
| of bytes encoded from
 | |
| .Fa src
 | |
| (plus one for the
 | |
| .Dv NUL ) .
 | |
| Both
 | |
| forms return the number of characters in
 | |
| .Fa dst
 | |
| (not including the trailing
 | |
| .Dv NUL ) .
 | |
| The
 | |
| .Dq Nm n
 | |
| versions of the functions also take an additional argument
 | |
| .Fa dlen
 | |
| that indicates the length of the
 | |
| .Fa dst
 | |
| buffer.
 | |
| If
 | |
| .Fa dlen
 | |
| is not large enough to fit the converted string then the
 | |
| .Fn strnvis
 | |
| and
 | |
| .Fn strnvisx
 | |
| functions return \-1 and set
 | |
| .Va errno
 | |
| to
 | |
| .Dv ENOSPC .
 | |
| The
 | |
| .Fn strenvisx
 | |
| function takes an additional argument,
 | |
| .Fa cerr_ptr ,
 | |
| that is used to pass in and out a multibyte conversion error flag.
 | |
| This is useful when processing single characters at a time when
 | |
| it is possible that the locale may be set to something other
 | |
| than the locale of the characters in the input data.
 | |
| .Pp
 | |
| The functions
 | |
| .Fn svis ,
 | |
| .Fn snvis ,
 | |
| .Fn strsvis ,
 | |
| .Fn strsnvis ,
 | |
| .Fn strsvisx ,
 | |
| .Fn strsnvisx ,
 | |
| and
 | |
| .Fn strsenvisx
 | |
| correspond to
 | |
| .Fn vis ,
 | |
| .Fn nvis ,
 | |
| .Fn strvis ,
 | |
| .Fn strnvis ,
 | |
| .Fn strvisx ,
 | |
| .Fn strnvisx ,
 | |
| and
 | |
| .Fn strenvisx
 | |
| but have an additional argument
 | |
| .Fa extra ,
 | |
| pointing to a
 | |
| .Dv NUL
 | |
| terminated list of characters.
 | |
| These characters will be copied encoded or backslash-escaped into
 | |
| .Fa dst .
 | |
| These functions are useful e.g. to remove the special meaning
 | |
| of certain characters to shells.
 | |
| .Pp
 | |
| The encoding is a unique, invertible representation composed entirely of
 | |
| graphic characters; it can be decoded back into the original form using
 | |
| the
 | |
| .Xr unvis 3 ,
 | |
| .Xr strunvis 3
 | |
| or
 | |
| .Xr strnunvis 3
 | |
| functions.
 | |
| .Pp
 | |
| There are two parameters that can be controlled: the range of
 | |
| characters that are encoded (applies only to
 | |
| .Fn vis ,
 | |
| .Fn nvis ,
 | |
| .Fn strvis ,
 | |
| .Fn strnvis ,
 | |
| .Fn strvisx ,
 | |
| and
 | |
| .Fn strnvisx ) ,
 | |
| and the type of representation used.
 | |
| By default, all non-graphic characters,
 | |
| except space, tab, and newline are encoded (see
 | |
| .Xr isgraph 3 ) .
 | |
| The following flags
 | |
| alter this:
 | |
| .Bl -tag -width VIS_WHITEX
 | |
| .It Dv VIS_GLOB
 | |
| Also encode the magic characters
 | |
| .Ql ( * ,
 | |
| .Ql \&? ,
 | |
| .Ql \&[
 | |
| and
 | |
| .Ql # )
 | |
| recognized by
 | |
| .Xr glob 3 .
 | |
| .It Dv VIS_SP
 | |
| Also encode space.
 | |
| .It Dv VIS_TAB
 | |
| Also encode tab.
 | |
| .It Dv VIS_NL
 | |
| Also encode newline.
 | |
| .It Dv VIS_WHITE
 | |
| Synonym for
 | |
| .Dv VIS_SP
 | |
| \&|
 | |
| .Dv VIS_TAB
 | |
| \&|
 | |
| .Dv VIS_NL .
 | |
| .It Dv VIS_SAFE
 | |
| Only encode
 | |
| .Dq unsafe
 | |
| characters.
 | |
| Unsafe means control characters which may cause common terminals to perform
 | |
| unexpected functions.
 | |
| Currently this form allows space, tab, newline, backspace, bell, and
 | |
| return \(em in addition to all graphic characters \(em unencoded.
 | |
| .El
 | |
| .Pp
 | |
| (The above flags have no effect for
 | |
| .Fn svis ,
 | |
| .Fn snvis ,
 | |
| .Fn strsvis ,
 | |
| .Fn strsnvis ,
 | |
| .Fn strsvisx ,
 | |
| and
 | |
| .Fn strsnvisx .
 | |
| When using these functions, place all graphic characters to be
 | |
| encoded in an array pointed to by
 | |
| .Fa extra .
 | |
| In general, the backslash character should be included in this array, see the
 | |
| warning on the use of the
 | |
| .Dv VIS_NOSLASH
 | |
| flag below).
 | |
| .Pp
 | |
| There are four forms of encoding.
 | |
| All forms use the backslash character
 | |
| .Ql \e
 | |
| to introduce a special
 | |
| sequence; two backslashes are used to represent a real backslash,
 | |
| except
 | |
| .Dv VIS_HTTPSTYLE
 | |
| that uses
 | |
| .Ql % ,
 | |
| or
 | |
| .Dv VIS_MIMESTYLE
 | |
| that uses
 | |
| .Ql = .
 | |
| These are the visual formats:
 | |
| .Bl -tag -width VIS_CSTYLE
 | |
| .It (default)
 | |
| Use an
 | |
| .Ql M
 | |
| to represent meta characters (characters with the 8th
 | |
| bit set), and use caret
 | |
| .Ql ^
 | |
| to represent control characters (see
 | |
| .Xr iscntrl 3 ) .
 | |
| The following formats are used:
 | |
| .Bl -tag -width xxxxx
 | |
| .It Dv \e^C
 | |
| Represents the control character
 | |
| .Ql C .
 | |
| Spans characters
 | |
| .Ql \e000
 | |
| through
 | |
| .Ql \e037 ,
 | |
| and
 | |
| .Ql \e177
 | |
| (as
 | |
| .Ql \e^? ) .
 | |
| .It Dv \eM-C
 | |
| Represents character
 | |
| .Ql C
 | |
| with the 8th bit set.
 | |
| Spans characters
 | |
| .Ql \e241
 | |
| through
 | |
| .Ql \e376 .
 | |
| .It Dv \eM^C
 | |
| Represents control character
 | |
| .Ql C
 | |
| with the 8th bit set.
 | |
| Spans characters
 | |
| .Ql \e200
 | |
| through
 | |
| .Ql \e237 ,
 | |
| and
 | |
| .Ql \e377
 | |
| (as
 | |
| .Ql \eM^? ) .
 | |
| .It Dv \e040
 | |
| Represents
 | |
| .Tn ASCII
 | |
| space.
 | |
| .It Dv \e240
 | |
| Represents Meta-space.
 | |
| .El
 | |
| .Pp
 | |
| .It Dv VIS_CSTYLE
 | |
| Use C-style backslash sequences to represent standard non-printable
 | |
| characters.
 | |
| The following sequences are used to represent the indicated characters:
 | |
| .Bd -unfilled -offset indent
 | |
| .Li \ea Tn  \(em BEL No (007)
 | |
| .Li \eb Tn  \(em BS No (010)
 | |
| .Li \ef Tn  \(em NP No (014)
 | |
| .Li \en Tn  \(em NL No (012)
 | |
| .Li \er Tn  \(em CR No (015)
 | |
| .Li \es Tn  \(em SP No (040)
 | |
| .Li \et Tn  \(em HT No (011)
 | |
| .Li \ev Tn  \(em VT No (013)
 | |
| .Li \e0 Tn  \(em NUL No (000)
 | |
| .Ed
 | |
| .Pp
 | |
| When using this format, the
 | |
| .Fa nextc
 | |
| parameter is looked at to determine if a
 | |
| .Dv NUL
 | |
| character can be encoded as
 | |
| .Ql \e0
 | |
| instead of
 | |
| .Ql \e000 .
 | |
| If
 | |
| .Fa nextc
 | |
| is an octal digit, the latter representation is used to
 | |
| avoid ambiguity.
 | |
| .It Dv VIS_OCTAL
 | |
| Use a three digit octal sequence.
 | |
| The form is
 | |
| .Ql \eddd
 | |
| where
 | |
| .Em d
 | |
| represents an octal digit.
 | |
| .It Dv VIS_HTTPSTYLE
 | |
| Use URI encoding as described in RFC 1738.
 | |
| The form is
 | |
| .Ql %xx
 | |
| where
 | |
| .Em x
 | |
| represents a lower case hexadecimal digit.
 | |
| .It Dv VIS_MIMESTYLE
 | |
| Use MIME Quoted-Printable encoding as described in RFC 2045, only don't
 | |
| break lines and don't handle CRLF.
 | |
| The form is
 | |
| .Ql =XX
 | |
| where
 | |
| .Em X
 | |
| represents an upper case hexadecimal digit.
 | |
| .El
 | |
| .Pp
 | |
| There is one additional flag,
 | |
| .Dv VIS_NOSLASH ,
 | |
| which inhibits the
 | |
| doubling of backslashes and the backslash before the default
 | |
| format (that is, control characters are represented by
 | |
| .Ql ^C
 | |
| and
 | |
| meta characters as
 | |
| .Ql M-C ) .
 | |
| With this flag set, the encoding is
 | |
| ambiguous and non-invertible.
 | |
| .Sh MULTIBYTE CHARACTER SUPPORT
 | |
| These functions support 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.
 | |
| .Pp
 | |
| As noted above,
 | |
| .Fa dst
 | |
| must be four times the number of bytes processed from
 | |
| .Fa src .
 | |
| But note that each multibyte character can be up to
 | |
| .Dv MB_LEN_MAX
 | |
| bytes
 | |
| .\" (see
 | |
| .\" .Xr multibyte 3 )
 | |
| so in terms of multibyte characters,
 | |
| .Fa dst
 | |
| must be four times
 | |
| .Dv MB_LEN_MAX
 | |
| times the number of characters processed from
 | |
| .Fa src .
 | |
| .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.
 | |
| .El
 | |
| .Sh ERRORS
 | |
| The functions
 | |
| .Fn nvis
 | |
| and
 | |
| .Fn snvis
 | |
| will return
 | |
| .Dv NULL
 | |
| and the functions
 | |
| .Fn strnvis ,
 | |
| .Fn strnvisx ,
 | |
| .Fn strsnvis ,
 | |
| and
 | |
| .Fn strsnvisx ,
 | |
| will return \-1 when the
 | |
| .Fa dlen
 | |
| destination buffer size is not enough to perform the conversion while
 | |
| setting
 | |
| .Va errno
 | |
| to:
 | |
| .Bl -tag -width ".Bq Er ENOSPC"
 | |
| .It Bq Er ENOSPC
 | |
| The destination buffer size is not large enough to perform the conversion.
 | |
| .El
 | |
| .Sh SEE ALSO
 | |
| .Xr unvis 1 ,
 | |
| .Xr vis 1 ,
 | |
| .Xr glob 3 ,
 | |
| .\" .Xr multibyte 3 ,
 | |
| .Xr unvis 3
 | |
| .Rs
 | |
| .%A T. Berners-Lee
 | |
| .%T Uniform Resource Locators (URL)
 | |
| .%O "RFC 1738"
 | |
| .Re
 | |
| .Rs
 | |
| .%T "Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies"
 | |
| .%O "RFC 2045"
 | |
| .Re
 | |
| .Sh HISTORY
 | |
| The
 | |
| .Fn vis ,
 | |
| .Fn strvis ,
 | |
| and
 | |
| .Fn strvisx
 | |
| functions first appeared in
 | |
| .Bx 4.4 .
 | |
| The
 | |
| .Fn svis ,
 | |
| .Fn strsvis ,
 | |
| and
 | |
| .Fn strsvisx
 | |
| functions appeared in
 | |
| .Nx 1.5 .
 | |
| The buffer size limited versions of the functions
 | |
| .Po Fn nvis ,
 | |
| .Fn strnvis ,
 | |
| .Fn strnvisx ,
 | |
| .Fn snvis ,
 | |
| .Fn strsnvis ,
 | |
| and
 | |
| .Fn strsnvisx Pc
 | |
| appeared in
 | |
| .Nx 6.0
 | |
| and
 | |
| .Fx 9.2 .
 | |
| Myltibyte character support was added in
 | |
| .Nx 7.0
 | |
| and
 | |
| .Fx 9.2 .
 |