Re: fdprintf() Anyone?
Joel Sherrill <[email protected]> Thu, 11 Dec 2025 18:38:23 -0600
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Message-ID | <CAF9ehCUfa-eteCWcmk8Jr_fPV_z=A=cio0f4=DjD9E00uTvTew@mail.gmail.com> |
Thank you for the quick response and pointing out the POSIX standard functions!!! I am honestly quite happy not to have to seriously add anything non-standard. Looking at the git log, these have been in newlib a LONG time. Thanks again. --joel On Thu, Dec 11, 2025 at 6:19 PM John Scott <[email protected]> wrote: > Joel Sherrill wrote: > > int fdprintf (int fd, const char *format,...) > > POSIX.1-2008 has already standardized a version of printf() for writing to > file descriptors, and it has the same prototype: it's called dprintf > (without the 'f' at the beginning). There is also a va_list variant named > vdprintf(). These are widely available and I think GNU folks drove their > specification. > > These are already included at > https://sourceware.org/git/?p=newlib-cygwin.git;a=blob;f=newlib/libc/stdio/dprintf.c > however I think the following text is no longer accurate: > > PORTABILITY > > This function is originally a GNU extension in glibc and is not portable. > > Post-standardization I think implementations picked this up without > hesitation. You probably just missed this; in fact, dprintf() returns the > same value as fdprintf() does to indicate success or error. I think the > NetBurner folks giving their function a different name was, at least in > hindsight, a botch. > > > But the user is using a system where they are in <fcntl.h>. > For compatibility with that particular application I'm sure you could make > fdprintf() an alias for dprintf(). If a user is wanting to use Newlib with > NetBurner such a shim might be welcome in a directory specific to that > class of systems. > > > Is there any interest in these eventually landing in newlib? > The equivalent standard functions are already in Newlib and my preference > (as someone who, to be frank, has never contributed to Newlib) is to do > nothing here. If your users are porting an application away, defining > '-Dfdprintf=dprintf' may be all they need to do. >