windows driver now operational, linux driver broken
This commit is contained in:
@@ -35,6 +35,12 @@ static void enable_tty_raw() {
|
||||
// Do nothing on windows.
|
||||
}
|
||||
|
||||
static std::string winsock_error_string(int errcode) {
|
||||
std::ostringstream oss;
|
||||
oss << "error " << errcode;
|
||||
return oss.str();
|
||||
}
|
||||
|
||||
static PADDRINFOA find_good_addr(PADDRINFOA addrinfo) {
|
||||
for (PADDRINFOA addr = addrinfo; addr != nullptr; addr = addr->ai_next) {
|
||||
if (addr->ai_family == AF_INET) {
|
||||
@@ -117,6 +123,7 @@ SOCKET listen_on_port(int port, std::string &err) {
|
||||
goto error;
|
||||
}
|
||||
set_nonblocking(sock);
|
||||
std::cerr << "listening socket is " << sock << std::endl;
|
||||
return sock;
|
||||
|
||||
error:
|
||||
@@ -128,6 +135,7 @@ static SOCKET accept_on_socket(SOCKET listen_socket, std::string &err) {
|
||||
SOCKET chsock = accept(listen_socket, nullptr, nullptr);
|
||||
if (chsock != INVALID_SOCKET) {
|
||||
set_nonblocking(chsock);
|
||||
std::cerr << "accepted socket is " << chsock << std::endl;
|
||||
return chsock;
|
||||
} else {
|
||||
int errcode = WSAGetLastError();
|
||||
@@ -182,13 +190,25 @@ static int socket_close(SOCKET socket) {
|
||||
static int socket_poll(PollVector &pollvec, int mstimeout, std::string &err) {
|
||||
int status = WSAPoll(&pollvec[0], pollvec.size(), mstimeout);
|
||||
if (status < 0) {
|
||||
WSAGetLastError();
|
||||
err = "poll failed";
|
||||
err = winsock_error_string(WSAGetLastError());
|
||||
return -1;
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
static void socket_init() {
|
||||
WSADATA data;
|
||||
int errcode = WSAStartup(2, &data);
|
||||
if (errcode != 0) {
|
||||
fprintf(stderr, "Winsock didn't initalize, error %d", errcode);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
static void socket_uninit() {
|
||||
// Nothing needed.
|
||||
}
|
||||
|
||||
static int console_write(const char *bytes, int nbytes) {
|
||||
if (nbytes == 0) return 0;
|
||||
HANDLE hstdout = GetStdHandle(STD_OUTPUT_HANDLE);
|
||||
|
||||
Reference in New Issue
Block a user