diff --git a/can.c b/can.c index bf7bb61..66c3f35 100644 --- a/can.c +++ b/can.c @@ -101,7 +101,6 @@ static int can_send_break(struct ios_ops *ios) static void can_exit(struct ios_ops *ios) { close(ios->fd); - free(ios); } struct ios_ops *can_init(char *interface_id) diff --git a/commands.c b/commands.c index 97c2dc7..a9e1fa2 100644 --- a/commands.c +++ b/commands.c @@ -149,7 +149,9 @@ static int cmd_break(int argc, char *argv[]) static int cmd_quit(int argc, char *argv[]) { + fflush(NULL); microcom_exit(0); + exit(0); return 0; } diff --git a/microcom.c b/microcom.c index a861ed4..0034bd6 100644 --- a/microcom.c +++ b/microcom.c @@ -67,12 +67,13 @@ void restore_terminal(void) void microcom_exit(int signal) { - printf("exiting\n"); + write(1, "exiting\n", 8); ios->exit(ios); tcsetattr(STDIN_FILENO, TCSANOW, &sots); - exit(0); + if (signal) + _Exit(0); } /******************************************************************** @@ -122,7 +123,7 @@ char escape_char = DEFAULT_ESCAPE_CHAR; int main(int argc, char *argv[]) { - struct sigaction sact; /* used to initialize the signal handler */ + struct sigaction sact = {0}; /* used to initialize the signal handler */ int opt, ret; char *hostport = NULL; int telnet = 0, can = 0; diff --git a/serial.c b/serial.c index 87c4353..2c06d04 100644 --- a/serial.c +++ b/serial.c @@ -225,7 +225,6 @@ static void serial_exit(struct ios_ops *ios) { tcsetattr(ios->fd, TCSANOW, &pots); close(ios->fd); - free(ios); } struct ios_ops * serial_init(char *device) diff --git a/telnet.c b/telnet.c index 5878a01..683578f 100644 --- a/telnet.c +++ b/telnet.c @@ -523,7 +523,6 @@ static int telnet_send_break(struct ios_ops *ios) static void telnet_exit(struct ios_ops *ios) { close(ios->fd); - free(ios); } struct ios_ops *telnet_init(char *hostport)