Bruce Momjian wrote:
>   #define       UNIXSOCK_PATH(sun,port) \
>         (sprintf((sun).sun_path, "/tmp/.s.PGSQL.%d", (port)) + \
> !               + 1 + sizeof ((sun).sun_family))
> ! /*
> !  *            + 1 is for BSD-specific sizeof((sun).sun_len)
> !  *            We never actually set sun_len, and I can't think of a
> !  *            platform-safe way of doing it, but the code still works. bjm
> !  */
I don't think this is going to work.  On glibc2 you will end up with a
trailing '\0' in the socket name.  You won't be able to see it but I
think it will be there.  Is the following version portable?
#define    UNIXSOCK_PATH(sun,port) \
    (sprintf((sun).sun_path, "/tmp/.s.PGSQL.%d", (port)) + \
    ((char *)&(sun).sun_path[0] - (char *)&(sun)))
Phil