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