• Tom Lane's avatar
    Convert elog.c's useful_strerror() into a globally-used strerror wrapper. · 26e9d4d4
    Tom Lane authored
    elog.c has long had a private strerror wrapper that handles assorted
    possible failures or deficiencies of the platform's strerror.  On Windows,
    it also knows how to translate Winsock error codes, which the native
    strerror does not.  Move all this code into src/port/strerror.c and
    define strerror() as a macro that invokes it, so that both our frontend
    and backend code will have all of this behavior.
    
    I believe this constitutes an actual bug fix on Windows, since AFAICS
    our frontend code did not report Winsock error codes properly before this.
    However, the main point is to lay the groundwork for implementing %m
    in src/port/snprintf.c: the behavior we want %m to have is this one,
    not the native strerror's.
    
    Note that this throws away the prior use of src/port/strerror.c,
    which was to implement strerror() on platforms lacking it.  That's
    been dead code for nigh twenty years now, since strerror() was
    already required by C89.
    
    We should likewise cause strerror_r to use this behavior, but
    I'll tackle that separately.
    
    Patch by me, reviewed by Michael Paquier
    
    Discussion: https://postgr.es/m/2975.1526862605@sss.pgh.pa.us
    26e9d4d4
configure 550 KB