die if '-' is given with empty stdin
Several operations default to all packages/repos/etc if no targets are provided. If a user provides '-' they almost certainly expect there to be targets on stdin and will be surprised if pacman falls back to the default because there are none. Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com> Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
parent
9574bfd6c8
commit
ab3d8478c2
|
@ -826,6 +826,7 @@ int main(int argc, char *argv[])
|
|||
/* we support reading targets from stdin if a cmdline parameter is '-' */
|
||||
if(alpm_list_find_str(pm_targets, "-")) {
|
||||
if(!isatty(fileno(stdin))) {
|
||||
int target_found = 0;
|
||||
size_t current_size = PATH_MAX;
|
||||
char *vdata, *line = malloc(current_size);
|
||||
|
||||
|
@ -840,6 +841,7 @@ int main(int argc, char *argv[])
|
|||
if(i > 0) {
|
||||
line[i] = '\0';
|
||||
pm_targets = alpm_list_add(pm_targets, strdup(line));
|
||||
target_found = 1;
|
||||
i = 0;
|
||||
}
|
||||
} else {
|
||||
|
@ -869,12 +871,18 @@ int main(int argc, char *argv[])
|
|||
if(i > 0) {
|
||||
line[i] = '\0';
|
||||
pm_targets = alpm_list_add(pm_targets, strdup(line));
|
||||
target_found = 1;
|
||||
}
|
||||
free(line);
|
||||
if(!freopen(ctermid(NULL), "r", stdin)) {
|
||||
pm_printf(ALPM_LOG_ERROR, _("failed to reopen stdin for reading: (%s)\n"),
|
||||
strerror(errno));
|
||||
}
|
||||
|
||||
if(!target_found) {
|
||||
pm_printf(ALPM_LOG_ERROR, _("argument '-' specified with empty stdin\n"));
|
||||
cleanup(1);
|
||||
}
|
||||
} else {
|
||||
/* do not read stdin from terminal */
|
||||
pm_printf(ALPM_LOG_ERROR, _("argument '-' specified without input on stdin\n"));
|
||||
|
|
Loading…
Reference in New Issue