This causes cgit to serve error pages, which is undesirable. This reverts commit5229c9b232, reversing changes made tof2b211131f.
		
			
				
	
	
		
			72 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#include "test-tool.h"
 | 
						|
#include "git-compat-util.h"
 | 
						|
#include "strbuf.h"
 | 
						|
 | 
						|
#ifdef GIT_WINDOWS_NATIVE
 | 
						|
static const char *usage_string = "<pipe-filename>";
 | 
						|
 | 
						|
#define TEST_BUFSIZE (4096)
 | 
						|
 | 
						|
int cmd__windows_named_pipe(int argc, const char **argv)
 | 
						|
{
 | 
						|
	const char *filename;
 | 
						|
	struct strbuf pathname = STRBUF_INIT;
 | 
						|
	int err;
 | 
						|
	HANDLE h;
 | 
						|
	BOOL connected;
 | 
						|
	char buf[TEST_BUFSIZE + 1];
 | 
						|
 | 
						|
	if (argc < 2)
 | 
						|
		goto print_usage;
 | 
						|
	filename = argv[1];
 | 
						|
	if (strchr(filename, '/') || strchr(filename, '\\'))
 | 
						|
		goto print_usage;
 | 
						|
	strbuf_addf(&pathname, "//./pipe/%s", filename);
 | 
						|
 | 
						|
	/*
 | 
						|
	 * Create a single instance of the server side of the named pipe.
 | 
						|
	 * This will allow exactly one client instance to connect to it.
 | 
						|
	 */
 | 
						|
	h = CreateNamedPipeA(
 | 
						|
		pathname.buf,
 | 
						|
		PIPE_ACCESS_INBOUND | FILE_FLAG_FIRST_PIPE_INSTANCE,
 | 
						|
		PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT,
 | 
						|
		PIPE_UNLIMITED_INSTANCES,
 | 
						|
		TEST_BUFSIZE, TEST_BUFSIZE, 0, NULL);
 | 
						|
	if (h == INVALID_HANDLE_VALUE) {
 | 
						|
		err = err_win_to_posix(GetLastError());
 | 
						|
		fprintf(stderr, "CreateNamedPipe failed: %s\n",
 | 
						|
			strerror(err));
 | 
						|
		return err;
 | 
						|
	}
 | 
						|
 | 
						|
	connected = ConnectNamedPipe(h, NULL)
 | 
						|
		? TRUE
 | 
						|
		: (GetLastError() == ERROR_PIPE_CONNECTED);
 | 
						|
	if (!connected) {
 | 
						|
		err = err_win_to_posix(GetLastError());
 | 
						|
		fprintf(stderr, "ConnectNamedPipe failed: %s\n",
 | 
						|
			strerror(err));
 | 
						|
		CloseHandle(h);
 | 
						|
		return err;
 | 
						|
	}
 | 
						|
 | 
						|
	while (1) {
 | 
						|
		DWORD nbr;
 | 
						|
		BOOL success = ReadFile(h, buf, TEST_BUFSIZE, &nbr, NULL);
 | 
						|
		if (!success || nbr == 0)
 | 
						|
			break;
 | 
						|
		buf[nbr] = 0;
 | 
						|
 | 
						|
		write(1, buf, nbr);
 | 
						|
	}
 | 
						|
 | 
						|
	DisconnectNamedPipe(h);
 | 
						|
	CloseHandle(h);
 | 
						|
	return 0;
 | 
						|
 | 
						|
print_usage:
 | 
						|
	fprintf(stderr, "usage: %s %s\n", argv[0], usage_string);
 | 
						|
	return 1;
 | 
						|
}
 | 
						|
#endif
 |