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} |