Merge pull request #157 from pete4abw/Fix_imply_lrz_ext

BUGFIX: lrzip -d, -t should allow a file with or without an lrz extension and add if necessary
This commit is contained in:
Con Kolivas 2020-05-29 07:16:17 +10:00 committed by GitHub
commit 1cfcd57fcf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 10 deletions

13
lrzip.c
View file

@ -693,26 +693,27 @@ bool decompress_file(rzip_control *control)
if (!STDIN && !IS_FROM_FILE) {
struct stat fdin_stat;
stat(control->infile, &fdin_stat);
if (!S_ISREG(fdin_stat.st_mode) && (tmp = strrchr(control->infile, '.')) &&
strcmp(tmp,control->suffix)) {
/* make sure infile has an extension. If not, add it
* because manipulations may be made to input filename, set local ptr
*/
tmp = strrchr(control->infile, '.');
if (strcmp(tmp,control->suffix)) {
infilecopy = alloca(strlen(control->infile) + strlen(control->suffix) + 1);
strcpy(infilecopy, control->infile);
strcat(infilecopy, control->suffix);
} else
infilecopy = strdupa(control->infile);
stat(infilecopy, &fdin_stat);
if (!S_ISREG(fdin_stat.st_mode))
failure("lrzip only works on regular FILES\n");
/* regardless, infilecopy has the input filename */
}
if (!STDOUT && !TEST_ONLY) {
/* if output name already set, use it */
if (control->outname) {
if (control->outname)
control->outfile = strdup(control->outname);
} else {
else {
/* default output name from infilecopy
* test if outdir specified. If so, strip path from filename of
* infilecopy, then remove suffix.

3
main.c
View file

@ -594,7 +594,8 @@ int main(int argc, char *argv[])
infile = argv[i];
else if (!(i == 0 && STDIN))
break;
if (infile) {
if (infile && !(DECOMPRESS || TEST_ONLY)) {
/* check that input file exists, unless Decompressing or Test */
if ((strcmp(infile, "-") == 0))
control->flags |= FLAG_STDIN;
else {