bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: operations on FILE streams


From: Bruno Haible
Subject: Re: operations on FILE streams
Date: Fri, 13 Apr 2007 22:47:54 +0200
User-agent: KMail/1.5.4

Paul Eggert wrote:
> But the function names use leading __ in both Solaris and glibc, and I
> expect that if they are ever standardized they'll be standardized with
> the leading __.

I sincerely hope no standardization group would do such a mistake:

  - Standardizing functions starting with '__' would encourage users to
    adopt similar naming conventions (since users often use conventions
    prototyped by the OS vendors), leading to collisions between user namespace
    and compiler/libc namespace.

  - The function __fpurge has no return value. But the 'fpurge' function
    on Cygwin can fail. The Solaris people forgot to think about possible
    failures.

  - The function __flbf is only half-baken: it returns only part of the
    information provided by the 3rd argument to setvbuf. This function
    does not allow the user to distinguish unbuffered and block-buffered
    streams. A better function should return the 3rd argument unchanged.

  - The functions __freadable, __fwritable, __freading, __fwriting need to
    return 'bool' in gnulib, otherwise an assignment
       bool x = __freadable (fp);
    may assign an invalid integer (4 or such) to x, if '_Bool' is not a
    compiler builtin type.

> So for this particular case I suggest using names
> with leading __, at least in user code

I think gnulib should not provide functions starting with '__'. Remember
the '__setfpucw' and '__libc_wait' functions from glibc? glibc offered them,
people used them, and then glibc withdraw them and broke widespread programs.
And Ulrich Drepper said effectively: "The application programmers should not
have used these functions; it was obvious, since they start with __".

How can anyone expect users to understand that '__' symbols are reserved,
if glibc documents such functions?

Bruno





reply via email to

[Prev in Thread] Current Thread [Next in Thread]