Peter Eisentraut <peter.eisentr...@enterprisedb.com> writes: > On 19.04.22 16:21, Tom Lane wrote: >> * In the other direction, decide that the PG_BINARY_X macros are >> offering no benefit at all and just rip 'em out, writing "rb" and >> so on in their place. POSIX specifies that the character "b" has >> no effect on Unix-oid systems, and it has said that for thirty years >> now, so we do not really need the platform dependency that presently >> exists in the macro definitions. The presence or absence of "b" >> would serve fine as an indicator of intent, and there would be one >> less PG-specific coding convention to remember.
> I can only imagine that there must have been some Unix systems that did > not understand the "binary" APIs required for Windows. (For example, > neither the Linux nor the macOS open(2) man page mentions O_BINARY.) > Otherwise, these macros don't make any sense, because then you could > just write the thing directly on all platforms. PG_BINARY is useful for open(). It's the PG_BINARY_R/W/A macros for fopen() that are redundant per POSIX. Possibly someone generalized inappropriately; or maybe long ago we supported some platform that rejected the "b" option? regards, tom lane