[test] [support] Use socket()+bind() to create unix sockets portably

Replace the mknod() call with socket() + bind() for creating unix
sockets.  The mknod() method is not portable and does not work
on NetBSD while binding the socket should work on all systems supporting
unix sockets.

Differential Revision: https://reviews.llvm.org/D55576

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@349305 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Michal Gorny 2018-12-16 15:12:06 +00:00
parent 36feb1b037
commit a443a0013d

View File

@ -1,5 +1,6 @@
import sys
import os
import socket
import stat
# Ensure that this is being run on a specific platform
@ -76,8 +77,13 @@ def create_fifo(source):
def create_socket(source):
mode = 0o600 | stat.S_IFSOCK
os.mknod(sanitize(source), mode)
sock = socket.socket(socket.AF_UNIX)
sanitized_source = sanitize(source)
# AF_UNIX sockets may have very limited path length, so split it
# into chdir call (with technically unlimited length) followed
# by bind() relative to the directory
os.chdir(os.path.dirname(sanitized_source))
sock.bind(os.path.basename(sanitized_source))
if __name__ == '__main__':