vdprintf.c (559a218c9b257775fb249b67945fe4a05b7a6b9f) vdprintf.c (74f1007fcc838501c74a633792c3f01833bf65e1)
1/*-
2 * SPDX-License-Identifier: BSD-2-Clause
3 *
4 * Copyright (c) 2009 David Schultz <das@FreeBSD.org>
5 * All rights reserved.
6 *
7 * Copyright (c) 2011 The FreeBSD Foundation
8 *

--- 32 unchanged lines hidden (view full) ---

41#include "local.h"
42#include "xlocale_private.h"
43
44int
45vdprintf(int fd, const char * __restrict fmt, va_list ap)
46{
47 FILE f = FAKE_FILE;
48 unsigned char buf[BUFSIZ];
1/*-
2 * SPDX-License-Identifier: BSD-2-Clause
3 *
4 * Copyright (c) 2009 David Schultz <das@FreeBSD.org>
5 * All rights reserved.
6 *
7 * Copyright (c) 2011 The FreeBSD Foundation
8 *

--- 32 unchanged lines hidden (view full) ---

41#include "local.h"
42#include "xlocale_private.h"
43
44int
45vdprintf(int fd, const char * __restrict fmt, va_list ap)
46{
47 FILE f = FAKE_FILE;
48 unsigned char buf[BUFSIZ];
49 int serrno = errno;
49 int ret;
50
51 if (fd > SHRT_MAX) {
52 errno = EMFILE;
53 return (EOF);
54 }
55
56 f._p = buf;
57 f._w = sizeof(buf);
58 f._flags = __SWR;
59 f._file = fd;
60 f._cookie = &f;
61 f._write = __swrite;
62 f._bf._base = buf;
63 f._bf._size = sizeof(buf);
64
50 int ret;
51
52 if (fd > SHRT_MAX) {
53 errno = EMFILE;
54 return (EOF);
55 }
56
57 f._p = buf;
58 f._w = sizeof(buf);
59 f._flags = __SWR;
60 f._file = fd;
61 f._cookie = &f;
62 f._write = __swrite;
63 f._bf._base = buf;
64 f._bf._size = sizeof(buf);
65
65 if ((ret = __vfprintf(&f, __get_locale(), fmt, ap)) < 0)
66 if ((ret = __vfprintf(&f, __get_locale(), serrno, fmt, ap)) < 0)
66 return (ret);
67
68 return (__fflush(&f) ? EOF : ret);
69}
67 return (ret);
68
69 return (__fflush(&f) ? EOF : ret);
70}