diff options
| author | B. Watson <yalhcru@gmail.com> | 2020-05-07 13:44:26 -0400 | 
|---|---|---|
| committer | B. Watson <yalhcru@gmail.com> | 2020-05-07 13:44:26 -0400 | 
| commit | 5f414352d6b1acafa8c1ac5f1452d2c7eb7876ad (patch) | |
| tree | 21ce9a369e1032a5fffebf0364d7b5ded61f35f2 /miragextract.c | |
| parent | 6da702b80b131da67e50b7ec5fafe9f2a6fba43b (diff) | |
| download | miragextract-5f414352d6b1acafa8c1ac5f1452d2c7eb7876ad.tar.gz | |
add -a and -d options
Diffstat (limited to 'miragextract.c')
| -rw-r--r-- | miragextract.c | 41 | 
1 files changed, 32 insertions, 9 deletions
| diff --git a/miragextract.c b/miragextract.c index 9d63476..6861aef 100644 --- a/miragextract.c +++ b/miragextract.c @@ -22,6 +22,9 @@ char *outfmt = "wav";  int want_track = 0; /* -1 = no tracks, 0 = all, 1-99 = just that one */  double quality = 0.7l;  int swap_bytes = 0; +int autoname = 0; +int want_data = 1; +int want_audio = 1;  void die(char *msg) {  	fprintf(stderr, "%s: %s\n", self, msg); @@ -65,29 +68,24 @@ void extract_track(int t, int extract) {  	switch(sector_type) {  		case MIRAGE_SECTOR_MODE1:  		case MIRAGE_SECTOR_MODE2_FORM1: -			// printf("Track %d is data, extracting\n", output_track_number);  			printf("data, ");  			ext = "iso"; +			if(!want_data) extract = 0;  			break;  		case MIRAGE_SECTOR_AUDIO: -			// printf("Track %d is audio, extracting\n", output_track_number);  			printf("audio, "); +			if(!want_audio) extract = 0;  			ext = outfmt;  			break;  		default: -			// printf("Track %d is unsupported type, dumping raw\n", output_track_number);  			printf("<unknown>, ");  			ext = "raw"; +			if(!want_data) extract = 0;  			break;  	}  	sector = mirage_track_get_sector(track, 0, 0, NULL); -	/* -	mirage_sector_get_data(sector, &buf, &len, NULL); -	printf("got %d bytes per sector\n", len); -	*/ -  	sprintf(outfile, "%s%02d.%s", outfilebase, output_track_number, ext);  	if(extract) { @@ -142,10 +140,22 @@ void extract_track(int t, int extract) {  	return;  } +void set_auto_name(void) { +	static char autoname[4096]; +	char *p; + +	strcpy(autoname, imagefile); +	if((p = strrchr(autoname, '.'))) { +		*p = '\0'; +	} + +	outfilebase = autoname; +} +  void usage(int exit_code) {  	fprintf(exit_code ? stderr : stdout,  			"miragextract v" VERSION " by B. Watson, WTFPL\n" -			"Usage: %s [-l] [-s] [-t track] [-b base] [-f fmt ] [-q quality ] image-file\n" +			"Usage: %s [-l] [-s] [-n] [-a] [-d] [-t track] [-b base] [-f fmt ] [-q quality ] image-file\n"  			"See man page for details\n", self);  	exit(exit_code);  } @@ -161,6 +171,14 @@ void parse_args(int argc, char **argv) {  				case 'l':  					want_track = -1;  					break; +				case 'a': +					want_audio = 1; +					want_data = 0; +					break; +				case 'd': +					want_audio = 0; +					want_data = 1; +					break;  				case 's':  					swap_bytes = 1;  					break; @@ -196,6 +214,9 @@ void parse_args(int argc, char **argv) {  					} else  						die("-t option requires track argument");  					break; +				case 'n': +					autoname = 1; +					break;  				default:  					die("unrecognized option");  					break; @@ -208,6 +229,8 @@ void parse_args(int argc, char **argv) {  	}  	if(!imagefile) die("missing image file argument"); + +	if(autoname) set_auto_name();  }  int main(int argc, char **argv) { | 
