Skip to content

Commit

Permalink
xz: Detect when all data will be written to standard out earlier.
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
JiaT75 committed Nov 14, 2023
1 parent 2ade724 commit d4f4a4d
Showing 1 changed file with 21 additions and 0 deletions.
21 changes: 21 additions & 0 deletions src/xz/args.c
Original file line number Diff line number Diff line change
Expand Up @@ -842,6 +842,27 @@ args_parse(args_info *args, int argc, char **argv)
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;
}

Expand Down

0 comments on commit d4f4a4d

Please sign in to comment.