xref: /freebsd-src/crypto/openssh/openbsd-compat/vis.h (revision 076ad2f836d5f49dc1375f1677335a48fe0d4b82)
1*076ad2f8SDag-Erling Smørgrav /*	$OpenBSD: vis.h,v 1.15 2015/07/20 01:52:27 millert Exp $	*/
2d0c8c0bcSDag-Erling Smørgrav /*	$NetBSD: vis.h,v 1.4 1994/10/26 00:56:41 cgd Exp $	*/
3d0c8c0bcSDag-Erling Smørgrav 
4d0c8c0bcSDag-Erling Smørgrav /*-
5d0c8c0bcSDag-Erling Smørgrav  * Copyright (c) 1990 The Regents of the University of California.
6d0c8c0bcSDag-Erling Smørgrav  * All rights reserved.
7d0c8c0bcSDag-Erling Smørgrav  *
8d0c8c0bcSDag-Erling Smørgrav  * Redistribution and use in source and binary forms, with or without
9d0c8c0bcSDag-Erling Smørgrav  * modification, are permitted provided that the following conditions
10d0c8c0bcSDag-Erling Smørgrav  * are met:
11d0c8c0bcSDag-Erling Smørgrav  * 1. Redistributions of source code must retain the above copyright
12d0c8c0bcSDag-Erling Smørgrav  *    notice, this list of conditions and the following disclaimer.
13d0c8c0bcSDag-Erling Smørgrav  * 2. Redistributions in binary form must reproduce the above copyright
14d0c8c0bcSDag-Erling Smørgrav  *    notice, this list of conditions and the following disclaimer in the
15d0c8c0bcSDag-Erling Smørgrav  *    documentation and/or other materials provided with the distribution.
16d95e11bfSDag-Erling Smørgrav  * 3. Neither the name of the University nor the names of its contributors
17d0c8c0bcSDag-Erling Smørgrav  *    may be used to endorse or promote products derived from this software
18d0c8c0bcSDag-Erling Smørgrav  *    without specific prior written permission.
19d0c8c0bcSDag-Erling Smørgrav  *
20d0c8c0bcSDag-Erling Smørgrav  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21d0c8c0bcSDag-Erling Smørgrav  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22d0c8c0bcSDag-Erling Smørgrav  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23d0c8c0bcSDag-Erling Smørgrav  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24d0c8c0bcSDag-Erling Smørgrav  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25d0c8c0bcSDag-Erling Smørgrav  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26d0c8c0bcSDag-Erling Smørgrav  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27d0c8c0bcSDag-Erling Smørgrav  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28d0c8c0bcSDag-Erling Smørgrav  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29d0c8c0bcSDag-Erling Smørgrav  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30d0c8c0bcSDag-Erling Smørgrav  * SUCH DAMAGE.
31d0c8c0bcSDag-Erling Smørgrav  *
32d0c8c0bcSDag-Erling Smørgrav  *	@(#)vis.h	5.9 (Berkeley) 4/3/91
33d0c8c0bcSDag-Erling Smørgrav  */
34d95e11bfSDag-Erling Smørgrav 
35021d409fSDag-Erling Smørgrav /* OPENBSD ORIGINAL: include/vis.h */
36021d409fSDag-Erling Smørgrav 
37d95e11bfSDag-Erling Smørgrav #include "includes.h"
386888a9beSDag-Erling Smørgrav #if !defined(HAVE_STRNVIS) || defined(BROKEN_STRNVIS)
39d0c8c0bcSDag-Erling Smørgrav 
40d0c8c0bcSDag-Erling Smørgrav #ifndef _VIS_H_
41d0c8c0bcSDag-Erling Smørgrav #define	_VIS_H_
42d0c8c0bcSDag-Erling Smørgrav 
43d0c8c0bcSDag-Erling Smørgrav #include <sys/types.h>
44d0c8c0bcSDag-Erling Smørgrav #include <limits.h>
45d0c8c0bcSDag-Erling Smørgrav 
46d0c8c0bcSDag-Erling Smørgrav /*
47d0c8c0bcSDag-Erling Smørgrav  * to select alternate encoding format
48d0c8c0bcSDag-Erling Smørgrav  */
49d0c8c0bcSDag-Erling Smørgrav #define	VIS_OCTAL	0x01	/* use octal \ddd format */
50d0c8c0bcSDag-Erling Smørgrav #define	VIS_CSTYLE	0x02	/* use \[nrft0..] where appropriate */
51d0c8c0bcSDag-Erling Smørgrav 
52d0c8c0bcSDag-Erling Smørgrav /*
53d0c8c0bcSDag-Erling Smørgrav  * to alter set of characters encoded (default is to encode all
54d0c8c0bcSDag-Erling Smørgrav  * non-graphic except space, tab, and newline).
55d0c8c0bcSDag-Erling Smørgrav  */
56d0c8c0bcSDag-Erling Smørgrav #define	VIS_SP		0x04	/* also encode space */
57d0c8c0bcSDag-Erling Smørgrav #define	VIS_TAB		0x08	/* also encode tab */
58d0c8c0bcSDag-Erling Smørgrav #define	VIS_NL		0x10	/* also encode newline */
59d0c8c0bcSDag-Erling Smørgrav #define	VIS_WHITE	(VIS_SP | VIS_TAB | VIS_NL)
60d0c8c0bcSDag-Erling Smørgrav #define	VIS_SAFE	0x20	/* only encode "unsafe" characters */
61*076ad2f8SDag-Erling Smørgrav #define	VIS_DQ		0x200	/* backslash-escape double quotes */
62*076ad2f8SDag-Erling Smørgrav #define	VIS_ALL		0x400	/* encode all characters */
63d0c8c0bcSDag-Erling Smørgrav 
64d0c8c0bcSDag-Erling Smørgrav /*
65d0c8c0bcSDag-Erling Smørgrav  * other
66d0c8c0bcSDag-Erling Smørgrav  */
67d0c8c0bcSDag-Erling Smørgrav #define	VIS_NOSLASH	0x40	/* inhibit printing '\' */
68021d409fSDag-Erling Smørgrav #define	VIS_GLOB	0x100	/* encode glob(3) magics and '#' */
69d0c8c0bcSDag-Erling Smørgrav 
70d0c8c0bcSDag-Erling Smørgrav /*
71d0c8c0bcSDag-Erling Smørgrav  * unvis return codes
72d0c8c0bcSDag-Erling Smørgrav  */
73d0c8c0bcSDag-Erling Smørgrav #define	UNVIS_VALID	 1	/* character valid */
74d0c8c0bcSDag-Erling Smørgrav #define	UNVIS_VALIDPUSH	 2	/* character valid, push back passed char */
75d0c8c0bcSDag-Erling Smørgrav #define	UNVIS_NOCHAR	 3	/* valid sequence, no character produced */
76d0c8c0bcSDag-Erling Smørgrav #define	UNVIS_SYNBAD	-1	/* unrecognized escape sequence */
77d0c8c0bcSDag-Erling Smørgrav #define	UNVIS_ERROR	-2	/* decoder in unknown state (unrecoverable) */
78d0c8c0bcSDag-Erling Smørgrav 
79d0c8c0bcSDag-Erling Smørgrav /*
80d0c8c0bcSDag-Erling Smørgrav  * unvis flags
81d0c8c0bcSDag-Erling Smørgrav  */
82d0c8c0bcSDag-Erling Smørgrav #define	UNVIS_END	1	/* no more characters */
83d0c8c0bcSDag-Erling Smørgrav 
84d0c8c0bcSDag-Erling Smørgrav char	*vis(char *, int, int, int);
85d0c8c0bcSDag-Erling Smørgrav int	strvis(char *, const char *, int);
86*076ad2f8SDag-Erling Smørgrav int	stravis(char **, const char *, int);
87021d409fSDag-Erling Smørgrav int	strnvis(char *, const char *, size_t, int)
88021d409fSDag-Erling Smørgrav 		__attribute__ ((__bounded__(__string__,1,3)));
89021d409fSDag-Erling Smørgrav int	strvisx(char *, const char *, size_t, int)
90021d409fSDag-Erling Smørgrav 		__attribute__ ((__bounded__(__string__,1,3)));
91d0c8c0bcSDag-Erling Smørgrav int	strunvis(char *, const char *);
92d0c8c0bcSDag-Erling Smørgrav int	unvis(char *, char, int *, int);
93021d409fSDag-Erling Smørgrav ssize_t strnunvis(char *, const char *, size_t)
94021d409fSDag-Erling Smørgrav 		__attribute__ ((__bounded__(__string__,1,3)));
95d0c8c0bcSDag-Erling Smørgrav 
96d0c8c0bcSDag-Erling Smørgrav #endif /* !_VIS_H_ */
97d0c8c0bcSDag-Erling Smørgrav 
986888a9beSDag-Erling Smørgrav #endif /* !HAVE_STRNVIS || BROKEN_STRNVIS */
99