9
static int read_exact(char *buffer, int len);
10
static int write_exact(char *buffer, int len);
17
_setmode(_fileno( stdin), _O_BINARY);
18
_setmode(_fileno( stdout), _O_BINARY);
20
msg_len = read_exact(msg, 100);
22
write_exact("Content-type: text/plain\r\n\r\n", 28);
23
write_exact(msg, msg_len);
30
static int read_exact(char *buffer, int len)
32
HANDLE standard_input = GetStdHandle(STD_INPUT_HANDLE);
37
if (!len) { /* Happens for "empty packages */
41
if (!ReadFile(standard_input, buffer + sofar,
42
len - sofar, &read_result, NULL)) {
46
return -2; /* Interrupted while reading? */
55
static int read_exact(char *buffer, int len) {
59
if ((i = read(0, buffer + got, len - got)) <= 0)
70
static int write_exact(char *buffer, int len)
72
HANDLE standard_output = GetStdHandle(STD_OUTPUT_HANDLE);
75
if (!WriteFile(standard_output, buffer, len, &written, NULL)) {
76
return -1; /* Broken Pipe */
78
if (written < ((unsigned) len)) {
79
/* This should not happen, standard output is not blocking? */
87
static int write_exact(char *buffer, int len) {
91
if ((i = write(1, buffer + wrote, len - wrote)) <= 0)
94
} while (wrote < len);