26 lines
559 B
C
26 lines
559 B
C
#include <errno.h>
|
|
#include <stdio.h>
|
|
#include <sys/socket.h>
|
|
#include <unistd.h>
|
|
#include "MagiDoor.h"
|
|
|
|
char md_getc() {
|
|
char c;
|
|
ssize_t ret;
|
|
while (1) {
|
|
if (mdcontrol.socket == -1) {
|
|
ret = read(STDIN_FILENO, &c, 1);
|
|
} else {
|
|
ret = recv(mdcontrol.socket, &c, 1, 0);
|
|
}
|
|
if (ret == 0) {
|
|
md_exit(0);
|
|
}
|
|
if (ret == -1 && (errno == EAGAIN || errno == EWOULDBLOCK)) {
|
|
sleep(1);
|
|
continue;
|
|
}
|
|
md_putchar(c);
|
|
return c;
|
|
}
|
|
} |