Blob Blame History Raw
diff --git a/src/CmdExec.h b/src/CmdExec.h
index 752c4c7..b853742 100644
--- a/src/CmdExec.h
+++ b/src/CmdExec.h
@@ -253,7 +253,7 @@ public:
 
    void ChangeSession(FileAccess *new_session);
 
-   void print_cmd_help(const char *cmd);
+   bool print_cmd_help(const char *cmd);
    void print_cmd_index();
 
    static const char *CmdByIndex(int i);
diff --git a/src/commands.cc b/src/commands.cc
index 73de31e..e361042 100644
--- a/src/commands.cc
+++ b/src/commands.cc
@@ -2533,7 +2533,7 @@ CMD(scache)
    return 0;
 }
 
-void CmdExec::print_cmd_help(const char *cmd)
+bool CmdExec::print_cmd_help(const char *cmd)
 {
    const cmd_rec *c;
    int part=find_cmd(cmd,&c);
@@ -2543,30 +2543,31 @@ void CmdExec::print_cmd_help(const char *cmd)
       if(c->long_desc==0 && c->short_desc==0)
       {
 	 printf(_("Sorry, no help for %s\n"),cmd);
-	 return;
+	 return true;
       }
       if(c->short_desc==0 && !strchr(c->long_desc,' '))
       {
 	 printf(_("%s is a built-in alias for %s\n"),cmd,c->long_desc);
 	 print_cmd_help(c->long_desc);
-	 return;
+	 return true;
       }
       if(c->short_desc)
 	 printf(_("Usage: %s\n"),_(c->short_desc));
       if(c->long_desc)
 	 printf("%s",_(c->long_desc));
-      return;
+      return true;
    }
    const char *a=Alias::Find(cmd);
    if(a)
    {
       printf(_("%s is an alias to `%s'\n"),cmd,a);
-      return;
+      return true;
    }
    if(part==0)
       printf(_("No such command `%s'. Use `help' to see available commands.\n"),cmd);
    else
       printf(_("Ambiguous command `%s'. Use `help' to see available commands.\n"),cmd);
+   return false;
 }
 
 void CmdExec::print_cmd_index()
@@ -2610,12 +2611,14 @@ CMD(help)
 {
    if(args->count()>1)
    {
+      exit_code=0;
       for(;;)
       {
 	 const char *cmd=args->getnext();
 	 if(cmd==0)
 	    break;
-	 parent->print_cmd_help(cmd);
+	 if(!parent->print_cmd_help(cmd))
+	    exit_code=1;
       }
       return 0;
    }
-- 
2.1.0