/*
Bacula® - The Network Backup Solution
- Copyright (C) 2000-2008 Free Software Foundation Europe e.V.
+ Copyright (C) 2000-2009 Free Software Foundation Europe e.V.
The main author of Bacula is Kern Sibbald, with contributions from
many others, a complete list can be found in the file AUTHORS.
static int outputcmd(FILE *input, BSOCK *UA_sock);
static int teecmd(FILE *input, BSOCK *UA_sock);
static int quitcmd(FILE *input, BSOCK *UA_sock);
+static int helpcmd(FILE *input, BSOCK *UA_sock);
static int echocmd(FILE *input, BSOCK *UA_sock);
static int timecmd(FILE *input, BSOCK *UA_sock);
static int sleepcmd(FILE *input, BSOCK *UA_sock);
{ N_("exec"), execcmd, _("execute an external command")},
{ N_("exit"), quitcmd, _("exit = quit")},
{ N_("zed_keys"), zed_keyscmd, _("zed_keys = use zed keys instead of bash keys")},
+ { N_("help"), helpcmd, _("help listing")},
#ifdef HAVE_READLINE
{ N_("separator"), eolcmd, _("set command separator")},
#endif
};
-#define comsize (sizeof(commands)/sizeof(struct cmdstruct))
+#define comsize ((int)(sizeof(commands)/sizeof(struct cmdstruct)))
static int do_a_command(FILE *input, BSOCK *UA_sock)
{
#ifdef HAVE_READLINE
#define READLINE_LIBRARY 1
-#undef free
#include "readline.h"
#include "history.h"
if (line == NULL) {
do_history = 0;
rl_catch_signals = 0; /* do it ourselves */
+ /* Here, readline does ***real*** malloc
+ * so, be we have to use the real free
+ */
line = readline((char *)prompt); /* cast needed for old readlines */
if (!line) {
exit(1);
if (do_history) {
add_history(line);
}
- free(line);
+ actuallyfree(line); /* allocated by readline() malloc */
line = NULL;
}
return 1;
static int echocmd(FILE *input, BSOCK *UA_sock)
{
for (int i=1; i < argc; i++) {
- senditf("%s", argk[i]);
- sendit(" ");
+ senditf("%s ", argk[i]);
}
sendit("\n");
return 1;
return 0;
}
+static int helpcmd(FILE *input, BSOCK *UA_sock)
+{
+ int i;
+ for (i=0; i<comsize; i++) {
+ senditf(" %-10s %s\n", commands[i].key, commands[i].help);
+ }
+ return 1;
+}
+
+
static int sleepcmd(FILE *input, BSOCK *UA_sock)
{
if (argc > 1) {