freebsd-dev/include
Poul-Henning Kamp 75067f4f70 Add an extensible version of our *printf(3) implementation to libc
on probationary terms:  it may go away again if it transpires it is
a bad idea.

This extensible printf version will only be used if either
    environment variable USE_XPRINTF is defined
or
    one of the extension functions are called.
or
    the global variable __use_xprintf is set greater than zero.

In all other cases our traditional printf implementation will
be used.

The extensible version is slower than the default printf, mostly
because less opportunity for combining I/O operation exists when
faced with extensions.  The default printf on the other hand
is a bad case of spaghetti code.

The extension API has a GLIBC compatible part and a FreeBSD version
of same.  The FreeBSD version exists because the GLIBC version may
run afoul of our FILE * locking in multithreaded programs and it
even further eliminate the opportunities for combining I/O operations.

Include three demo extensions which can be enabled if desired: time
(%T), hexdump (%H) and strvis (%V).

%T can format time_t (%T), struct timeval (%lT) and struct timespec (%llT)
   in one of two human readable duration formats:
	"%.3llT" -> "20349.245"
	"%#.3llT" -> "5h39m9.245"

%H will hexdump a sequence of bytes and takes a pointer and a length
   argument.  The width specifies number of bytes per line.
	"%4H" -> "65 72 20 65"
	"%+4H" -> "0000 65 72 20 65"
	"%#4H" -> "65 72 20 65  |er e|"
	"%+#4H" -> "0000 65 72 20 65  |er e|"

%V will dump a string in strvis format.
	"%V" -> "Hello\tWor\377ld"	(C-style)
	"%0V" -> "Hello\011Wor\377ld"	(octal)
	"%+V" -> "Hello%09Wor%FFld"	(http-style)

