--- /tmp/test.c.orig 2009-02-10 10:33:32.000000000 -0500 +++ /tmp/test.c 2009-02-10 10:55:09.000000000 -0500 @@ -5,6 +5,8 @@ #include #include #include +#include +#include #define SOCK_PATH "/tmp/sock " int main(int argc, char *argv[]) @@ -24,14 +26,14 @@ unlink(addrStruct.sun_path); // Bind socket to address in unix domain - len = strlen(addrStruct.sun_path) + sizeof(addrStruct.sun_family); + len = strlen(addrStruct.sun_path) + offsetof(struct sockaddr_un, sun_path); printf("%s\n", addrStruct.sun_path); if (bind(sock, (struct sockaddr *)&addrStruct, len)==-1) { printf("bind: %s\n", strerror(errno)); return EXIT_FAILURE; } - if (!unlink(addrStruct.sun_path)) printf("server: unlink: %s", strerror(errno)); + if (unlink(addrStruct.sun_path) != 0) printf("server: unlink: %s\n", strerror(errno)); close(sock); return EXIT_SUCCESS; }