As part of importing NetBSD's vis(3) APIs into FreeBSD I needed to add support for our VIS_GLOB flag. It's not an especially useful edition given the existence of strs*vis*() but it's small and reduces diffs so I'm submitting it for potential inclusion since I have to implement it to preserve ABI compatibility. This patch differs slightly from the one I'm planning to import into FreeBSD in that I've made VIS_GLOB 0x0100 there to avoid requiring compatibility symbols. -- Brooks Index: include/vis.h =================================================================== RCS file: /cvsroot/src/include/vis.h,v retrieving revision 1.19 diff -u -r1.19 vis.h --- include/vis.h 12 Mar 2011 19:52:45 -0000 1.19 +++ include/vis.h 14 Dec 2012 17:42:49 -0000 @@ -55,13 +55,14 @@ /* * other */ -#define VIS_NOSLASH 0x040 /* inhibit printing '\' */ -#define VIS_HTTP1808 0x080 /* http-style escape % hex hex */ -#define VIS_HTTPSTYLE 0x080 /* http-style escape % hex hex */ -#define VIS_MIMESTYLE 0x100 /* mime-style escape = HEX HEX */ -#define VIS_HTTP1866 0x200 /* http-style &#num; or &string; */ -#define VIS_NOESCAPE 0x400 /* don't decode `\' */ -#define _VIS_END 0x800 /* for unvis */ +#define VIS_NOSLASH 0x0040 /* inhibit printing '\' */ +#define VIS_HTTP1808 0x0080 /* http-style escape % hex hex */ +#define VIS_HTTPSTYLE 0x0080 /* http-style escape % hex hex */ +#define VIS_MIMESTYLE 0x0100 /* mime-style escape = HEX HEX */ +#define VIS_HTTP1866 0x0200 /* http-style &#num; or &string; */ +#define VIS_NOESCAPE 0x0400 /* don't decode `\' */ +#define _VIS_END 0x0800 /* for unvis */ +#define VIS_GLOB 0x1000 /* encode glob(3) magics */ /* * unvis return codes Index: lib/libc/gen/vis.3 =================================================================== RCS file: /cvsroot/src/lib/libc/gen/vis.3,v retrieving revision 1.27 diff -u -r1.27 vis.3 --- lib/libc/gen/vis.3 17 May 2011 07:10:39 -0000 1.27 +++ lib/libc/gen/vis.3 14 Dec 2012 17:42:50 -0000 @@ -29,7 +29,7 @@ .\" .\" @(#)vis.3 8.1 (Berkeley) 6/9/93 .\" -.Dd March 12, 2011 +.Dd December 14, 2012 .Dt VIS 3 .Os .Sh NAME @@ -219,6 +219,15 @@ The following flags alter this: .Bl -tag -width VIS_WHITEX ++.It Dv VIS_GLOB +Also encode magic characters +.Ql ( * , +.Ql \&? , +.Ql \&[ +and +.Ql # ) +recognized by +.Xr glob 3 . .It Dv VIS_SP Also encode space. .It Dv VIS_TAB @@ -408,6 +417,7 @@ .Sh SEE ALSO .Xr unvis 1 , .Xr vis 1 , +.Xr glob 3 , .Xr unvis 3 .Rs .%A T. Berners-Lee Index: lib/libc/gen/vis.c =================================================================== RCS file: /cvsroot/src/lib/libc/gen/vis.c,v retrieving revision 1.44 diff -u -r1.44 vis.c --- lib/libc/gen/vis.c 12 Mar 2011 19:52:48 -0000 1.44 +++ lib/libc/gen/vis.c 14 Dec 2012 17:42:50 -0000 @@ -89,7 +89,7 @@ #define xtoa(c) "0123456789abcdef"[c] #define XTOA(c) "0123456789ABCDEF"[c] -#define MAXEXTRAS 5 +#define MAXEXTRAS 9 #define MAKEEXTRALIST(flag, extra, orig_str) \ do { \ @@ -103,6 +103,12 @@ for (o = orig, e = extra; (*e++ = *o++) != '\0';) \ continue; \ e--; \ + if (flag & VIS_GLOB) { \ + *e++ = '*'; \ + *e++ = '?'; \ + *e++ = '['; \ + *e++ = '#'; \ + } \ if (flag & VIS_SP) *e++ = ' '; \ if (flag & VIS_TAB) *e++ = '\t'; \ if (flag & VIS_NL) *e++ = '\n'; \
Attachment:
pgpXgh5XPxCyq.pgp
Description: PGP signature