I was just skimming the C99 standard, looking for something that I don't remember now, when I noticed that the pointer returned from the strerror()
function (section 7.12.6.2) isn't const-qualified, even though the standard says:
The strerror function returns a pointer to the string, the contents of which are
locale-specific. The array pointed to shall not be modified by the program,
but may be overwritten by a subsequent call to the strerror function.
Is there an obvious reason for this function to return a modifiable string instead of something like:
char const * const strerror(int errnum);
or at the very least
char const * strerror(int errnum);
Same as for the type of string literals: It was already like that in C89, describing a practice dating back to before the introduction of const
in the language. Changing it would make current valid program invalid.