Tests, comments, bugreports etc are most welcome.
2005-12-16 18:56:39 +00:00
..
arpa Start the dreaded NOFOO -> NO_FOO conversion. 2004-12-21 08:47:35 +00:00
protocols Start the dreaded NOFOO -> NO_FOO conversion. 2004-12-21 08:47:35 +00:00
rpc Change the definition of NULL on ia64 (for LP64 compilations) from 2003-12-07 21:10:06 +00:00
rpcsvc Fix ypwhich -m. This should be MFC'ed back at least as far as RELENG_5. 2005-12-06 02:01:06 +00:00
_ctype.h Let GCC know that ___runetype(), ___tolower() and ___toupper() are pure 2004-08-21 07:00:40 +00:00
a.out.h Adjust the system endian and a.out headers to be more MI and cross-building 2004-06-22 17:05:39 +00:00
ar.h
assert.h Breath deep and take __P out of the system include files. 2002-03-23 17:24:55 +00:00
bitstring.h Finish the repocopy of bitstring.h to sys so it can be used 2003-06-13 19:40:13 +00:00
complex.h Stop defining '_Complex' in a C99 environment, it is supposed to be a keyword. 2004-08-14 18:03:21 +00:00
cpio.h Implement the POSIX.1-2001 (XSI) header, <cpio.h>. 2002-08-01 07:18:38 +00:00
ctype.h Move some internal macros and inlines from ctype.h to a new file, _ctype.h, 2004-08-12 09:33:47 +00:00
db.h Fixed some style bugs in the removal of __P(()). Some function parameter 2002-03-26 01:35:05 +00:00
dirent.h Change the definition of NULL on ia64 (for LP64 compilations) from 2003-12-07 21:10:06 +00:00
dlfcn.h Implement dlinfo() function. 2003-02-13 17:47:44 +00:00
elf-hints.h
elf.h This header is for Solaris compatibility only (according to David 2002-07-04 11:05:39 +00:00
err.h o Merge <machine/ansi.h> and <machine/types.h> into a new header 2002-08-21 16:20:02 +00:00
fmtmsg.h Fix some style bugs. 2002-08-05 16:37:05 +00:00
fnmatch.h Now I understand what Bruce was getting at - -1 can be parsed as two 2003-12-18 10:41:39 +00:00
fstab.h - Add setfstab() and getfstab(). 2003-04-07 12:55:00 +00:00
fts.h Introduce new field 'fts_bignum' which is 64bit long and will allow to 2005-01-07 00:06:20 +00:00
ftw.h Replace the current implementations of ftw() and nftw() with the OpenBSD 2004-08-24 13:00:55 +00:00
getopt.h Add getopt_long_only() 2004-02-24 08:09:20 +00:00
glob.h Update glob(3) to add all the POSIX required options, specifically: 2002-07-17 04:58:09 +00:00
grp.h = Implement thread-safe versions of the getpwent(3) and getgrent(3) 2003-04-17 14:15:26 +00:00
hesiod.h Breath deep and take __P out of the system include files. 2002-03-23 17:24:55 +00:00
histedit.h Sync libedit with recent NetBSD developments. Including improvements to the 2005-08-07 20:55:59 +00:00
ieeefp.h o Move the contents of <machine/floatingpoint.h> over to 2003-01-19 06:01:33 +00:00
ifaddrs.h Add the userland part of the NET_RT_IFMALIST sysctl MIB. A new function, 2003-11-14 18:53:22 +00:00
inttypes.h Add the remaining C99 wide character string to integer conversion functions. 2002-09-22 08:06:45 +00:00
iso646.h style(9): tab after #define. 2002-09-18 22:23:59 +00:00
kenv.h Fix prototype to match the code and documentation. 2005-11-24 07:20:26 +00:00
langinfo.h o Don't include <nl_types.h>, instead provide a typedef for nl_item. 2002-09-18 05:54:25 +00:00
libgen.h Breath deep and take __P out of the system include files. 2002-03-23 17:24:55 +00:00
limits.h Deprecate machine/limits.h in favor of new sys/limits.h. 2003-04-29 13:36:06 +00:00
link.h Initiate deorbit burn for the i386-only a.out related support. Moves are 2002-09-17 01:49:00 +00:00
locale.h Change the definition of NULL on ia64 (for LP64 compilations) from 2003-12-07 21:10:06 +00:00
Makefile Add an extensible version of our *printf(3) implementation to libc 2005-12-16 18:56:39 +00:00
malloc.h Traditionally work in the -traditional case. 2001-11-07 23:14:31 +00:00
memory.h
monetary.h Fix an error which prevented ssize_t from becoming defined. Add 2002-09-20 08:22:48 +00:00
mpool.h Breath deep and take __P out of the system include files. 2002-03-23 17:24:55 +00:00
mqueue.h Fix compiling for c++, include cdefs.h. 2005-11-30 07:26:36 +00:00
ndbm.h Breath deep and take __P out of the system include files. 2002-03-23 17:24:55 +00:00
netconfig.h Breath deep and take __P out of the system include files. 2002-03-23 17:24:55 +00:00
netdb.h Remove padding for ABI compatibility of ai_addrlen member 2005-07-22 18:21:28 +00:00
nl_types.h Bring in NetBSD's improvements and cleanups to NLS subsystem, making 2005-02-27 16:20:53 +00:00
nlist.h Use sys/nlist_aout.h for shared-with-kernel definitions. 2002-08-22 20:37:57 +00:00
nss.h It was reported that when using nss_ldap, getgrent(3) would behave 2004-01-09 13:43:49 +00:00
nsswitch.h = Implement name service switch modules (NSS modules). NSS modules 2003-04-17 14:14:22 +00:00
objformat.h
paths.h Define _PATH_MKSNAP_FFS and use it in dump(8) instead of assuming 2004-01-04 17:17:46 +00:00
printf.h Add an extensible version of our *printf(3) implementation to libc 2005-12-16 18:56:39 +00:00
proc_service.h Add support for XMM registers in GDB for x86 processors that support 2005-05-31 09:43:04 +00:00
pthread_np.h Add pthread_timedjoin_np prototype. 2005-10-04 07:23:56 +00:00
pthread.h Add prototype for following functions, plus tab fixes. 2005-10-24 05:53:54 +00:00
pwd.h Correct a typo in the definition of _PW_VERSION_MASK. This macro is 2005-01-26 17:26:54 +00:00
ranlib.h
readpassphrase.h Synch with OpenBSD (style). 2002-03-08 20:52:52 +00:00
regex.h Add a new error code, REG_ILLSEQ, to indicate that a regular expression 2004-07-12 06:07:26 +00:00
regexp.h Breath deep and take __P out of the system include files. 2002-03-23 17:24:55 +00:00
resolv.h Don't declare ___res_ext() twice. 2005-09-12 15:53:28 +00:00
runetype.h Prefix the names of members of _RuneLocale and its sub-structures 2004-06-23 07:01:44 +00:00
search.h - Remove the lsearch() and lfind() functions and their manpage from 2002-10-16 14:29:23 +00:00
setjmp.h Fix namespace issues by using visibility conditionals from 2002-10-05 05:48:50 +00:00
sgtty.h
signal.h Use __pid_t instead of pid_t for sigqueue as other functions. 2005-10-16 22:23:03 +00:00
stab.h
stdbool.h The Intel C/C++ compiler doesn't require a typedef for _Bool when compiling 2005-02-19 13:47:33 +00:00
stddef.h Change the definition of NULL on ia64 (for LP64 compilations) from 2003-12-07 21:10:06 +00:00
stdio.h Remove outdated comments. 2004-06-20 10:01:30 +00:00
stdlib.h Fix the prototypes for devname() and devname_r(), the first two argument 2005-09-12 15:58:15 +00:00
string.h Revert last revision, strmode() should be moved to <unistd.h> to be 2005-11-24 08:30:44 +00:00
stringlist.h Sync with NetBSD -- sl_add() now returns an int. 2003-01-19 01:16:01 +00:00
strings.h Add __pure and __pure2 where appropriate. 2004-07-23 07:13:35 +00:00
sysexits.h
tar.h
tgmath.h Add a workaround to recognise I/_Complex_I as complex arguments. Although 2004-09-03 23:44:09 +00:00
time.h Add POSIX timer interfaces. 2005-10-30 03:15:05 +00:00
timeconv.h o Merge <machine/ansi.h> and <machine/types.h> into a new header 2002-08-21 16:20:02 +00:00
timers.h
ttyent.h Breath deep and take __P out of the system include files. 2002-03-23 17:24:55 +00:00
ulimit.h No need to support UL_GETSIZE and UL_SETSIZE anymore; they are about to be 2003-01-08 01:18:13 +00:00
unistd.h barrier and spin_lock had already been implemented in libpthread and 2005-12-02 02:36:13 +00:00
utime.h Add time_t typedef for POSIX compatibility, move an include. 2002-08-24 00:11:52 +00:00
utmp.h ll_time and ut_time are int32_t on disk and have to remain that way 2001-10-27 20:40:54 +00:00
uuid.h Constify arguments. 2005-01-03 02:56:15 +00:00
varargs.h Add a new machine independent varargs.h and use it as a central place 2003-09-01 03:28:25 +00:00
vis.h Add a new flag to vis(3): VIS_GLOB which encodes the glob(3) magic 2003-10-30 10:40:49 +00:00
wchar.h Add an implementation of the semi-standard wcsdup() function, as found 2005-08-13 05:54:33 +00:00
wctype.h Include _ctype.h instead of ctype.h to avoid namespace pollution. 2004-08-12 10:29:14 +00:00
wordexp.h Fix typo: WRDE_DOOFS -> WRDE_DOOFFS. 2004-06-30 13:55:08 +00:00