-+#include <sys/un.h>
-+#endif
-+
- #ifdef HAVE_STRING_H
- #include <string.h>
- #endif
---- orig/syscall.c 2004-02-18 22:33:21
-+++ syscall.c 2004-06-18 17:38:35
-@@ -76,6 +76,29 @@ int do_mknod(char *pathname, mode_t mode
- {
- if (dry_run) return 0;
- RETURN_ERROR_IF_RO_OR_LO;
-+# if HAVE_MKFIFO
-+ if (S_ISFIFO(mode))
-+ return mkfifo(pathname, mode);
-+# endif
-+# if HAVE_SYS_UN_H
-+ if (S_ISSOCK(mode)) {
-+ int sock;
-+ struct sockaddr_un saddr;
-+ int len = strlen(pathname) + 1; /* include null */
-+
-+ saddr.sun_family = AF_UNIX;
-+ strncpy(saddr.sun_path, pathname, sizeof saddr.sun_path);
-+ saddr.sun_len = len > sizeof saddr.sun_path ? sizeof saddr.sun_path: len;
-+
-+ if ((sock = socket(PF_UNIX, SOCK_STREAM, 0)) < 0)
-+ return -1;
-+ unlink(pathname);
-+ if ((bind(sock, (struct sockaddr*)&saddr, sizeof saddr)) < 0)
-+ return -1;
-+ close(sock);
-+ return do_chmod(pathname, mode);
-+ }
-+# endif
- return mknod(pathname, mode, dev);
- }