We don't expect that stdin is console when doing the 'vdi restore'
command.

Signed-off-by: MORITA Kazutaka <[email protected]>
---
 collie/vdi.c   | 6 ++++++
 include/util.h | 5 +++++
 2 files changed, 11 insertions(+)

diff --git a/collie/vdi.c b/collie/vdi.c
index 0a0814f..5603f97 100644
--- a/collie/vdi.c
+++ b/collie/vdi.c
@@ -1839,6 +1839,12 @@ static int vdi_restore(int argc, char **argv)
                goto out;
        }
 
+       if (is_stdin_console()) {
+               fprintf(stderr, "stdin must be pipe\n");
+               ret = EXIT_USAGE;
+               goto out;
+       }
+
        ret = do_vdi_delete(vdiname, 0, NULL);
        if (ret != EXIT_SUCCESS) {
                fprintf(stderr, "Failed to delete the current state\n");
diff --git a/include/util.h b/include/util.h
index 192e3fd..8ba6710 100644
--- a/include/util.h
+++ b/include/util.h
@@ -148,6 +148,11 @@ static inline void uatomic_set_false(uatomic_bool *val)
 #define TEXT_CYAN           "\033[0;36m"
 #define TEXT_BOLD_CYAN      "\033[1;36m"
 
+static inline bool is_stdin_console(void)
+{
+       return isatty(STDIN_FILENO);
+}
+
 static inline bool is_stdout_console(void)
 {
        return isatty(STDOUT_FILENO);
-- 
1.8.1.3.566.gaa39828

-- 
sheepdog mailing list
[email protected]
http://lists.wpkg.org/mailman/listinfo/sheepdog

Reply via email to