Re: fdprintf() Anyone?
Brian Inglis <[email protected]> Fri, 12 Dec 2025 03:05:26 -0700
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Organization | Systematic Software |
| Message-ID | <[email protected]> |
For a quick check on most newlib functions, search Cygwin compatibility pages:
https://cygwin.org/cygwin-api/compatibility.html
bearing in mind that Cygwin may have its own variants supporting hosted features
like multiple character sets, IPC, languages, locales, time zones, and similar.
On 2025-12-11 17:38, Joel Sherrill wrote:
> 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 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 <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.
--
Take care. Thanks, Brian Inglis Calgary, Alberta, Canada
La perfection est atteinte Perfection is achieved
non pas lorsqu'il n'y a plus rien à ajouter not when there is no more to add
mais lorsqu'il n'y a plus rien à retrancher but when there is no more to cut
-- Antoine de Saint-Exupéry