diff options
| author | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2019-06-11 18:15:10 +0200 | 
|---|---|---|
| committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2019-06-11 18:15:10 +0200 | 
| commit | 842c5ec8e5c05e0d9c245882f13ca0a6b19825f5 (patch) | |
| tree | d04f058efdc486bc25890b8f4d3dea6ea38c5764 /unpack | |
| parent | 8fa122a59f61878bafa43ea45d9ea988f3a70998 (diff) | |
cleanup: pull out common code path
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'unpack')
| -rw-r--r-- | unpack/options.c | 2 | ||||
| -rw-r--r-- | unpack/rdsquashfs.c | 20 | 
2 files changed, 8 insertions, 14 deletions
diff --git a/unpack/options.c b/unpack/options.c index ccfe7c8..84c17cf 100644 --- a/unpack/options.c +++ b/unpack/options.c @@ -124,6 +124,8 @@ void process_command_line(options_t *opt, int argc, char **argv)  			break;  		case 'd':  			opt->op = OP_DESCRIBE; +			free(opt->cmdpath); +			opt->cmdpath = NULL;  			break;  		case 'l':  			opt->op = OP_LS; diff --git a/unpack/rdsquashfs.c b/unpack/rdsquashfs.c index 27a0cf5..125a841 100644 --- a/unpack/rdsquashfs.c +++ b/unpack/rdsquashfs.c @@ -85,23 +85,21 @@ int main(int argc, char **argv)  	if (deserialize_fstree(&fs, &super, cmp, sqfsfd, opt.rdtree_flags))  		goto out_cmp; -	switch (opt.op) { -	case OP_LS: +	if (opt.cmdpath != NULL) {  		n = find_node(fs.root, opt.cmdpath);  		if (n == NULL) {  			perror(opt.cmdpath);  			goto out_fs;  		} +	} else { +		n = fs.root; +	} +	switch (opt.op) { +	case OP_LS:  		list_files(n);  		break;  	case OP_CAT: -		n = find_node(fs.root, opt.cmdpath); -		if (n == NULL) { -			perror(opt.cmdpath); -			goto out_fs; -		} -  		if (!S_ISREG(n->mode)) {  			fprintf(stderr, "/%s: not a regular file\n",  				opt.cmdpath); @@ -116,12 +114,6 @@ int main(int argc, char **argv)  			goto out_fs;  		break;  	case OP_UNPACK: -		n = find_node(fs.root, opt.cmdpath); -		if (n == NULL) { -			perror(opt.cmdpath); -			goto out_fs; -		} -  		data = data_reader_create(sqfsfd, &super, cmp);  		if (data == NULL)  			goto out_fs;  | 
