diff --git a/src/sbbs3/sexyz.c b/src/sbbs3/sexyz.c index be43801332ebe6e6fe80445110f4bfd46d74c10f..c0e8079962a9bdbd1f50725b67e749bfd5c2e1d0 100644 --- a/src/sbbs3/sexyz.c +++ b/src/sbbs3/sexyz.c @@ -87,7 +87,7 @@ FILE* statfp; char revision[16]; -SOCKET sock; +SOCKET sock=INVALID_SOCKET; #define DCDHIGH socket_check(sock, NULL, NULL, 0) #define getcom(t) recv_byte(sock,t,mode) @@ -1092,14 +1092,14 @@ void receive_files(char** fname, int fnames, FILE* log) static const char* usage= "usage: sexyz <socket> [opts] <cmd> [file | path | +list]\n\n" - "where:\n\n" "socket = TCP socket descriptor\n" "opts = o to overwrite files when receiving\n" " d to disable dropped carrier detection\n" " a to sound alarm at start and stop of transfer\n" " p to pause after abnormal exit (error)\n" " l to disable local keyboard (Ctrl-C) checking\n" - "cmd = sx to send Xmodem rx to recv Xmodem\n" + "cmd = v to display detailed version information\n" + " sx to send Xmodem rx to recv Xmodem\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-1k rg to recv Ymodem-G\n" @@ -1119,6 +1119,9 @@ int main(int argc, char **argv) uint fnames=0; FILE* fp; FILE* log=NULL; + char compiler[32]; + + DESCRIBE_COMPILER(compiler); errfp=stderr; statfp=stdout; @@ -1131,25 +1134,21 @@ int main(int argc, char **argv) ,PLATFORM_DESC ); +#if 0 if(argc>1) { fprintf(statfp,"Command line: "); for(i=1;i<argc;i++) fprintf(statfp,"%s ",argv[i]); fprintf(statfp,"\n",statfp); } +#endif - if(argc<3) { - fprintf(errfp,usage); - exit(1); - } - - sock=atoi(argv[1]); - if(sock==INVALID_SOCKET || sock<1) { - fprintf(errfp,usage); - exit(1); - } + for(i=1;i<argc;i++) { - for(i=2;i<argc;i++) { + if(sock==INVALID_SOCKET && isdigit(argv[i][0])) { + sock=atoi(argv[i]); + continue; + } if(!(mode&(SEND|RECV))) { if(toupper(argv[i][0])=='S' || toupper(argv[i][0])=='R') { /* cmd */ @@ -1189,6 +1188,20 @@ int main(int argc, char **argv) } } + else if(toupper(argv[i][0])=='V') { + + 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(zmodem_source()),zmodem_ver(str)); +#ifdef _DEBUG + fprintf(statfp,"Debug\n"); +#endif + fprintf(statfp,"Compiled %s %.5s with %s\n",__DATE__,__TIME__,compiler); + fprintf(statfp,"%s\n",os_version(str)); + exit(1); + } + + else if(toupper(argv[i][0])=='O') mode|=OVERWRITE; @@ -1256,14 +1269,20 @@ int main(int argc, char **argv) } } + if(sock==INVALID_SOCKET || sock<1) { + fprintf(statfp,"!No socket descriptor specified\n\n"); + fprintf(errfp,usage); + exit(1); + } + if(!(mode&(SEND|RECV))) { - fprintf(statfp,"No command specified\n"); + fprintf(statfp,"!No command specified\n\n"); fprintf(statfp,usage); exit(1); } if(mode&(SEND|XMODEM) && !fnames) { /* Sending with any or recv w/Xmodem */ - fprintf(statfp,"Must specify filename or filelist\n"); + fprintf(statfp,"!Must specify filename or filelist\n\n"); fprintf(statfp,usage); exit(1); } diff --git a/src/sbbs3/xmodem.c b/src/sbbs3/xmodem.c index d03aacbe69e7b7540d61a390a041b05f4d5cd269..af1cb7f39fea2d80e1602075b3ca5635285f0df7 100644 --- a/src/sbbs3/xmodem.c +++ b/src/sbbs3/xmodem.c @@ -262,3 +262,15 @@ int xmodem_get_ack(xmodem_t* xm, int tries) return(0); } + +char* xmodem_ver(char *buf) +{ + sscanf("$Revision$", "%*s %s", buf); + + return(buf); +} + +const char* xmodem_source(void) +{ + return(__FILE__); +} \ No newline at end of file diff --git a/src/sbbs3/xmodem.h b/src/sbbs3/xmodem.h index 7a6d63e1e17a56e865ba4294db8dc271d8e83d89..d4e2b423fb41e31caf092727434fe54f7a6efdc1 100644 --- a/src/sbbs3/xmodem.h +++ b/src/sbbs3/xmodem.h @@ -52,10 +52,12 @@ typedef struct { } xmodem_t; -void xmodem_cancel(xmodem_t* xm); -int xmodem_get_ack(xmodem_t* xm, int tries); -void xmodem_put_nak(xmodem_t* xm); -int xmodem_get_block(xmodem_t* xm, uchar* block, uint block_size, BOOL hdrblock); -void xmodem_put_block(xmodem_t* xm, uchar* block, uint block_size, ulong block_num); +char* xmodem_ver(char *buf); +const char* xmodem_source(void); +void xmodem_cancel(xmodem_t* xm); +int xmodem_get_ack(xmodem_t* xm, int tries); +void xmodem_put_nak(xmodem_t* xm); +int xmodem_get_block(xmodem_t* xm, uchar* block, uint block_size, BOOL hdrblock); +void xmodem_put_block(xmodem_t* xm, uchar* block, uint block_size, ulong block_num); #endif /* Don't add anything after this line */ \ No newline at end of file diff --git a/src/sbbs3/zmodem.c b/src/sbbs3/zmodem.c index 61123d7e39e7896d3acb3894b1dda260a622f22c..a55039476cfcd6ae29a8f236a26be398d989dee1 100644 --- a/src/sbbs3/zmodem.c +++ b/src/sbbs3/zmodem.c @@ -1835,4 +1835,16 @@ zmodem_send_files(char** fname, int total_files) -#endif \ No newline at end of file +#endif + +char* zmodem_ver(char *buf) +{ + sscanf("$Revision$", "%*s %s", buf); + + return(buf); +} + +const char* zmodem_source(void) +{ + return(__FILE__); +} \ No newline at end of file diff --git a/src/sbbs3/zmodem.h b/src/sbbs3/zmodem.h index d21e8ed8021c9663c6fe9721857b3091fd3e3de5..34b61d4e8974ecf568aa7222559b80215a90ef2c 100644 --- a/src/sbbs3/zmodem.h +++ b/src/sbbs3/zmodem.h @@ -244,10 +244,12 @@ typedef struct { } zmodem_t; -int zmodem_get_zrinit(zmodem_t* zm); -void zmodem_parse_zrinit(zmodem_t* zm); -int zmodem_send_zfin(zmodem_t* zm); -int zmodem_send_file(zmodem_t* zm, char* name, FILE* fp); +char* zmodem_ver(char *buf); +const char* zmodem_source(void); +int zmodem_get_zrinit(zmodem_t* zm); +void zmodem_parse_zrinit(zmodem_t* zm); +int zmodem_send_zfin(zmodem_t* zm); +int zmodem_send_file(zmodem_t* zm, char* name, FILE* fp); #endif