From 5f5d1604492ae15967f9d86f41fbeeedcae0ae2b Mon Sep 17 00:00:00 2001 From: Ralf Baechle Date: Thu, 8 Jul 1999 06:44:55 +0200 Subject: Import ax25-tools 0.0.3 from tarball --- user_call/ax25_call.c | 90 +++++++++++++++++++++++++-------------------------- 1 file changed, 45 insertions(+), 45 deletions(-) (limited to 'user_call/ax25_call.c') diff --git a/user_call/ax25_call.c b/user_call/ax25_call.c index 235feb9..cbedf63 100644 --- a/user_call/ax25_call.c +++ b/user_call/ax25_call.c @@ -1,3 +1,4 @@ +#include #include #include #include @@ -8,8 +9,8 @@ #include #include - #include + #ifdef HAVE_NETAX25_AX25_H #include #else @@ -24,27 +25,46 @@ #include #include -void alarm_handler(int sig) -{ -} +#include "user_io.h" -void err(char *message) +void alarm_handler(int sig) { - write(STDOUT_FILENO, message, strlen(message)); - exit(1); } int main(int argc, char **argv) { - char buffer[512], *addr; - fd_set read_fd; - int n, s, addrlen = sizeof(struct full_sockaddr_ax25); + char buffer[256], *addr; + int s, addrlen = sizeof(struct full_sockaddr_ax25); struct full_sockaddr_ax25 axbind, axconnect; + while ((s = getopt(argc, argv, "ci:o:")) != -1) { + switch (s) { + case 'c': + init_compress(); + compression = 1; + break; + case 'i': + paclen_in = atoi(optarg); + break; + case 'o': + paclen_out = atoi(optarg); + break; + case ':': + case '?': + err("ERROR: invalid option usage\r"); + return 1; + } + } + + if (paclen_in < 1 || paclen_out < 1) { + err("ERROR: invalid paclen\r"); + return 1; + } + /* * Arguments should be "ax25_call port mycall remcall [digis ...]" */ - if (argc < 4) { + if ((argc - optind) < 3) { strcpy(buffer, "ERROR: invalid number of parameters\r"); err(buffer); } @@ -60,22 +80,22 @@ int main(int argc, char **argv) axconnect.fsa_ax25.sax25_family = axbind.fsa_ax25.sax25_family = AF_AX25; axbind.fsa_ax25.sax25_ndigis = 1; - if ((addr = ax25_config_get_addr(argv[1])) == NULL) { - sprintf(buffer, "ERROR: invalid AX.25 port name - %s\r", argv[1]); + if ((addr = ax25_config_get_addr(argv[optind])) == NULL) { + sprintf(buffer, "ERROR: invalid AX.25 port name - %s\r", argv[optind]); err(buffer); } if (ax25_aton_entry(addr, axbind.fsa_digipeater[0].ax25_call) == -1) { - sprintf(buffer, "ERROR: invalid AX.25 port callsign - %s\r", argv[1]); + sprintf(buffer, "ERROR: invalid AX.25 port callsign - %s\r", argv[optind]); err(buffer); } - if (ax25_aton_entry(argv[2], axbind.fsa_ax25.sax25_call.ax25_call) == -1) { - sprintf(buffer, "ERROR: invalid callsign - %s\r", argv[2]); + if (ax25_aton_entry(argv[optind + 1], axbind.fsa_ax25.sax25_call.ax25_call) == -1) { + sprintf(buffer, "ERROR: invalid callsign - %s\r", argv[optind + 1]); err(buffer); } - if (ax25_aton_arglist(argv + 3, &axconnect) == -1) { + if (ax25_aton_arglist(argv + optind + 2, &axconnect) == -1) { sprintf(buffer, "ERROR: invalid destination callsign or digipeater\r"); err(buffer); } @@ -96,8 +116,8 @@ int main(int argc, char **argv) err(buffer); } - sprintf(buffer, "Connecting to %s ...\r", argv[3]); - write(STDOUT_FILENO, buffer, strlen(buffer)); + sprintf(buffer, "Connecting to %s ...\r", argv[optind + 2]); + user_write(STDOUT_FILENO, buffer, strlen(buffer)); /* * If no response in 30 seconds, go away. @@ -134,34 +154,14 @@ int main(int argc, char **argv) alarm(0); strcpy(buffer, "*** Connected\r"); - write(STDOUT_FILENO, buffer, strlen(buffer)); + user_write(STDOUT_FILENO, buffer, strlen(buffer)); - /* - * Loop until one end of the connection goes away. - */ - for (;;) { - FD_ZERO(&read_fd); - FD_SET(STDIN_FILENO, &read_fd); - FD_SET(s, &read_fd); - - select(s + 1, &read_fd, NULL, NULL, NULL); - - if (FD_ISSET(s, &read_fd)) { - if ((n = read(s, buffer, 512)) == -1) { - strcpy(buffer, "\r*** Disconnected\r"); - err(buffer); - } - write(STDOUT_FILENO, buffer, n); - } + select_loop(s); - if (FD_ISSET(STDIN_FILENO, &read_fd)) { - if ((n = read(STDIN_FILENO, buffer, 512)) == -1) { - close(s); - break; - } - write(s, buffer, n); - } - } + strcpy(buffer, "\r*** Disconnected\r"); + user_write(STDOUT_FILENO, buffer, strlen(buffer)); + + end_compress(); return 0; } -- cgit v1.2.3