mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
added skipped file for libedit-2.6.7
This commit is contained in:
88
cmd-line-utils/libedit/np/fgetln.c
Normal file
88
cmd-line-utils/libedit/np/fgetln.c
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
/* $NetBSD: fgetln.c,v 1.1.1.1 1999/04/12 07:43:21 crooksa Exp $ */
|
||||||
|
|
||||||
|
/*-
|
||||||
|
* Copyright (c) 1998 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
char *
|
||||||
|
fgetln(fp, len)
|
||||||
|
FILE *fp;
|
||||||
|
size_t *len;
|
||||||
|
{
|
||||||
|
static char *buf = NULL;
|
||||||
|
static size_t bufsiz = 0;
|
||||||
|
char *ptr;
|
||||||
|
|
||||||
|
|
||||||
|
if (buf == NULL) {
|
||||||
|
bufsiz = BUFSIZ;
|
||||||
|
if ((buf = malloc(bufsiz)) == NULL)
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fgets(buf, bufsiz, fp) == NULL)
|
||||||
|
return NULL;
|
||||||
|
*len = 0;
|
||||||
|
|
||||||
|
while ((ptr = strchr(&buf[*len], '\n')) == NULL) {
|
||||||
|
size_t nbufsiz = bufsiz + BUFSIZ;
|
||||||
|
char *nbuf = realloc(buf, nbufsiz);
|
||||||
|
|
||||||
|
if (nbuf == NULL) {
|
||||||
|
int oerrno = errno;
|
||||||
|
free(buf);
|
||||||
|
errno = oerrno;
|
||||||
|
buf = NULL;
|
||||||
|
return NULL;
|
||||||
|
} else
|
||||||
|
buf = nbuf;
|
||||||
|
|
||||||
|
*len = bufsiz;
|
||||||
|
if (fgets(&buf[bufsiz], BUFSIZ, fp) == NULL)
|
||||||
|
return buf;
|
||||||
|
|
||||||
|
bufsiz = nbufsiz;
|
||||||
|
}
|
||||||
|
|
||||||
|
*len = (ptr - buf) + 1;
|
||||||
|
return buf;
|
||||||
|
}
|
75
cmd-line-utils/libedit/np/strlcat.c
Normal file
75
cmd-line-utils/libedit/np/strlcat.c
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
|
||||||
|
* 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. The name of the author may not be used to endorse or promote products
|
||||||
|
* derived from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED ``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 AUTHOR 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 "config.h"
|
||||||
|
#if defined(LIBC_SCCS) && !defined(lint)
|
||||||
|
static char *rcsid = "$OpenBSD: strlcat.c,v 1.2 1999/06/17 16:28:58 millert Exp $";
|
||||||
|
#endif /* LIBC_SCCS and not lint */
|
||||||
|
#ifndef lint
|
||||||
|
static const char rcsid[] =
|
||||||
|
"$FreeBSD: src/lib/libc/string/strlcat.c,v 1.2.4.2 2001/07/09 23:30:06 obrien Exp $";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Appends src to string dst of size siz (unlike strncat, siz is the
|
||||||
|
* full size of dst, not space left). At most siz-1 characters
|
||||||
|
* will be copied. Always NUL terminates (unless siz <= strlen(dst)).
|
||||||
|
* Returns strlen(initial dst) + strlen(src); if retval >= siz,
|
||||||
|
* truncation occurred.
|
||||||
|
*/
|
||||||
|
size_t strlcat(dst, src, siz)
|
||||||
|
char *dst;
|
||||||
|
const char *src;
|
||||||
|
size_t siz;
|
||||||
|
{
|
||||||
|
register char *d = dst;
|
||||||
|
register const char *s = src;
|
||||||
|
register size_t n = siz;
|
||||||
|
size_t dlen;
|
||||||
|
|
||||||
|
/* Find the end of dst and adjust bytes left but don't go past end */
|
||||||
|
while (n-- != 0 && *d != '\0')
|
||||||
|
d++;
|
||||||
|
dlen = d - dst;
|
||||||
|
n = siz - dlen;
|
||||||
|
|
||||||
|
if (n == 0)
|
||||||
|
return(dlen + strlen(s));
|
||||||
|
while (*s != '\0') {
|
||||||
|
if (n != 1) {
|
||||||
|
*d++ = *s;
|
||||||
|
n--;
|
||||||
|
}
|
||||||
|
s++;
|
||||||
|
}
|
||||||
|
*d = '\0';
|
||||||
|
|
||||||
|
return(dlen + (s - src)); /* count does not include NUL */
|
||||||
|
}
|
75
cmd-line-utils/libedit/np/strlcpy.c
Normal file
75
cmd-line-utils/libedit/np/strlcpy.c
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
/* $OpenBSD: strlcpy.c,v 1.4 1999/05/01 18:56:41 millert Exp $ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
|
||||||
|
* 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. The name of the author may not be used to endorse or promote products
|
||||||
|
* derived from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED ``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 AUTHOR 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 "config.h"
|
||||||
|
#if defined(LIBC_SCCS) && !defined(lint)
|
||||||
|
#if 0
|
||||||
|
static char *rcsid = "$OpenBSD: strlcpy.c,v 1.4 1999/05/01 18:56:41 millert Exp $";
|
||||||
|
#endif
|
||||||
|
#endif /* LIBC_SCCS and not lint */
|
||||||
|
#ifndef lint
|
||||||
|
static const char rcsid[] =
|
||||||
|
"$FreeBSD: src/lib/libc/string/strlcpy.c,v 1.2.4.1 2001/07/09 23:30:06 obrien Exp $";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copy src to string dst of size siz. At most siz-1 characters
|
||||||
|
* will be copied. Always NUL terminates (unless siz == 0).
|
||||||
|
* Returns strlen(src); if retval >= siz, truncation occurred.
|
||||||
|
*/
|
||||||
|
size_t strlcpy(dst, src, siz)
|
||||||
|
char *dst;
|
||||||
|
const char *src;
|
||||||
|
size_t siz;
|
||||||
|
{
|
||||||
|
register char *d = dst;
|
||||||
|
register const char *s = src;
|
||||||
|
register size_t n = siz;
|
||||||
|
|
||||||
|
/* Copy as many bytes as will fit */
|
||||||
|
if (n != 0 && --n != 0) {
|
||||||
|
do {
|
||||||
|
if ((*d++ = *s++) == 0)
|
||||||
|
break;
|
||||||
|
} while (--n != 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Not enough room in dst, add NUL and traverse rest of src */
|
||||||
|
if (n == 0) {
|
||||||
|
if (siz != 0)
|
||||||
|
*d = '\0'; /* NUL-terminate dst */
|
||||||
|
while (*s++)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
return(s - src - 1); /* count does not include NUL */
|
||||||
|
}
|
321
cmd-line-utils/libedit/np/unvis.c
Normal file
321
cmd-line-utils/libedit/np/unvis.c
Normal file
@ -0,0 +1,321 @@
|
|||||||
|
/* $NetBSD: unvis.c,v 1.22 2002/03/23 17:38:27 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. All advertising materials mentioning features or use of this software
|
||||||
|
* must display the following acknowledgement:
|
||||||
|
* This product includes software developed by the University of
|
||||||
|
* California, Berkeley and its contributors.
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if defined(LIBC_SCCS) && !defined(lint)
|
||||||
|
#if 0
|
||||||
|
static char sccsid[] = "@(#)unvis.c 8.1 (Berkeley) 6/4/93";
|
||||||
|
#else
|
||||||
|
__RCSID("$NetBSD: unvis.c,v 1.22 2002/03/23 17:38:27 christos Exp $");
|
||||||
|
#endif
|
||||||
|
#endif /* LIBC_SCCS and not lint */
|
||||||
|
|
||||||
|
#define __LIBC12_SOURCE__
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "np/vis.h"
|
||||||
|
|
||||||
|
#ifdef __weak_alias
|
||||||
|
__weak_alias(strunvis,_strunvis)
|
||||||
|
__weak_alias(unvis,_unvis)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __warn_references
|
||||||
|
__warn_references(unvis,
|
||||||
|
"warning: reference to compatibility unvis(); include <vis.h> for correct reference")
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !HAVE_VIS_H
|
||||||
|
/*
|
||||||
|
* decode driven by state machine
|
||||||
|
*/
|
||||||
|
#define S_GROUND 0 /* haven't seen escape char */
|
||||||
|
#define S_START 1 /* start decoding special sequence */
|
||||||
|
#define S_META 2 /* metachar started (M) */
|
||||||
|
#define S_META1 3 /* metachar more, regular char (-) */
|
||||||
|
#define S_CTRL 4 /* control char started (^) */
|
||||||
|
#define S_OCTAL2 5 /* octal digit 2 */
|
||||||
|
#define S_OCTAL3 6 /* octal digit 3 */
|
||||||
|
#define S_HEX1 7 /* hex digit */
|
||||||
|
#define S_HEX2 8 /* hex digit 2 */
|
||||||
|
|
||||||
|
#define isoctal(c) (((u_char)(c)) >= '0' && ((u_char)(c)) <= '7')
|
||||||
|
#define xtod(c) (isdigit(c) ? (c - '0') : ((tolower(c) - 'a') + 10))
|
||||||
|
|
||||||
|
int
|
||||||
|
unvis(cp, c, astate, flag)
|
||||||
|
char *cp;
|
||||||
|
int c;
|
||||||
|
int *astate, flag;
|
||||||
|
{
|
||||||
|
return __unvis13(cp, (int)c, astate, flag);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* unvis - decode characters previously encoded by vis
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
__unvis13(cp, c, astate, flag)
|
||||||
|
char *cp;
|
||||||
|
int c;
|
||||||
|
int *astate, flag;
|
||||||
|
{
|
||||||
|
|
||||||
|
_DIAGASSERT(cp != NULL);
|
||||||
|
_DIAGASSERT(astate != NULL);
|
||||||
|
|
||||||
|
if (flag & UNVIS_END) {
|
||||||
|
if (*astate == S_OCTAL2 || *astate == S_OCTAL3
|
||||||
|
|| *astate == S_HEX2) {
|
||||||
|
*astate = S_GROUND;
|
||||||
|
return (UNVIS_VALID);
|
||||||
|
}
|
||||||
|
return (*astate == S_GROUND ? UNVIS_NOCHAR : UNVIS_SYNBAD);
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (*astate) {
|
||||||
|
|
||||||
|
case S_GROUND:
|
||||||
|
*cp = 0;
|
||||||
|
if (c == '\\') {
|
||||||
|
*astate = S_START;
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
if ((flag & VIS_HTTPSTYLE) && c == '%') {
|
||||||
|
*astate = S_HEX1;
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
*cp = c;
|
||||||
|
return (UNVIS_VALID);
|
||||||
|
|
||||||
|
case S_START:
|
||||||
|
switch(c) {
|
||||||
|
case '\\':
|
||||||
|
*cp = c;
|
||||||
|
*astate = S_GROUND;
|
||||||
|
return (UNVIS_VALID);
|
||||||
|
case '0': case '1': case '2': case '3':
|
||||||
|
case '4': case '5': case '6': case '7':
|
||||||
|
*cp = (c - '0');
|
||||||
|
*astate = S_OCTAL2;
|
||||||
|
return (0);
|
||||||
|
case 'M':
|
||||||
|
*cp = (char)0200;
|
||||||
|
*astate = S_META;
|
||||||
|
return (0);
|
||||||
|
case '^':
|
||||||
|
*astate = S_CTRL;
|
||||||
|
return (0);
|
||||||
|
case 'n':
|
||||||
|
*cp = '\n';
|
||||||
|
*astate = S_GROUND;
|
||||||
|
return (UNVIS_VALID);
|
||||||
|
case 'r':
|
||||||
|
*cp = '\r';
|
||||||
|
*astate = S_GROUND;
|
||||||
|
return (UNVIS_VALID);
|
||||||
|
case 'b':
|
||||||
|
*cp = '\b';
|
||||||
|
*astate = S_GROUND;
|
||||||
|
return (UNVIS_VALID);
|
||||||
|
case 'a':
|
||||||
|
*cp = '\007';
|
||||||
|
*astate = S_GROUND;
|
||||||
|
return (UNVIS_VALID);
|
||||||
|
case 'v':
|
||||||
|
*cp = '\v';
|
||||||
|
*astate = S_GROUND;
|
||||||
|
return (UNVIS_VALID);
|
||||||
|
case 't':
|
||||||
|
*cp = '\t';
|
||||||
|
*astate = S_GROUND;
|
||||||
|
return (UNVIS_VALID);
|
||||||
|
case 'f':
|
||||||
|
*cp = '\f';
|
||||||
|
*astate = S_GROUND;
|
||||||
|
return (UNVIS_VALID);
|
||||||
|
case 's':
|
||||||
|
*cp = ' ';
|
||||||
|
*astate = S_GROUND;
|
||||||
|
return (UNVIS_VALID);
|
||||||
|
case 'E':
|
||||||
|
*cp = '\033';
|
||||||
|
*astate = S_GROUND;
|
||||||
|
return (UNVIS_VALID);
|
||||||
|
case '\n':
|
||||||
|
/*
|
||||||
|
* hidden newline
|
||||||
|
*/
|
||||||
|
*astate = S_GROUND;
|
||||||
|
return (UNVIS_NOCHAR);
|
||||||
|
case '$':
|
||||||
|
/*
|
||||||
|
* hidden marker
|
||||||
|
*/
|
||||||
|
*astate = S_GROUND;
|
||||||
|
return (UNVIS_NOCHAR);
|
||||||
|
}
|
||||||
|
*astate = S_GROUND;
|
||||||
|
return (UNVIS_SYNBAD);
|
||||||
|
|
||||||
|
case S_META:
|
||||||
|
if (c == '-')
|
||||||
|
*astate = S_META1;
|
||||||
|
else if (c == '^')
|
||||||
|
*astate = S_CTRL;
|
||||||
|
else {
|
||||||
|
*astate = S_GROUND;
|
||||||
|
return (UNVIS_SYNBAD);
|
||||||
|
}
|
||||||
|
return (0);
|
||||||
|
|
||||||
|
case S_META1:
|
||||||
|
*astate = S_GROUND;
|
||||||
|
*cp |= c;
|
||||||
|
return (UNVIS_VALID);
|
||||||
|
|
||||||
|
case S_CTRL:
|
||||||
|
if (c == '?')
|
||||||
|
*cp |= 0177;
|
||||||
|
else
|
||||||
|
*cp |= c & 037;
|
||||||
|
*astate = S_GROUND;
|
||||||
|
return (UNVIS_VALID);
|
||||||
|
|
||||||
|
case S_OCTAL2: /* second possible octal digit */
|
||||||
|
if (isoctal(c)) {
|
||||||
|
/*
|
||||||
|
* yes - and maybe a third
|
||||||
|
*/
|
||||||
|
*cp = (*cp << 3) + (c - '0');
|
||||||
|
*astate = S_OCTAL3;
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* no - done with current sequence, push back passed char
|
||||||
|
*/
|
||||||
|
*astate = S_GROUND;
|
||||||
|
return (UNVIS_VALIDPUSH);
|
||||||
|
|
||||||
|
case S_OCTAL3: /* third possible octal digit */
|
||||||
|
*astate = S_GROUND;
|
||||||
|
if (isoctal(c)) {
|
||||||
|
*cp = (*cp << 3) + (c - '0');
|
||||||
|
return (UNVIS_VALID);
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* we were done, push back passed char
|
||||||
|
*/
|
||||||
|
return (UNVIS_VALIDPUSH);
|
||||||
|
case S_HEX1:
|
||||||
|
if (isxdigit(c)) {
|
||||||
|
*cp = xtod(c);
|
||||||
|
*astate = S_HEX2;
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* no - done with current sequence, push back passed char
|
||||||
|
*/
|
||||||
|
*astate = S_GROUND;
|
||||||
|
return (UNVIS_VALIDPUSH);
|
||||||
|
case S_HEX2:
|
||||||
|
*astate = S_GROUND;
|
||||||
|
if (isxdigit(c)) {
|
||||||
|
*cp = xtod(c) | (*cp << 4);
|
||||||
|
return (UNVIS_VALID);
|
||||||
|
}
|
||||||
|
return (UNVIS_VALIDPUSH);
|
||||||
|
default:
|
||||||
|
/*
|
||||||
|
* decoder in unknown state - (probably uninitialized)
|
||||||
|
*/
|
||||||
|
*astate = S_GROUND;
|
||||||
|
return (UNVIS_SYNBAD);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* strunvis - decode src into dst
|
||||||
|
*
|
||||||
|
* Number of chars decoded into dst is returned, -1 on error.
|
||||||
|
* Dst is null terminated.
|
||||||
|
*/
|
||||||
|
|
||||||
|
int
|
||||||
|
strunvisx(dst, src, flag)
|
||||||
|
char *dst;
|
||||||
|
const char *src;
|
||||||
|
int flag;
|
||||||
|
{
|
||||||
|
char c;
|
||||||
|
char *start = dst;
|
||||||
|
int state = 0;
|
||||||
|
|
||||||
|
_DIAGASSERT(src != NULL);
|
||||||
|
_DIAGASSERT(dst != NULL);
|
||||||
|
|
||||||
|
while ((c = *src++) != '\0') {
|
||||||
|
again:
|
||||||
|
switch (__unvis13(dst, c, &state, flag)) {
|
||||||
|
case UNVIS_VALID:
|
||||||
|
dst++;
|
||||||
|
break;
|
||||||
|
case UNVIS_VALIDPUSH:
|
||||||
|
dst++;
|
||||||
|
goto again;
|
||||||
|
case 0:
|
||||||
|
case UNVIS_NOCHAR:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (__unvis13(dst, c, &state, UNVIS_END) == UNVIS_VALID)
|
||||||
|
dst++;
|
||||||
|
*dst = '\0';
|
||||||
|
return (dst - start);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
strunvis(dst, src)
|
||||||
|
char *dst;
|
||||||
|
const char *src;
|
||||||
|
{
|
||||||
|
return strunvisx(dst, src, 0);
|
||||||
|
}
|
||||||
|
#endif
|
347
cmd-line-utils/libedit/np/vis.c
Normal file
347
cmd-line-utils/libedit/np/vis.c
Normal file
@ -0,0 +1,347 @@
|
|||||||
|
/* $NetBSD: vis.c,v 1.22 2002/03/23 17:38:27 christos Exp $ */
|
||||||
|
|
||||||
|
/*-
|
||||||
|
* Copyright (c) 1999 The NetBSD Foundation, Inc.
|
||||||
|
* 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. All advertising materials mentioning features or use of this software
|
||||||
|
* must display the following acknowledgement:
|
||||||
|
* This product includes software developed by the University of
|
||||||
|
* California, Berkeley and its contributors.
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if defined(LIBC_SCCS) && !defined(lint)
|
||||||
|
__RCSID("$NetBSD: vis.c,v 1.22 2002/03/23 17:38:27 christos Exp $");
|
||||||
|
#endif /* LIBC_SCCS and not lint */
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <assert.h>
|
||||||
|
#ifdef HAVE_ALLOCA_H
|
||||||
|
#include <alloca.h>
|
||||||
|
#endif
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include "np/vis.h"
|
||||||
|
|
||||||
|
#ifdef __weak_alias
|
||||||
|
__weak_alias(strsvis,_strsvis)
|
||||||
|
__weak_alias(strsvisx,_strsvisx)
|
||||||
|
__weak_alias(strvis,_strvis)
|
||||||
|
__weak_alias(strvisx,_strvisx)
|
||||||
|
__weak_alias(svis,_svis)
|
||||||
|
__weak_alias(vis,_vis)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !HAVE_VIS_H
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <limits.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#undef BELL
|
||||||
|
#if defined(__STDC__)
|
||||||
|
#define BELL '\a'
|
||||||
|
#else
|
||||||
|
#define BELL '\007'
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define isoctal(c) (((unsigned char)(c)) >= '0' && ((unsigned char)(c)) <= '7')
|
||||||
|
#define iswhite(c) (c == ' ' || c == '\t' || c == '\n')
|
||||||
|
#define issafe(c) (c == '\b' || c == BELL || c == '\r')
|
||||||
|
#define xtoa(c) "0123456789abcdef"[c]
|
||||||
|
|
||||||
|
#define MAXEXTRAS 5
|
||||||
|
|
||||||
|
|
||||||
|
#define MAKEEXTRALIST(flag, extra, orig) \
|
||||||
|
do { \
|
||||||
|
const char *o = orig; \
|
||||||
|
char *e; \
|
||||||
|
while (*o++) \
|
||||||
|
continue; \
|
||||||
|
extra = alloca((size_t)((o - orig) + MAXEXTRAS)); \
|
||||||
|
for (o = orig, e = extra; (*e++ = *o++) != '\0';) \
|
||||||
|
continue; \
|
||||||
|
e--; \
|
||||||
|
if (flag & VIS_SP) *e++ = ' '; \
|
||||||
|
if (flag & VIS_TAB) *e++ = '\t'; \
|
||||||
|
if (flag & VIS_NL) *e++ = '\n'; \
|
||||||
|
if ((flag & VIS_NOSLASH) == 0) *e++ = '\\'; \
|
||||||
|
*e = '\0'; \
|
||||||
|
} while (/*CONSTCOND*/0)
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is HVIS, the macro of vis used to HTTP style (RFC 1808)
|
||||||
|
*/
|
||||||
|
#define HVIS(dst, c, flag, nextc, extra) \
|
||||||
|
do \
|
||||||
|
if (!isascii(c) || !isalnum(c) || strchr("$-_.+!*'(),", c) != NULL) { \
|
||||||
|
*dst++ = '%'; \
|
||||||
|
*dst++ = xtoa(((unsigned int)c >> 4) & 0xf); \
|
||||||
|
*dst++ = xtoa((unsigned int)c & 0xf); \
|
||||||
|
} else { \
|
||||||
|
SVIS(dst, c, flag, nextc, extra); \
|
||||||
|
} \
|
||||||
|
while (/*CONSTCOND*/0)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is SVIS, the central macro of vis.
|
||||||
|
* dst: Pointer to the destination buffer
|
||||||
|
* c: Character to encode
|
||||||
|
* flag: Flag word
|
||||||
|
* nextc: The character following 'c'
|
||||||
|
* extra: Pointer to the list of extra characters to be
|
||||||
|
* backslash-protected.
|
||||||
|
*/
|
||||||
|
#define SVIS(dst, c, flag, nextc, extra) \
|
||||||
|
do { \
|
||||||
|
int isextra, isc; \
|
||||||
|
isextra = strchr(extra, c) != NULL; \
|
||||||
|
if (!isextra && isascii(c) && (isgraph(c) || iswhite(c) || \
|
||||||
|
((flag & VIS_SAFE) && issafe(c)))) { \
|
||||||
|
*dst++ = c; \
|
||||||
|
break; \
|
||||||
|
} \
|
||||||
|
isc = 0; \
|
||||||
|
if (flag & VIS_CSTYLE) { \
|
||||||
|
switch (c) { \
|
||||||
|
case '\n': \
|
||||||
|
isc = 1; *dst++ = '\\'; *dst++ = 'n'; \
|
||||||
|
break; \
|
||||||
|
case '\r': \
|
||||||
|
isc = 1; *dst++ = '\\'; *dst++ = 'r'; \
|
||||||
|
break; \
|
||||||
|
case '\b': \
|
||||||
|
isc = 1; *dst++ = '\\'; *dst++ = 'b'; \
|
||||||
|
break; \
|
||||||
|
case BELL: \
|
||||||
|
isc = 1; *dst++ = '\\'; *dst++ = 'a'; \
|
||||||
|
break; \
|
||||||
|
case '\v': \
|
||||||
|
isc = 1; *dst++ = '\\'; *dst++ = 'v'; \
|
||||||
|
break; \
|
||||||
|
case '\t': \
|
||||||
|
isc = 1; *dst++ = '\\'; *dst++ = 't'; \
|
||||||
|
break; \
|
||||||
|
case '\f': \
|
||||||
|
isc = 1; *dst++ = '\\'; *dst++ = 'f'; \
|
||||||
|
break; \
|
||||||
|
case ' ': \
|
||||||
|
isc = 1; *dst++ = '\\'; *dst++ = 's'; \
|
||||||
|
break; \
|
||||||
|
case '\0': \
|
||||||
|
isc = 1; *dst++ = '\\'; *dst++ = '0'; \
|
||||||
|
if (isoctal(nextc)) { \
|
||||||
|
*dst++ = '0'; \
|
||||||
|
*dst++ = '0'; \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
if (isc) break; \
|
||||||
|
if (isextra || ((c & 0177) == ' ') || (flag & VIS_OCTAL)) { \
|
||||||
|
*dst++ = '\\'; \
|
||||||
|
*dst++ = (unsigned char)(((unsigned int)(unsigned char)c >> 6) & 03) + '0'; \
|
||||||
|
*dst++ = (unsigned char)(((unsigned int)(unsigned char)c >> 3) & 07) + '0'; \
|
||||||
|
*dst++ = (c & 07) + '0'; \
|
||||||
|
} else { \
|
||||||
|
if ((flag & VIS_NOSLASH) == 0) *dst++ = '\\'; \
|
||||||
|
if (c & 0200) { \
|
||||||
|
c &= 0177; *dst++ = 'M'; \
|
||||||
|
} \
|
||||||
|
if (iscntrl(c)) { \
|
||||||
|
*dst++ = '^'; \
|
||||||
|
if (c == 0177) \
|
||||||
|
*dst++ = '?'; \
|
||||||
|
else \
|
||||||
|
*dst++ = c + '@'; \
|
||||||
|
} else { \
|
||||||
|
*dst++ = '-'; *dst++ = c; \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
} while (/*CONSTCOND*/0)
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* svis - visually encode characters, also encoding the characters
|
||||||
|
* pointed to by `extra'
|
||||||
|
*/
|
||||||
|
char *
|
||||||
|
svis(dst, c, flag, nextc, extra)
|
||||||
|
char *dst;
|
||||||
|
int c, flag, nextc;
|
||||||
|
const char *extra;
|
||||||
|
{
|
||||||
|
char *nextra;
|
||||||
|
_DIAGASSERT(dst != NULL);
|
||||||
|
_DIAGASSERT(extra != NULL);
|
||||||
|
MAKEEXTRALIST(flag, nextra, extra);
|
||||||
|
if (flag & VIS_HTTPSTYLE)
|
||||||
|
HVIS(dst, c, flag, nextc, nextra);
|
||||||
|
else
|
||||||
|
SVIS(dst, c, flag, nextc, nextra);
|
||||||
|
*dst = '\0';
|
||||||
|
return(dst);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* strsvis, strsvisx - visually encode characters from src into dst
|
||||||
|
*
|
||||||
|
* Extra is a pointer to a \0-terminated list of characters to
|
||||||
|
* be encoded, too. These functions are useful e. g. to
|
||||||
|
* encode strings in such a way so that they are not interpreted
|
||||||
|
* by a shell.
|
||||||
|
*
|
||||||
|
* Dst must be 4 times the size of src to account for possible
|
||||||
|
* expansion. The length of dst, not including the trailing NULL,
|
||||||
|
* is returned.
|
||||||
|
*
|
||||||
|
* Strsvisx encodes exactly len bytes from src into dst.
|
||||||
|
* This is useful for encoding a block of data.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
strsvis(dst, src, flag, extra)
|
||||||
|
char *dst;
|
||||||
|
const char *src;
|
||||||
|
int flag;
|
||||||
|
const char *extra;
|
||||||
|
{
|
||||||
|
char c;
|
||||||
|
char *start;
|
||||||
|
char *nextra;
|
||||||
|
|
||||||
|
_DIAGASSERT(dst != NULL);
|
||||||
|
_DIAGASSERT(src != NULL);
|
||||||
|
_DIAGASSERT(extra != NULL);
|
||||||
|
MAKEEXTRALIST(flag, nextra, extra);
|
||||||
|
if (flag & VIS_HTTPSTYLE) {
|
||||||
|
for (start = dst; (c = *src++) != '\0'; /* empty */)
|
||||||
|
HVIS(dst, c, flag, *src, nextra);
|
||||||
|
} else {
|
||||||
|
for (start = dst; (c = *src++) != '\0'; /* empty */)
|
||||||
|
SVIS(dst, c, flag, *src, nextra);
|
||||||
|
}
|
||||||
|
*dst = '\0';
|
||||||
|
return (dst - start);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int
|
||||||
|
strsvisx(dst, src, len, flag, extra)
|
||||||
|
char *dst;
|
||||||
|
const char *src;
|
||||||
|
size_t len;
|
||||||
|
int flag;
|
||||||
|
const char *extra;
|
||||||
|
{
|
||||||
|
char c;
|
||||||
|
char *start;
|
||||||
|
char *nextra;
|
||||||
|
|
||||||
|
_DIAGASSERT(dst != NULL);
|
||||||
|
_DIAGASSERT(src != NULL);
|
||||||
|
_DIAGASSERT(extra != NULL);
|
||||||
|
MAKEEXTRALIST(flag, nextra, extra);
|
||||||
|
|
||||||
|
if (flag & VIS_HTTPSTYLE) {
|
||||||
|
for (start = dst; len > 0; len--) {
|
||||||
|
c = *src++;
|
||||||
|
HVIS(dst, c, flag, len ? *src : '\0', nextra);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (start = dst; len > 0; len--) {
|
||||||
|
c = *src++;
|
||||||
|
SVIS(dst, c, flag, len ? *src : '\0', nextra);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*dst = '\0';
|
||||||
|
return (dst - start);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* vis - visually encode characters
|
||||||
|
*/
|
||||||
|
char *
|
||||||
|
vis(dst, c, flag, nextc)
|
||||||
|
char *dst;
|
||||||
|
int c, flag, nextc;
|
||||||
|
|
||||||
|
{
|
||||||
|
char *extra;
|
||||||
|
|
||||||
|
_DIAGASSERT(dst != NULL);
|
||||||
|
|
||||||
|
MAKEEXTRALIST(flag, extra, "");
|
||||||
|
if (flag & VIS_HTTPSTYLE)
|
||||||
|
HVIS(dst, c, flag, nextc, extra);
|
||||||
|
else
|
||||||
|
SVIS(dst, c, flag, nextc, extra);
|
||||||
|
*dst = '\0';
|
||||||
|
return (dst);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* strvis, strvisx - visually encode characters from src into dst
|
||||||
|
*
|
||||||
|
* Dst must be 4 times the size of src to account for possible
|
||||||
|
* expansion. The length of dst, not including the trailing NULL,
|
||||||
|
* is returned.
|
||||||
|
*
|
||||||
|
* Strvisx encodes exactly len bytes from src into dst.
|
||||||
|
* This is useful for encoding a block of data.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
strvis(dst, src, flag)
|
||||||
|
char *dst;
|
||||||
|
const char *src;
|
||||||
|
int flag;
|
||||||
|
{
|
||||||
|
char *extra;
|
||||||
|
|
||||||
|
MAKEEXTRALIST(flag, extra, "");
|
||||||
|
return (strsvis(dst, src, flag, extra));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int
|
||||||
|
strvisx(dst, src, len, flag)
|
||||||
|
char *dst;
|
||||||
|
const char *src;
|
||||||
|
size_t len;
|
||||||
|
int flag;
|
||||||
|
{
|
||||||
|
char *extra;
|
||||||
|
|
||||||
|
MAKEEXTRALIST(flag, extra, "");
|
||||||
|
return (strsvisx(dst, src, len, flag, extra));
|
||||||
|
}
|
||||||
|
#endif
|
96
cmd-line-utils/libedit/np/vis.h
Normal file
96
cmd-line-utils/libedit/np/vis.h
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
/* $NetBSD: vis.h,v 1.12 2002/03/23 17:39:05 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. All advertising materials mentioning features or use of this software
|
||||||
|
* must display the following acknowledgement:
|
||||||
|
* This product includes software developed by the University of
|
||||||
|
* California, Berkeley and its contributors.
|
||||||
|
* 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.h 8.1 (Berkeley) 6/2/93
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _VIS_H_
|
||||||
|
#define _VIS_H_
|
||||||
|
|
||||||
|
#ifdef HAVE_SYS_CDEFS_H
|
||||||
|
#include <sys/cdefs.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* to select alternate encoding format
|
||||||
|
*/
|
||||||
|
#define VIS_OCTAL 0x01 /* use octal \ddd format */
|
||||||
|
#define VIS_CSTYLE 0x02 /* use \[nrft0..] where appropiate */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* to alter set of characters encoded (default is to encode all
|
||||||
|
* non-graphic except space, tab, and newline).
|
||||||
|
*/
|
||||||
|
#define VIS_SP 0x04 /* also encode space */
|
||||||
|
#define VIS_TAB 0x08 /* also encode tab */
|
||||||
|
#define VIS_NL 0x10 /* also encode newline */
|
||||||
|
#define VIS_WHITE (VIS_SP | VIS_TAB | VIS_NL)
|
||||||
|
#define VIS_SAFE 0x20 /* only encode "unsafe" characters */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* other
|
||||||
|
*/
|
||||||
|
#define VIS_NOSLASH 0x40 /* inhibit printing '\' */
|
||||||
|
#define VIS_HTTPSTYLE 0x80 /* http-style escape % HEX HEX */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* unvis return codes
|
||||||
|
*/
|
||||||
|
#define UNVIS_VALID 1 /* character valid */
|
||||||
|
#define UNVIS_VALIDPUSH 2 /* character valid, push back passed char */
|
||||||
|
#define UNVIS_NOCHAR 3 /* valid sequence, no character produced */
|
||||||
|
#define UNVIS_SYNBAD -1 /* unrecognized escape sequence */
|
||||||
|
#define UNVIS_ERROR -2 /* decoder in unknown state (unrecoverable) */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* unvis flags
|
||||||
|
*/
|
||||||
|
#define UNVIS_END 1 /* no more characters */
|
||||||
|
|
||||||
|
char *vis(char *, int, int, int);
|
||||||
|
char *svis(char *, int, int, int, const char *);
|
||||||
|
int strvis(char *, const char *, int);
|
||||||
|
int strsvis(char *, const char *, int, const char *);
|
||||||
|
int strvisx(char *, const char *, size_t, int);
|
||||||
|
int strsvisx(char *, const char *, size_t, int, const char *);
|
||||||
|
int strunvis(char *, const char *);
|
||||||
|
int strunvisx(char *, const char *, int);
|
||||||
|
#ifdef __LIBC12_SOURCE__
|
||||||
|
int unvis(char *, int, int *, int);
|
||||||
|
int __unvis13(char *, int, int *, int);
|
||||||
|
#else
|
||||||
|
int unvis(char *, int, int *, int) __RENAME(__unvis13);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* !_VIS_H_ */
|
55
cmd-line-utils/libedit/read.h
Normal file
55
cmd-line-utils/libedit/read.h
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
/* $NetBSD: read.h,v 1.1 2001/09/27 19:29:50 christos Exp $ */
|
||||||
|
|
||||||
|
/*-
|
||||||
|
* Copyright (c) 2001 The NetBSD Foundation, Inc.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* This code is derived from software contributed to The NetBSD Foundation
|
||||||
|
* by Anthony Mallet.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* el.read.h: Character reading functions
|
||||||
|
*/
|
||||||
|
#ifndef _h_el_read
|
||||||
|
#define _h_el_read
|
||||||
|
|
||||||
|
typedef int (*el_rfunc_t)(EditLine *, char *);
|
||||||
|
|
||||||
|
typedef struct el_read_t {
|
||||||
|
el_rfunc_t read_char; /* Function to read a character */
|
||||||
|
} el_read_t;
|
||||||
|
|
||||||
|
protected int read_init(EditLine *);
|
||||||
|
protected int el_read_setfn(EditLine *, el_rfunc_t);
|
||||||
|
protected el_rfunc_t el_read_getfn(EditLine *);
|
||||||
|
|
||||||
|
#endif /* _h_el_read */
|
124
cmd-line-utils/libedit/term.h
Normal file
124
cmd-line-utils/libedit/term.h
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
/* $NetBSD: term.h,v 1.13 2002/03/18 16:01:00 christos Exp $ */
|
||||||
|
|
||||||
|
/*-
|
||||||
|
* Copyright (c) 1992, 1993
|
||||||
|
* The Regents of the University of California. All rights reserved.
|
||||||
|
*
|
||||||
|
* This code is derived from software contributed to Berkeley by
|
||||||
|
* Christos Zoulas of Cornell University.
|
||||||
|
*
|
||||||
|
* 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 University of
|
||||||
|
* California, Berkeley and its contributors.
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* @(#)term.h 8.1 (Berkeley) 6/4/93
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* el.term.h: Termcap header
|
||||||
|
*/
|
||||||
|
#ifndef _h_el_term
|
||||||
|
#define _h_el_term
|
||||||
|
|
||||||
|
#include "histedit.h"
|
||||||
|
|
||||||
|
typedef struct { /* Symbolic function key bindings */
|
||||||
|
const char *name; /* name of the key */
|
||||||
|
int key; /* Index in termcap table */
|
||||||
|
key_value_t fun; /* Function bound to it */
|
||||||
|
int type; /* Type of function */
|
||||||
|
} fkey_t;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
coord_t t_size; /* # lines and cols */
|
||||||
|
int t_flags;
|
||||||
|
#define TERM_CAN_INSERT 0x001 /* Has insert cap */
|
||||||
|
#define TERM_CAN_DELETE 0x002 /* Has delete cap */
|
||||||
|
#define TERM_CAN_CEOL 0x004 /* Has CEOL cap */
|
||||||
|
#define TERM_CAN_TAB 0x008 /* Can use tabs */
|
||||||
|
#define TERM_CAN_ME 0x010 /* Can turn all attrs. */
|
||||||
|
#define TERM_CAN_UP 0x020 /* Can move up */
|
||||||
|
#define TERM_HAS_META 0x040 /* Has a meta key */
|
||||||
|
#define TERM_HAS_AUTO_MARGINS 0x080 /* Has auto margins */
|
||||||
|
#define TERM_HAS_MAGIC_MARGINS 0x100 /* Has magic margins */
|
||||||
|
char *t_buf; /* Termcap buffer */
|
||||||
|
int t_loc; /* location used */
|
||||||
|
char **t_str; /* termcap strings */
|
||||||
|
int *t_val; /* termcap values */
|
||||||
|
char *t_cap; /* Termcap buffer */
|
||||||
|
fkey_t *t_fkey; /* Array of keys */
|
||||||
|
} el_term_t;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* fKey indexes
|
||||||
|
*/
|
||||||
|
#define A_K_DN 0
|
||||||
|
#define A_K_UP 1
|
||||||
|
#define A_K_LT 2
|
||||||
|
#define A_K_RT 3
|
||||||
|
#define A_K_HO 4
|
||||||
|
#define A_K_EN 5
|
||||||
|
#define A_K_NKEYS 6
|
||||||
|
|
||||||
|
protected void term_move_to_line(EditLine *, int);
|
||||||
|
protected void term_move_to_char(EditLine *, int);
|
||||||
|
protected void term_clear_EOL(EditLine *, int);
|
||||||
|
protected void term_overwrite(EditLine *, const char *, int);
|
||||||
|
protected void term_insertwrite(EditLine *, char *, int);
|
||||||
|
protected void term_deletechars(EditLine *, int);
|
||||||
|
protected void term_clear_screen(EditLine *);
|
||||||
|
protected void term_beep(EditLine *);
|
||||||
|
protected int term_change_size(EditLine *, int, int);
|
||||||
|
protected int term_get_size(EditLine *, int *, int *);
|
||||||
|
protected int term_init(EditLine *);
|
||||||
|
protected void term_bind_arrow(EditLine *);
|
||||||
|
protected void term_print_arrow(EditLine *, const char *);
|
||||||
|
protected int term_clear_arrow(EditLine *, const char *);
|
||||||
|
protected int term_set_arrow(EditLine *, const char *, key_value_t *, int);
|
||||||
|
protected void term_end(EditLine *);
|
||||||
|
protected int term_set(EditLine *, const char *);
|
||||||
|
protected int term_settc(EditLine *, int, const char **);
|
||||||
|
protected int term_telltc(EditLine *, int, const char **);
|
||||||
|
protected int term_echotc(EditLine *, int, const char **);
|
||||||
|
protected int term__putc(int);
|
||||||
|
protected void term__flush(void);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Easy access macros
|
||||||
|
*/
|
||||||
|
#define EL_FLAGS (el)->el_term.t_flags
|
||||||
|
|
||||||
|
#define EL_CAN_INSERT (EL_FLAGS & TERM_CAN_INSERT)
|
||||||
|
#define EL_CAN_DELETE (EL_FLAGS & TERM_CAN_DELETE)
|
||||||
|
#define EL_CAN_CEOL (EL_FLAGS & TERM_CAN_CEOL)
|
||||||
|
#define EL_CAN_TAB (EL_FLAGS & TERM_CAN_TAB)
|
||||||
|
#define EL_CAN_ME (EL_FLAGS & TERM_CAN_ME)
|
||||||
|
#define EL_HAS_META (EL_FLAGS & TERM_HAS_META)
|
||||||
|
#define EL_HAS_AUTO_MARGINS (EL_FLAGS & TERM_HAS_AUTO_MARGINS)
|
||||||
|
#define EL_HAS_MAGIC_MARGINS (EL_FLAGS & TERM_HAS_MAGIC_MARGINS)
|
||||||
|
|
||||||
|
#endif /* _h_el_term */
|
Reference in New Issue
Block a user