1251881Speter/* $NetBSD: vis.h,v 1.21 2013/02/20 17:01:15 christos Exp $ */ 2251881Speter/* $FreeBSD$ */ 3251881Speter 4251881Speter/*- 5251881Speter * Copyright (c) 1990, 1993 6251881Speter * The Regents of the University of California. All rights reserved. 7251881Speter * 8251881Speter * Redistribution and use in source and binary forms, with or without 9251881Speter * modification, are permitted provided that the following conditions 10251881Speter * are met: 11251881Speter * 1. Redistributions of source code must retain the above copyright 12251881Speter * notice, this list of conditions and the following disclaimer. 13251881Speter * 2. Redistributions in binary form must reproduce the above copyright 14251881Speter * notice, this list of conditions and the following disclaimer in the 15251881Speter * documentation and/or other materials provided with the distribution. 16251881Speter * 3. Neither the name of the University nor the names of its contributors 17251881Speter * may be used to endorse or promote products derived from this software 18251881Speter * without specific prior written permission. 19251881Speter * 20251881Speter * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 21251881Speter * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22251881Speter * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23251881Speter * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 24251881Speter * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25251881Speter * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 26251881Speter * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27251881Speter * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28251881Speter * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29251881Speter * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30251881Speter * SUCH DAMAGE. 31251881Speter * 32251881Speter * @(#)vis.h 8.1 (Berkeley) 6/2/93 33251881Speter */ 34251881Speter 35251881Speter#ifndef _VIS_H_ 36251881Speter#define _VIS_H_ 37251881Speter 38251881Speter#include <sys/types.h> 39251881Speter 40251881Speter/* 41251881Speter * to select alternate encoding format 42251881Speter */ 43251881Speter#define VIS_OCTAL 0x0001 /* use octal \ddd format */ 44251881Speter#define VIS_CSTYLE 0x0002 /* use \[nrft0..] where appropiate */ 45251881Speter 46251881Speter/* 47251881Speter * to alter set of characters encoded (default is to encode all 48251881Speter * non-graphic except space, tab, and newline). 49251881Speter */ 50251881Speter#define VIS_SP 0x0004 /* also encode space */ 51251881Speter#define VIS_TAB 0x0008 /* also encode tab */ 52251881Speter#define VIS_NL 0x0010 /* also encode newline */ 53251881Speter#define VIS_WHITE (VIS_SP | VIS_TAB | VIS_NL) 54251881Speter#define VIS_SAFE 0x0020 /* only encode "unsafe" characters */ 55251881Speter 56251881Speter/* 57251881Speter * other 58251881Speter */ 59251881Speter#define VIS_NOSLASH 0x0040 /* inhibit printing '\' */ 60251881Speter#define VIS_HTTP1808 0x0080 /* http-style escape % hex hex */ 61251881Speter#define VIS_HTTPSTYLE 0x0080 /* http-style escape % hex hex */ 62251881Speter#define VIS_GLOB 0x0100 /* encode glob(3) magic characters */ 63251881Speter#define VIS_MIMESTYLE 0x0200 /* mime-style escape = HEX HEX */ 64251881Speter#define VIS_HTTP1866 0x0400 /* http-style &#num; or &string; */ 65251881Speter#define VIS_NOESCAPE 0x0800 /* don't decode `\' */ 66251881Speter#define _VIS_END 0x1000 /* for unvis */ 67251881Speter 68251881Speter/* 69251881Speter * unvis return codes 70251881Speter */ 71251881Speter#define UNVIS_VALID 1 /* character valid */ 72251881Speter#define UNVIS_VALIDPUSH 2 /* character valid, push back passed char */ 73251881Speter#define UNVIS_NOCHAR 3 /* valid sequence, no character produced */ 74251881Speter#define UNVIS_SYNBAD -1 /* unrecognized escape sequence */ 75251881Speter#define UNVIS_ERROR -2 /* decoder in unknown state (unrecoverable) */ 76251881Speter 77251881Speter/* 78251881Speter * unvis flags 79251881Speter */ 80251881Speter#define UNVIS_END _VIS_END /* no more characters */ 81251881Speter 82251881Speter#include <sys/cdefs.h> 83251881Speter 84251881Speter__BEGIN_DECLS 85251881Speterchar *vis(char *, int, int, int); 86251881Speterchar *nvis(char *, size_t, int, int, int); 87251881Speter 88251881Speterchar *svis(char *, int, int, int, const char *); 89251881Speterchar *snvis(char *, size_t, int, int, int, const char *); 90251881Speter 91251881Speterint strvis(char *, const char *, int); 92251881Speterint strnvis(char *, size_t, const char *, int); 93251881Speter 94251881Speterint strsvis(char *, const char *, int, const char *); 95251881Speterint strsnvis(char *, size_t, const char *, int, const char *); 96251881Speter 97251881Speterint strvisx(char *, const char *, size_t, int); 98251881Speterint strnvisx(char *, size_t, const char *, size_t, int); 99251881Speterint strenvisx(char *, size_t, const char *, size_t, int, int *); 100251881Speter 101251881Speterint strsvisx(char *, const char *, size_t, int, const char *); 102251881Speterint strsnvisx(char *, size_t, const char *, size_t, int, const char *); 103251881Speterint strsenvisx(char *, size_t, const char *, size_t , int, const char *, 104251881Speter int *); 105251881Speter 106251881Speterint strunvis(char *, const char *); 107251881Speterint strnunvis(char *, size_t, const char *); 108251881Speter 109251881Speterint strunvisx(char *, const char *, int); 110251881Speterint strnunvisx(char *, size_t, const char *, int); 111251881Speter 112251881Speter#ifndef __LIBC12_SOURCE__ 113251881Speterint unvis(char *, int, int *, int); 114251881Speter#endif 115251881Speter__END_DECLS 116251881Speter 117251881Speter#endif /* !_VIS_H_ */ 118251881Speter