Cygwin: mmap: allow remapping part of an existing anonymous mapping
[newlib-cygwin.git] / newlib / libc / stdio / dprintf.c
blobae9f86d18ab433e414bdfa79caee35dc78173717
1 /* Copyright 2005, 2007 Shaun Jackman
2 * Permission to use, copy, modify, and distribute this software
3 * is freely granted, provided that this notice is preserved.
4 */
6 /*
7 FUNCTION
8 <<dprintf>>, <<vdprintf>>---print to a file descriptor
10 INDEX
11 dprintf
12 INDEX
13 _dprintf_r
14 INDEX
15 vdprintf
16 INDEX
17 _vdprintf_r
19 SYNOPSIS
20 #include <stdio.h>
21 #include <stdarg.h>
22 int dprintf(int <[fd]>, const char *restrict <[format]>, ...);
23 int vdprintf(int <[fd]>, const char *restrict <[format]>,
24 va_list <[ap]>);
25 int _dprintf_r(struct _reent *<[ptr]>, int <[fd]>,
26 const char *restrict <[format]>, ...);
27 int _vdprintf_r(struct _reent *<[ptr]>, int <[fd]>,
28 const char *restrict <[format]>, va_list <[ap]>);
30 DESCRIPTION
31 <<dprintf>> and <<vdprintf>> allow printing a format, similarly to
32 <<printf>>, but write to a file descriptor instead of to a <<FILE>>
33 stream.
35 The functions <<_dprintf_r>> and <<_vdprintf_r>> are simply
36 reentrant versions of the functions above.
38 RETURNS
39 The return value and errors are exactly as for <<write>>, except that
40 <<errno>> may also be set to <<ENOMEM>> if the heap is exhausted.
42 PORTABILITY
43 This function is originally a GNU extension in glibc and is not portable.
45 Supporting OS subroutines required: <<sbrk>>, <<write>>.
48 #include <_ansi.h>
49 #include <reent.h>
50 #include <stdio.h>
51 #include <unistd.h>
52 #include <stdarg.h>
53 #include "local.h"
55 int
56 _dprintf_r (struct _reent *ptr,
57 int fd,
58 const char *__restrict format, ...)
60 va_list ap;
61 int n;
62 _REENT_SMALL_CHECK_INIT (ptr);
63 va_start (ap, format);
64 n = _vdprintf_r (ptr, fd, format, ap);
65 va_end (ap);
66 return n;
69 #ifdef _NANO_FORMATTED_IO
70 int
71 _diprintf_r (struct _reent *, int, const char *, ...)
72 _ATTRIBUTE ((__alias__("_dprintf_r")));
73 #endif
75 #ifndef _REENT_ONLY
77 int
78 dprintf (int fd,
79 const char *__restrict format, ...)
81 va_list ap;
82 int n;
83 struct _reent *ptr = _REENT;
85 _REENT_SMALL_CHECK_INIT (ptr);
86 va_start (ap, format);
87 n = _vdprintf_r (ptr, fd, format, ap);
88 va_end (ap);
89 return n;
92 #ifdef _NANO_FORMATTED_IO
93 int
94 diprintf (int, const char *, ...)
95 _ATTRIBUTE ((__alias__("dprintf")));
96 #endif
97 #endif /* ! _REENT_ONLY */