It is pointless discussing this further, what is in C23 is much better than it was before, and that will certainly be what is in POSIX after its next revision (whenever that happens).
If you want to keep implementing things the way you believe the standard requires, that's fine it is certainly permitted, and applications should be able to cope with that. Or if you wanted to move to the C23 version now, that's also fine, it really isn't a departure from what the standards currently require, except as it applies to the lifetime of the returned object, and for that the new text is really the only rational way of handling that. If you ever come across a real application which breaks because the pointer returned from gmtime() and the one from localtime() aren't identical, or because calling one of those functions fails to overwrite the result from an earlier call, please let us know. The chances of finding one are about the same as the chances of finding any of the mythical creatures that are sometimes thought to exist. kre ps: implementation tests, and similar things, are not real applications.
