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 <[email protected]>
---
 src/pacman/pacman.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c
index 921331c..7aa0271 100644
--- a/src/pacman/pacman.c
+++ b/src/pacman/pacman.c
@@ -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"));
-- 
1.8.3


Reply via email to