Skip to content
Snippets Groups Projects
Commit ce957838 authored by rswindell's avatar rswindell
Browse files

Overhauled command-line parsing a bit (options are prefixed with '-').

Added -telnet and -rlogin support (for use with Synchronet %p specifier).
parent 8551d3d3
No related branches found
No related tags found
No related merge requests found
...@@ -90,7 +90,6 @@ FILE* statfp; ...@@ -90,7 +90,6 @@ FILE* statfp;
char revision[16]; char revision[16];
SOCKET sock=INVALID_SOCKET; SOCKET sock=INVALID_SOCKET;
#define DCDHIGH socket_check(sock, NULL, NULL, 0)
#define getcom(t) recv_byte(sock,t,mode) #define getcom(t) recv_byte(sock,t,mode)
#define putcom(ch) send_byte(sock,ch,10,mode) #define putcom(ch) send_byte(sock,ch,10,mode)
...@@ -146,7 +145,7 @@ void bail(int code) ...@@ -146,7 +145,7 @@ void bail(int code)
fprintf(statfp," Flow restraint count: %u",flows); fprintf(statfp," Flow restraint count: %u",flows);
fprintf(statfp,"\n"); fprintf(statfp,"\n");
if(1 /*code && mode&PAUSE_ABEND */) { if(code && mode&PAUSE_ABEND) {
printf("Hit enter to continue..."); printf("Hit enter to continue...");
getchar(); getchar();
} }
...@@ -206,6 +205,7 @@ void send_telnet_cmd(SOCKET sock, uchar cmd, uchar opt) ...@@ -206,6 +205,7 @@ void send_telnet_cmd(SOCKET sock, uchar cmd, uchar opt)
uint recv_byte(SOCKET sock, int timeout, long mode) uint recv_byte(SOCKET sock, int timeout, long mode)
{ {
int i; int i;
long t;
uchar ch; uchar ch;
fd_set socket_set; fd_set socket_set;
time_t end; time_t end;
...@@ -218,7 +218,8 @@ uint recv_byte(SOCKET sock, int timeout, long mode) ...@@ -218,7 +218,8 @@ uint recv_byte(SOCKET sock, int timeout, long mode)
FD_ZERO(&socket_set); FD_ZERO(&socket_set);
FD_SET(sock,&socket_set); FD_SET(sock,&socket_set);
tv.tv_sec=end-time(NULL); if((t=end-time(NULL))<0) t=0;
tv.tv_sec=t;
tv.tv_usec=0; tv.tv_usec=0;
if(select(sock+1,&socket_set,NULL,NULL,&tv)<1) { if(select(sock+1,&socket_set,NULL,NULL,&tv)<1) {
...@@ -1071,20 +1072,25 @@ void receive_files(char** fname, int fnames, FILE* log) ...@@ -1071,20 +1072,25 @@ void receive_files(char** fname, int fnames, FILE* log)
} }
static const char* usage= static const char* usage=
"usage: sexyz <socket> [opts] <cmd> [file | path | +list]\n\n" "usage: sexyz <socket> [-opts] <cmd> [file | path | +list]\n"
"\n"
"socket = TCP socket descriptor\n" "socket = TCP socket descriptor\n"
"opts = o to overwrite files when receiving\n" "\n"
" d to disable dropped carrier detection\n" "opts = -o to overwrite files when receiving\n"
" a to sound alarm at start and stop of transfer\n" " -a to sound alarm at start and stop of transfer\n"
" ! to pause after abnormal exit (error)\n" " -! to pause after abnormal exit (error)\n"
" -telnet to enable Telnet mode\n"
" -rlogin to enable RLogin (pass-through) mode\n"
"\n"
"cmd = v to display detailed version information\n" "cmd = v to display detailed version information\n"
" sx to send Xmodem rx to recv Xmodem\n" " sx to send Xmodem rx to recv Xmodem\n"
" sX to send Xmodem-1k rc to recv Xmodem-CRC\n" " sX to send Xmodem-1k rc to recv Xmodem-CRC\n"
" sy to send Ymodem ry to recv Ymodem\n" " sy to send Ymodem ry to recv Ymodem\n"
" sY to send Ymodem-1k rg to recv Ymodem-G\n" " sY to send Ymodem-1k rg to recv Ymodem-G\n"
" sz to send Zmodem rz to recv Zmodem\n" " sz to send Zmodem rz to recv Zmodem\n"
"\n"
"file = filename to send or receive\n" "file = filename to send or receive\n"
"path = path to receive files into\n" "path = directory to receive files into\n"
"list = name of text file with list of filenames to send or receive\n"; "list = name of text file with list of filenames to send or receive\n";
/***************/ /***************/
...@@ -1166,9 +1172,10 @@ int main(int argc, char **argv) ...@@ -1166,9 +1172,10 @@ int main(int argc, char **argv)
fprintf(statfp,usage); fprintf(statfp,usage);
exit(1); exit(1);
} }
continue;
} }
else if(toupper(argv[i][0])=='V') { if(toupper(argv[i][0])=='V') {
fprintf(statfp,"%-8s %s\n",getfname(__FILE__) ,revision); fprintf(statfp,"%-8s %s\n",getfname(__FILE__) ,revision);
fprintf(statfp,"%-8s %s\n",getfname(xmodem_source()),xmodem_ver(str)); fprintf(statfp,"%-8s %s\n",getfname(xmodem_source()),xmodem_ver(str));
...@@ -1182,20 +1189,30 @@ int main(int argc, char **argv) ...@@ -1182,20 +1189,30 @@ int main(int argc, char **argv)
} }
else if(toupper(argv[i][0])=='O') if(argv[i][0]=='-') {
mode|=OVERWRITE; if(stricmp(argv[i]+1,"telnet")==0) {
mode|=TELNET;
else if(toupper(argv[i][0])=='D') continue;
mode|=IGNORE_DCD; }
if(stricmp(argv[i]+1,"rlogin")==0) {
else if(toupper(argv[i][0])=='A') mode&=~TELNET;
mode|=ALARM; continue;
}
else if(toupper(argv[i][0])=='!') switch(toupper(argv[i][1])) {
mode|=PAUSE_ABEND; case 'O':
mode|=OVERWRITE;
else if(argv[i][0]=='*') break;
mode|=DEBUG; case 'A':
mode|=ALARM;
break;
case '!':
mode|=PAUSE_ABEND;
break;
case 'D':
mode|=DEBUG;
break;
}
}
} }
else if(argv[i][0]=='+') { else if(argv[i][0]=='+') {
...@@ -1285,9 +1302,9 @@ int main(int argc, char **argv) ...@@ -1285,9 +1302,9 @@ int main(int argc, char **argv)
b=0; b=0;
setsockopt(sock,IPPROTO_TCP,TCP_NODELAY,(char*)&b,sizeof(b)); setsockopt(sock,IPPROTO_TCP,TCP_NODELAY,(char*)&b,sizeof(b));
if(!DCDHIGH) { if(!socket_check(sock, NULL, NULL, 0)) {
newline(); newline();
fprintf(statfp,"No carrier\n"); fprintf(statfp,"No socket connection\n");
bail(1); bail(1);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment