xz: Detect when all data will be written to standard out earlier.
If the -c, --stdout argument is not used, then we can still detect when the data will be written to standard out if all of the provided filenames are "-" (denoting standard in) or if no filenames are provided.
This commit is contained in:
parent
2ade7246e7
commit
d4f4a4d040
|
@ -842,6 +842,27 @@ args_parse(args_info *args, int argc, char **argv)
|
||||||
args->arg_count = (unsigned int)(argc - optind);
|
args->arg_count = (unsigned int)(argc - optind);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If all of the filenames provided are "-" (more than one "-"
|
||||||
|
// could be specified) or no filenames are provided, then we are
|
||||||
|
// only going to be writing to standard out. However if --files or
|
||||||
|
// --files0 is used, then we will not be writing to standard out.
|
||||||
|
if (!opt_stdout && args->files_name == NULL) {
|
||||||
|
uint32_t i;
|
||||||
|
|
||||||
|
for (i = 0; i < args->arg_count; i++) {
|
||||||
|
const char *name = args->arg_names[i];
|
||||||
|
|
||||||
|
// getopt_long() will not give us an empty string
|
||||||
|
// as an argument name here so we don't need to
|
||||||
|
// check if name[0] is a NULL terminator.
|
||||||
|
if (name[0] != '-' && name[1] != '\0')
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set opt_stdout if the loop did not exit early.
|
||||||
|
opt_stdout = i == args->arg_count;
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue