X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FApplications%2Ftelnet_src%2Fmain.c;h=56cffb4e1aba18732da0e67251709fa10e9e2547;hb=eff15be7c050cd7c614b52b997161558bfbc7ab9;hp=519978dbc7780c270f8616b5110a976cc86fa59c;hpb=9e8a8834d6fcc94e1cfc5cf8dfc9b81eff5a3baa;p=tpg%2Facess2.git diff --git a/Usermode/Applications/telnet_src/main.c b/Usermode/Applications/telnet_src/main.c index 519978db..56cffb4e 100644 --- a/Usermode/Applications/telnet_src/main.c +++ b/Usermode/Applications/telnet_src/main.c @@ -3,12 +3,11 @@ */ #include #include +#include #include #include #include -#define BUFSIZ 128 - // === PROTOTYPES === int main(int argc, char *argv[], char *envp[]); int OpenTCP(const char *AddressString, short PortNumber); @@ -20,9 +19,20 @@ int main(int argc, char *argv[], char *envp[]) int client_running = 1; int bUseReadline = !!argv[3]; // HACK: If third argument is present, use ReadLine tReadline *readline_info; + int port; + + if( argc < 2 || argc > 3 ) { + fprintf(stderr, "Usage: telnet []\n Port defaults to 23\n"); + return 0; + } + + if(argc == 3) + port = atoi(argv[2]); + else + port = 23; // Connect to the remove server - server_fd = OpenTCP( argv[1], atoi(argv[2]) ); + server_fd = OpenTCP( argv[1], port ); if( server_fd == -1 ) { fprintf(stderr, "Unable to create socket\n"); return -1; @@ -44,7 +54,7 @@ int main(int argc, char *argv[], char *envp[]) FD_SET(server_fd, &fds); FD_SET(server_fd, &err_fds); // Wait for data (no timeout) - rv = select(server_fd+1, &fds, NULL, &err_fds, NULL); + rv = _SysSelect(server_fd+1, &fds, NULL, &err_fds, NULL, 0); if( rv < 0 ) break; // Check for remote data avaliable @@ -53,8 +63,8 @@ int main(int argc, char *argv[], char *envp[]) // Read from server, and write to stdout do { - len = read(server_fd, BUFSIZ, buffer); - write(1, len, buffer); + len = _SysRead(server_fd, buffer, BUFSIZ); + _SysWrite(1, buffer, len); } while( len == BUFSIZ ); } @@ -67,17 +77,17 @@ int main(int argc, char *argv[], char *envp[]) char *line = Readline_NonBlock(readline_info); if( line ) { - write(server_fd, strlen(line), line); - write(server_fd, 1, "\n"); + _SysWrite(server_fd, line, strlen(line)); + _SysWrite(server_fd, "\n", 1); } } else { do { - len = read(0, BUFSIZ, buffer); - write(server_fd, len, buffer); - write(1, len, buffer); + len = _SysRead(0, buffer, BUFSIZ); + _SysWrite(server_fd, buffer, len); + _SysWrite(1, buffer, len); } while( len == BUFSIZ ); } } @@ -90,7 +100,7 @@ int main(int argc, char *argv[], char *envp[]) } } - close(server_fd); + _SysClose(server_fd); return 0; } @@ -100,7 +110,6 @@ int main(int argc, char *argv[], char *envp[]) int OpenTCP(const char *AddressString, short PortNumber) { int fd, addrType; - char *iface; uint8_t addrBuffer[16]; // Parse IP Address @@ -119,11 +128,11 @@ int OpenTCP(const char *AddressString, short PortNumber) } // Set remote port and address - ioctl(fd, 5, &PortNumber); - ioctl(fd, 6, addrBuffer); + _SysIOCtl(fd, 5, &PortNumber); + _SysIOCtl(fd, 6, addrBuffer); // Connect - if( ioctl(fd, 7, NULL) == 0 ) { + if( _SysIOCtl(fd, 7, NULL) == 0 ) { fprintf(stderr, "Unable to start connection\n"); return -1; }