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>
		
			
				
	
	
		
			51 lines
		
	
	
		
			939 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			51 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
 |