Bug fixes
This commit is contained in:
parent
12f70e6ce9
commit
e13f7e0777
15
MD_Getc.c
15
MD_Getc.c
@ -6,8 +6,12 @@
|
|||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#endif
|
#endif
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#include <time.h>
|
||||||
#include "MagiDoor.h"
|
#include "MagiDoor.h"
|
||||||
|
|
||||||
|
extern time_t mdtimeout;
|
||||||
|
extern time_t mdtimeremaining;
|
||||||
|
|
||||||
char md_getc() {
|
char md_getc() {
|
||||||
char c;
|
char c;
|
||||||
ssize_t ret;
|
ssize_t ret;
|
||||||
@ -25,9 +29,18 @@ char md_getc() {
|
|||||||
#else
|
#else
|
||||||
if (ret == -1 && (errno == EAGAIN || errno == EWOULDBLOCK)) {
|
if (ret == -1 && (errno == EAGAIN || errno == EWOULDBLOCK)) {
|
||||||
#endif
|
#endif
|
||||||
usleep(1);
|
if (mdtimeout <= time(NULL)) {
|
||||||
|
md_printf("\r\nIdle timeout!\r\n");
|
||||||
|
md_exit(0);
|
||||||
|
}
|
||||||
|
if (mdtimeremaining <= time(NULL)) {
|
||||||
|
md_printf("\r\nOut of time!\r\n");
|
||||||
|
md_exit(0);
|
||||||
|
}
|
||||||
|
usleep(100);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
mdtimeout = time(NULL) + 900;
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
28
MD_Init.c
28
MD_Init.c
@ -7,6 +7,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#include <time.h>
|
||||||
#include "MagiDoor.h"
|
#include "MagiDoor.h"
|
||||||
|
|
||||||
|
|
||||||
@ -24,6 +25,9 @@ MDDoorControl_t mdcontrol;
|
|||||||
struct termios ttysave;
|
struct termios ttysave;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
time_t mdtimeout;
|
||||||
|
time_t mdtimeremaining;
|
||||||
|
|
||||||
static void md_cfg_read_line(char *buffer, int len, FILE *fptr) {
|
static void md_cfg_read_line(char *buffer, int len, FILE *fptr) {
|
||||||
fgets(buffer, len, fptr);
|
fgets(buffer, len, fptr);
|
||||||
if (buffer[strlen(buffer) - 1] == '\n') {
|
if (buffer[strlen(buffer) - 1] == '\n') {
|
||||||
@ -74,13 +78,7 @@ int read_door32(const char *dropfile) {
|
|||||||
md_cfg_read_line(buffer, 256, fptr); // node no
|
md_cfg_read_line(buffer, 256, fptr); // node no
|
||||||
|
|
||||||
mdcontrol.node = strtol(buffer, NULL, 10);
|
mdcontrol.node = strtol(buffer, NULL, 10);
|
||||||
#if defined(WIN32) || defined(_MSC_VER)
|
|
||||||
WSADATA wsa;
|
|
||||||
|
|
||||||
WSAStartup(WINSOCK_VERSION, &wsa);
|
|
||||||
#else
|
|
||||||
mdcontrol.socket = -1;
|
|
||||||
#endif
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -171,8 +169,6 @@ int read_doorsys(const char *dropfile) {
|
|||||||
|
|
||||||
fclose(fptr);
|
fclose(fptr);
|
||||||
|
|
||||||
mdcontrol.socket = -1;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -187,13 +183,15 @@ void md_exit(int exitcode) {
|
|||||||
exit(exitcode);
|
exit(exitcode);
|
||||||
}
|
}
|
||||||
|
|
||||||
int md_init(const char *dropfile) {
|
int md_init(const char *dropfile, int socket) {
|
||||||
char *filename = strrchr(dropfile, PATH_SEP);
|
char *filename = strrchr(dropfile, PATH_SEP);
|
||||||
#if !defined(WIN32) && !defined(_MSC_VER)
|
#if !defined(WIN32) && !defined(_MSC_VER)
|
||||||
struct termios ttystate;
|
struct termios ttystate;
|
||||||
#endif
|
#endif
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
mdcontrol.socket = socket;
|
||||||
|
|
||||||
if (filename == NULL) {
|
if (filename == NULL) {
|
||||||
filename = (char *)dropfile;
|
filename = (char *)dropfile;
|
||||||
} else {
|
} else {
|
||||||
@ -207,8 +205,7 @@ int md_init(const char *dropfile) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (mdcontrol.socket == -1) {
|
if (mdcontrol.socket == -1) {
|
||||||
#if defined(WIN32) || defined(_MSC_VER)
|
#if !defined(WIN32) && !defined(_MSC_VER)
|
||||||
#else
|
|
||||||
tcgetattr(STDIN_FILENO, &ttystate);
|
tcgetattr(STDIN_FILENO, &ttystate);
|
||||||
ttysave = ttystate;
|
ttysave = ttystate;
|
||||||
|
|
||||||
@ -220,7 +217,14 @@ int md_init(const char *dropfile) {
|
|||||||
|
|
||||||
tcsetattr(STDIN_FILENO, TCSANOW, &ttystate);
|
tcsetattr(STDIN_FILENO, TCSANOW, &ttystate);
|
||||||
#endif
|
#endif
|
||||||
}
|
} else {
|
||||||
|
#if defined(WIN32) || defined(_MSC_VER)
|
||||||
|
WSADATA wsa;
|
||||||
|
|
||||||
|
WSAStartup(WINSOCK_VERSION, &wsa);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
mdtimeremaining = time(NULL) + mdcontrol.user_timeleft;
|
||||||
|
mdtimeout = time(NULL) + 900;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,7 @@ typedef struct MDDoorControl {
|
|||||||
|
|
||||||
extern MDDoorControl_t mdcontrol;
|
extern MDDoorControl_t mdcontrol;
|
||||||
|
|
||||||
extern int md_init(const char *dropfile);
|
extern int md_init(const char *dropfile, int socket);
|
||||||
extern void md_exit(int exitcode);
|
extern void md_exit(int exitcode);
|
||||||
extern void md_putchar(char c);
|
extern void md_putchar(char c);
|
||||||
extern void md_printf(const char *fmt, ...);
|
extern void md_printf(const char *fmt, ...);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user