https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108305
--- Comment #7 from Jonathan Wakely ---
I think we need to make __cpp_lib_ios_noreplace depend on some new macro that
is undefined by default, and defined manually in os_defines.h when we know it
works.
The won't work for musl though, as it
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108305
Jonathan Wakely changed:
What|Removed |Added
Ever confirmed|0 |1
Last reconfirmed|
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108305
--- Comment #5 from Andreas Schwab ---
Ignoring unknown fopen flags is traditional behavior which is still present
today, both in BSD and GNU. Only the first character is actually checked and
rejected if unknown.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108305
--- Comment #4 from Jonathan Wakely ---
My assumption was that targets that don't support exclusive mode for fopen
would fail in exactly that way, and so using std::ios::noreplace would be
"conservatively unsupported". That is, it would always
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108305
--- Comment #3 from Jonathan Wakely ---
But then wouldn't using "x" with fopen fail, return NULL, and set errno to
EINVAL?
It shouldn't just ignore the "x".
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108305
--- Comment #2 from Andrew Pinski ---
I suspect hpux does not implement a c11 fopen but only a c99 one ..
"x" was only added for c11 .
Hpux11.11 came out in 2009 after all.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108305
--- Comment #1 from Jonathan Wakely ---
That test expects fopen("noreplace", "wx") to fail if the file already exists.
Does this fail too?
#include
#include
#include
int main()
{
FILE* f = fopen("noreplace", "w");
assert(f != NULL);