diff --git a/hacking/ChangeLog b/hacking/ChangeLog index 637506c..f6191b6 100644 --- a/hacking/ChangeLog +++ b/hacking/ChangeLog @@ -491,3 +491,4 @@ rzxcheck.1,rzxdump.1,rzxtool.1,scl2trd.1,snap2tzx.1,snapconv.1, tape2wav.1,tapeconv.1,tzxlist.1}: document --help and --version options (Sergio). +20150502 rzxdump.c,scl2trd.c: fix exit code when passed bad operands (Sergio). diff --git a/rzxdump.c b/rzxdump.c index 23fe7f1..d31fc31 100644 --- a/rzxdump.c +++ b/rzxdump.c @@ -164,7 +164,8 @@ int main( int argc, char **argv ) } for( i = 0; i < argc; i++ ) { - do_file( argv[i] ); + error = do_file( argv[i] ); + if( error ) return error; } return 0; diff --git a/scl2trd.c b/scl2trd.c index e91deeb..c775ddf 100644 --- a/scl2trd.c +++ b/scl2trd.c @@ -83,7 +83,7 @@ ui2lsb(unsigned char *mem, unsigned int value) mem[3] = ret.b.b3; } -static void +static int Scl2Trd(char *oldname, char *newname) { int TRD, SCL, i; @@ -143,7 +143,7 @@ Scl2Trd(char *oldname, char *newname) if ((TRD = open(newname, O_RDWR | O_BINARY)) == -1) { printf("Error - cannot open TRD disk image %s !\n", newname); - return; + return 1; } TRDh = malloc(4096); @@ -152,7 +152,7 @@ Scl2Trd(char *oldname, char *newname) printf("Error - cannot read TRD header from %s\n", newname); close(TRD); free(TRDh); - return; + return 1; } tmp = (char *) TRDh + 0x8E5; @@ -270,18 +270,20 @@ Scl2Trd(char *oldname, char *newname) Finish: lseek(TRD, 0L, SEEK_SET); bytes_written = write(TRD, TRDh, 4096); - if (bytes_written < 4096) { - printf("Error - writing header to TRD file %s\n", newname); - } close(TRD); free(TRDh); - return; + if (bytes_written < 4096) { + printf("Error - writing header to TRD file %s\n", newname); + return 1; + } + return 0; Abort: close(SCL); close(TRD); free(TRDh); free(tmpscl); + return 1; } static void @@ -391,7 +393,8 @@ main(int argc, char **argv) return error; } - Scl2Trd(options.sclfile, options.trdfile); + error = Scl2Trd( options.sclfile, options.trdfile ); + if( error ) return error; return 0; }