#include <getopt.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#define HTML_FILE \
"<!DOCTYPE html>" \
"<html>" \
"<body>" \
"<h1>Getting server updates</h1>" \
"<div id=\"result\"></div>" \
"<script>" \
"if(typeof(EventSource) !== \"undefined\") {" \
"var source = new EventSource(\"http://%.*s:%d/events\");" \
"source.onmessage = function(event) {" \
"document.getElementById(\"result\").innerHTML += event.data + \"<br>\";" \
"};" \
"} else {" \
"document.getElementById(\"result\").innerHTML = \"Sorry, your browser does not support server-sent events...\";" \
"}" \
"</script>" \
"</body>" \
"</html>"
static bool
{
uint16_t i;
if (flags & (SOL_FD_FLAGS_ERR | SOL_FD_FLAGS_HUP)) {
fprintf(stderr, "ERROR: Something wrong happened with file descriptor: %d\n", fd);
goto err;
}
if (flags & SOL_FD_FLAGS_IN) {
int err;
if (err < 0) {
fprintf(stderr, "ERROR: failed to read from stdin: %s\n",
goto err;
}
printf("no data on stdin, quitting.\n");
goto end;
}
if (!blob) {
fprintf(stderr, "Could not alloc the blob data\n");
goto err;
}
}
return true;
err:
end:
return false;
}
static void
{
}
static void
{
return;
if (isspace(slice.
data[slice.
len - 1]))
}
static int
{
int ret;
};
};
if (ret < 0)
return ret;
if (!sse)
return -1;
if (ret < 0) {
return ret;
}
return 0;
}
static int
{
int r;
};
return r;
}
static void
{
static const struct option opts[] = {
{ "port", required_argument, NULL, 'p' },
{ "help", no_argument, NULL, 'h' },
{ 0, 0, 0, 0 }
};
while ((c = getopt_long(argc, argv, "p:h", opts,
&opt_idx)) != -1) {
switch (c) {
case 'p':
break;
case 'h':
default:
fprintf(stderr,
"Usage:\n\t%s [-p <port >]\n\n"
"Then everything that is typed will be sent using SSE technique\n"
"Test it opening a browser in http//127.0.0.1:<port>\n",
argv[0]);
return;
}
}
fprintf(stderr, "ERROR: cannot set stdin to non-block.\n");
goto err;
}
SOL_FD_FLAGS_IN | SOL_FD_FLAGS_HUP | SOL_FD_FLAGS_ERR,
on_stdin, NULL);
fprintf(stderr, "ERROR: Failed to watch stdin\n");
goto err;
}
});
fprintf(stderr, "ERROR: Failed to create the server\n");
goto err;
}
fprintf(stderr, "ERROR: Failed to register the handler\n");
goto err;
}
fprintf(stderr, "ERROR: Failed to register the handler\n");
goto err;
}
printf("HTTP server at port %d.\n"
"Start typing to send data\n",
port);
return;
err:
}
static void
{
uint16_t i;
}