pclose returns the exit status from wait, we need to check that to see if
the script itself failed or not. Tested a script that returned 0, 1, and
also one that did a sleep and then was killed by a signal (abnormal
termination).

Signed-off-by: Dwight Engen <dwight.en...@oracle.com>
---
 src/lxc/conf.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/lxc/conf.c b/src/lxc/conf.c
index 6b3f318..07529da 100644
--- a/src/lxc/conf.c
+++ b/src/lxc/conf.c
@@ -299,6 +299,7 @@ static int run_buffer(char *buffer)
 {
        FILE *f;
        char *output;
+       int ret;
 
        f = popen(buffer, "r");
        if (!f) {
@@ -317,8 +318,10 @@ static int run_buffer(char *buffer)
 
        free(output);
 
-       if (pclose(f) == -1) {
-               SYSERROR("Script exited on error");
+       ret = pclose(f);
+       if (ret < 0 || !WIFEXITED(ret) || WEXITSTATUS(ret) != 0) {
+               SYSERROR("Script exited:%snormally with:%d",
+                        WIFEXITED(ret) ? "" : "ab", WEXITSTATUS(ret));
                return -1;
        }
 
-- 
1.7.12.3


------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter
_______________________________________________
Lxc-devel mailing list
Lxc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-devel

Reply via email to