git/compat/nonblock.c
Jeff King 808e91956d mark unused parameters in trivial compat functions
When a platform feature isn't available or in use, we sometimes
conditionally compile empty or trivial functions to turn these into
noops. We need to annotate their parameters so that -Wunused-parameters
won't complain about them.

Note that there are many more of these in compat/mingw.h, but we'll
leave them for now, as there's some trickery required to get the UNUSED
macro available there.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2022-10-17 21:24:03 -07:00

50 lines
939 B
C

#include "git-compat-util.h"
#include "nonblock.h"
#ifdef O_NONBLOCK
int enable_pipe_nonblock(int fd)
{
int flags = fcntl(fd, F_GETFL);
if (flags < 0)
return -1;
flags |= O_NONBLOCK;
return fcntl(fd, F_SETFL, flags);
}
#elif defined(GIT_WINDOWS_NATIVE)
#include "win32.h"
int enable_pipe_nonblock(int fd)
{
HANDLE h = (HANDLE)_get_osfhandle(fd);
DWORD mode;
DWORD type = GetFileType(h);
if (type == FILE_TYPE_UNKNOWN && GetLastError() != NO_ERROR) {
errno = EBADF;
return -1;
}
if (type != FILE_TYPE_PIPE)
BUG("unsupported file type: %lu", type);
if (!GetNamedPipeHandleState(h, &mode, NULL, NULL, NULL, NULL, 0)) {
errno = err_win_to_posix(GetLastError());
return -1;
}
mode |= PIPE_NOWAIT;
if (!SetNamedPipeHandleState(h, &mode, NULL, NULL)) {
errno = err_win_to_posix(GetLastError());
return -1;
}
return 0;
}
#else
int enable_pipe_nonblock(int fd UNUSED)
{
errno = ENOSYS;
return -1;
}
#endif