diff options
Diffstat (limited to 'newlib/libc/stdio/diprintf.c')
-rw-r--r-- | newlib/libc/stdio/diprintf.c | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/newlib/libc/stdio/diprintf.c b/newlib/libc/stdio/diprintf.c new file mode 100644 index 000000000..7882e46b2 --- /dev/null +++ b/newlib/libc/stdio/diprintf.c @@ -0,0 +1,75 @@ +/* Copyright (C) 2005, 2007 Shaun Jackman + * Permission to use, copy, modify, and distribute this software + * is freely granted, provided that this notice is preserved. + */ + +/* +FUNCTION +<<diprintf>>, <<vdiprintf>>---print to a file descriptor + +INDEX + diprintf +INDEX + vdiprintf + +ANSI_SYNOPSIS + #include <stdio.h> + #include <stdarg.h> + int diprintf(int <[fd]>, const char *<[format]>, ...); + int vdiprintf(int <[fd]>, const char *<[format]>, va_list <[ap]>); + int _diprintf_r(struct _reent *<[ptr]>, int <[fd]>, + const char *<[format]>, ...); + int _vidprintf_r(struct _reent *<[ptr]>, int <[fd]>, + const char *<[format]>, va_list <[ap]>); + +DESCRIPTION +<<diprintf>> and <<vdiprintf>> are similar to <<dprintf>> and <<vdprintf>>, +except that only integer format specifiers are processed. + +RETURNS +Similar to <<dprintf>> and <<vdprintf>>. + +PORTABILITY +This set of functions is an integer-only extension, and is not portable. + +Supporting OS subroutines required: <<sbrk>>, <<write>>. +*/ + +#include <_ansi.h> +#include <reent.h> +#include <stdio.h> +#include <unistd.h> +#include <stdarg.h> + +int +_DEFUN(_diprintf_r, (ptr, fd, format), + struct _reent *ptr _AND + int fd _AND + const char *format _DOTS) +{ + va_list ap; + int n; + + va_start (ap, format); + n = _vdiprintf_r (ptr, fd, format, ap); + va_end (ap); + return n; +} + +#ifndef _REENT_ONLY + +int +_DEFUN(diprintf, (fd, format), + int fd _AND + const char *format _DOTS) +{ + va_list ap; + int n; + + va_start (ap, format); + n = _vdiprintf_r (_REENT, fd, format, ap); + va_end (ap); + return n; +} + +#endif /* ! _REENT_ONLY */ |