- (dtucker) [configure.ac defines.h openbsd-compat/vis.{c,h}] Sync current
versions from OpenBSD. ok djm@
diff --git a/ChangeLog b/ChangeLog
index c8e4979..ac839d6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+20051009
+ - (dtucker) [configure.ac defines.h openbsd-compat/vis.{c,h}] Sync current
+ versions from OpenBSD. ok djm@
+
20051008
- (dtucker) [configure.ac] Bug #1098: define $MAIL for HP-UX; report from
brian.smith at agilent com.
@@ -3096,4 +3100,4 @@
- (djm) Trim deprecated options from INSTALL. Mention UsePAM
- (djm) Fix quote handling in sftp; Patch from admorten AT umich.edu
-$Id: ChangeLog,v 1.3918 2005/10/08 06:21:19 djm Exp $
+$Id: ChangeLog,v 1.3919 2005/10/09 01:40:03 dtucker Exp $
diff --git a/configure.ac b/configure.ac
index ee06408..bd0352a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,4 +1,4 @@
-# $Id: configure.ac,v 1.300 2005/10/08 06:21:20 djm Exp $
+# $Id: configure.ac,v 1.301 2005/10/09 01:40:03 dtucker Exp $
#
# Copyright (c) 1999-2004 Damien Miller
#
@@ -418,6 +418,7 @@
;;
*-*-openbsd*)
AC_DEFINE(HAVE_ATTRIBUTE__SENTINEL__, 1, [OpenBSD's gcc has sentinel])
+ AC_DEFINE(HAVE_ATTRIBUTE__BOUNDED__, 1, [OpenBSD's gcc has bounded])
;;
*-*-solaris*)
if test "x$withval" != "xno" ; then
diff --git a/defines.h b/defines.h
index 43a6422..92ebd26 100644
--- a/defines.h
+++ b/defines.h
@@ -25,7 +25,7 @@
#ifndef _DEFINES_H
#define _DEFINES_H
-/* $Id: defines.h,v 1.128 2005/09/09 05:04:59 tim Exp $ */
+/* $Id: defines.h,v 1.129 2005/10/09 01:40:04 dtucker Exp $ */
/* Constants */
@@ -450,6 +450,10 @@
# define __sentinel__
#endif
+#if !defined(HAVE_ATTRIBUTE__BOUNDED__) && !defined(__bounded__)
+# define __bounded__(x, y, z)
+#endif
+
/* *-*-nto-qnx doesn't define this macro in the system headers */
#ifdef MISSING_HOWMANY
# define howmany(x,y) (((x)+((y)-1))/(y))
diff --git a/openbsd-compat/vis.c b/openbsd-compat/vis.c
index 1fb7a01..52d19ac 100644
--- a/openbsd-compat/vis.c
+++ b/openbsd-compat/vis.c
@@ -1,5 +1,6 @@
/* OPENBSD ORIGINAL: lib/libc/gen/vis.c */
+/* $OpenBSD: vis.c,v 1.19 2005/09/01 17:15:49 millert Exp $ */
/*-
* Copyright (c) 1989, 1993
* The Regents of the University of California. All rights reserved.
@@ -28,36 +29,32 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
+
#include "includes.h"
#if !defined(HAVE_STRNVIS)
-#if defined(LIBC_SCCS) && !defined(lint)
-static char rcsid[] = "$OpenBSD: vis.c,v 1.12 2003/06/02 20:18:35 millert Exp $";
-#endif /* LIBC_SCCS and not lint */
-
#include <ctype.h>
#include <string.h>
#include "vis.h"
#define isoctal(c) (((u_char)(c)) >= '0' && ((u_char)(c)) <= '7')
-#define isvisible(c) (((u_int)(c) <= UCHAR_MAX && isascii((u_char)(c)) && \
- isgraph((u_char)(c))) || \
- ((flag & VIS_SP) == 0 && (c) == ' ') || \
- ((flag & VIS_TAB) == 0 && (c) == '\t') || \
- ((flag & VIS_NL) == 0 && (c) == '\n') || \
- ((flag & VIS_SAFE) && ((c) == '\b' || \
- (c) == '\007' || (c) == '\r' || \
- isgraph((u_char)(c)))))
+#define isvisible(c) \
+ (((u_int)(c) <= UCHAR_MAX && isascii((u_char)(c)) && \
+ (((c) != '*' && (c) != '?' && (c) != '[' && (c) != '#') || \
+ (flag & VIS_GLOB) == 0) && isgraph((u_char)(c))) || \
+ ((flag & VIS_SP) == 0 && (c) == ' ') || \
+ ((flag & VIS_TAB) == 0 && (c) == '\t') || \
+ ((flag & VIS_NL) == 0 && (c) == '\n') || \
+ ((flag & VIS_SAFE) && ((c) == '\b' || \
+ (c) == '\007' || (c) == '\r' || \
+ isgraph((u_char)(c)))))
/*
* vis - visually encode characters
*/
char *
-vis(dst, c, flag, nextc)
- register char *dst;
- int c, nextc;
- register int flag;
+vis(char *dst, int c, int flag, int nextc)
{
if (isvisible(c)) {
*dst++ = c;
@@ -111,7 +108,8 @@
goto done;
}
}
- if (((c & 0177) == ' ') || (flag & VIS_OCTAL)) {
+ if (((c & 0177) == ' ') || (flag & VIS_OCTAL) ||
+ ((flag & VIS_GLOB) && (c == '*' || c == '?' || c == '[' || c == '#'))) {
*dst++ = '\\';
*dst++ = ((u_char)c >> 6 & 07) + '0';
*dst++ = ((u_char)c >> 3 & 07) + '0';
@@ -124,7 +122,7 @@
c &= 0177;
*dst++ = 'M';
}
- if (iscntrl(c)) {
+ if (iscntrl((u_char)c)) {
*dst++ = '^';
if (c == 0177)
*dst++ = '?';
@@ -153,12 +151,9 @@
* This is useful for encoding a block of data.
*/
int
-strvis(dst, src, flag)
- register char *dst;
- register const char *src;
- int flag;
+strvis(char *dst, const char *src, int flag)
{
- register char c;
+ char c;
char *start;
for (start = dst; (c = *src);)
@@ -168,16 +163,11 @@
}
int
-strnvis(dst, src, siz, flag)
- char *dst;
- const char *src;
- size_t siz;
- int flag;
+strnvis(char *dst, const char *src, size_t siz, int flag)
{
- char c;
char *start, *end;
char tbuf[5];
- int i;
+ int c, i;
i = 0;
for (start = dst, end = start + siz - 1; (c = *src) && dst < end; ) {
@@ -217,13 +207,9 @@
}
int
-strvisx(dst, src, len, flag)
- register char *dst;
- register const char *src;
- register size_t len;
- int flag;
+strvisx(char *dst, const char *src, size_t len, int flag)
{
- register char c;
+ char c;
char *start;
for (start = dst; len > 1; len--) {
diff --git a/openbsd-compat/vis.h b/openbsd-compat/vis.h
index 663355a..0588f68 100644
--- a/openbsd-compat/vis.h
+++ b/openbsd-compat/vis.h
@@ -1,6 +1,6 @@
/* OPENBSD ORIGINAL: include/vis.h */
-/* $OpenBSD: vis.h,v 1.6 2003/06/02 19:34:12 millert Exp $ */
+/* $OpenBSD: vis.h,v 1.11 2005/08/09 19:38:31 millert Exp $ */
/* $NetBSD: vis.h,v 1.4 1994/10/26 00:56:41 cgd Exp $ */
/*-
@@ -63,6 +63,7 @@
* other
*/
#define VIS_NOSLASH 0x40 /* inhibit printing '\' */
+#define VIS_GLOB 0x100 /* encode glob(3) magics and '#' */
/*
* unvis return codes
@@ -80,10 +81,14 @@
char *vis(char *, int, int, int);
int strvis(char *, const char *, int);
-int strnvis(char *, const char *, size_t, int);
-int strvisx(char *, const char *, size_t, int);
+int strnvis(char *, const char *, size_t, int)
+ __attribute__ ((__bounded__(__string__,1,3)));
+int strvisx(char *, const char *, size_t, int)
+ __attribute__ ((__bounded__(__string__,1,3)));
int strunvis(char *, const char *);
int unvis(char *, char, int *, int);
+ssize_t strnunvis(char *, const char *, size_t)
+ __attribute__ ((__bounded__(__string__,1,3)));
#endif /* !_VIS_H_ */