mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-03 03:25:20 +00:00
happy gcc
This commit is contained in:
parent
96a54b42a6
commit
304e52d02d
@ -1,3 +1,6 @@
|
||||
Thu Dec 8 15:20:57 CET 2005 Karel Zak <kzak@redhat.com>
|
||||
* src/virsh.c: code cleanup to prevent gcc warnings
|
||||
|
||||
Thu Dec 8 14:25:09 CET 2005 Daniel Veillard <veillard@redhat.com>
|
||||
|
||||
* configure.in: activate pedantic flags
|
||||
|
99
src/virsh.c
99
src/virsh.c
@ -6,6 +6,9 @@
|
||||
* See COPYING.LIB for the License of this software
|
||||
*
|
||||
* Daniel Veillard <veillard@redhat.com>
|
||||
* Karel Zak <kzak@redhat.com>
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#define _GNU_SOURCE /* isblank() */
|
||||
@ -18,6 +21,7 @@
|
||||
#include <unistd.h>
|
||||
#include <getopt.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/time.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#include <readline/readline.h>
|
||||
@ -99,18 +103,18 @@ typedef struct __vshCmd vshCmd;
|
||||
* vshCmdInfo -- information about command
|
||||
*/
|
||||
typedef struct {
|
||||
char *name; /* name of information */
|
||||
char *data; /* information */
|
||||
const char *name; /* name of information */
|
||||
const char *data; /* information */
|
||||
} vshCmdInfo;
|
||||
|
||||
/*
|
||||
* vshCmdOptDef - command option definition
|
||||
*/
|
||||
typedef struct {
|
||||
char *name; /* the name of option */
|
||||
const char *name; /* the name of option */
|
||||
vshCmdOptType type; /* option type */
|
||||
int flag; /* flags */
|
||||
char *help; /* help string */
|
||||
const char *help; /* help string */
|
||||
} vshCmdOptDef;
|
||||
|
||||
/*
|
||||
@ -126,7 +130,7 @@ typedef struct vshCmdOpt {
|
||||
* vshCmdDef - command definition
|
||||
*/
|
||||
typedef struct {
|
||||
char *name;
|
||||
const char *name;
|
||||
int (*handler)(vshControl *, vshCmd *); /* command handler */
|
||||
vshCmdOptDef *opts; /* definition of command options */
|
||||
vshCmdInfo *info; /* details about command */
|
||||
@ -158,25 +162,25 @@ typedef struct __vshControl {
|
||||
|
||||
static vshCmdDef commands[];
|
||||
|
||||
static void vshError(vshControl *ctl, int doexit, char *format, ...);
|
||||
static void vshError(vshControl *ctl, int doexit, const char *format, ...);
|
||||
static int vshInit(vshControl *ctl);
|
||||
static int vshDeinit(vshControl *ctl);
|
||||
static void vshUsage(vshControl *ctl, char *cmdname);
|
||||
static void vshUsage(vshControl *ctl, const char *cmdname);
|
||||
|
||||
static int vshParseArgv(vshControl *ctl, int argc, char **argv);
|
||||
|
||||
static char *vshCmddefGetInfo(vshCmdDef *cmd, char *info);
|
||||
static vshCmdDef *vshCmddefSearch(char *cmdname);
|
||||
static int vshCmddefHelp(vshControl *ctl, char *name, int withprog);
|
||||
static const char *vshCmddefGetInfo(vshCmdDef *cmd, const char *info);
|
||||
static vshCmdDef *vshCmddefSearch(const char *cmdname);
|
||||
static int vshCmddefHelp(vshControl *ctl, const char *name, int withprog);
|
||||
|
||||
static vshCmdOpt *vshCommandOpt(vshCmd *cmd, char *name);
|
||||
static int vshCommandOptInt(vshCmd *cmd, char *name, int *found);
|
||||
static char *vshCommandOptString(vshCmd *cmd, char *name, int *found);
|
||||
static int vshCommandOptBool(vshCmd *cmd, char *name);
|
||||
static vshCmdOpt *vshCommandOpt(vshCmd *cmd, const char *name);
|
||||
static int vshCommandOptInt(vshCmd *cmd, const char *name, int *found);
|
||||
static char *vshCommandOptString(vshCmd *cmd, const char *name, int *found);
|
||||
static int vshCommandOptBool(vshCmd *cmd, const char *name);
|
||||
|
||||
static void vshPrint(vshControl *ctl, vshOutType out, char *format, ...);
|
||||
static void vshPrint(vshControl *ctl, vshOutType out, const char *format, ...);
|
||||
|
||||
static char *vshDomainStateToString(int state);
|
||||
static const char *vshDomainStateToString(int state);
|
||||
static int vshConnectionUsability(vshControl *ctl, virConnectPtr conn, int showerror);
|
||||
|
||||
/* ---------------
|
||||
@ -202,7 +206,7 @@ static vshCmdOptDef opts_help[] = {
|
||||
|
||||
static int
|
||||
cmdHelp(vshControl *ctl, vshCmd *cmd) {
|
||||
char *cmdname = vshCommandOptString(cmd, "command", NULL);
|
||||
const char *cmdname = vshCommandOptString(cmd, "command", NULL);
|
||||
|
||||
if (!cmdname) {
|
||||
vshCmdDef *def;
|
||||
@ -269,6 +273,8 @@ static int
|
||||
cmdList(vshControl *ctl, vshCmd *cmd) {
|
||||
int *ids, maxid, i;
|
||||
|
||||
(void) cmd; /* happy gcc */
|
||||
|
||||
if (!vshConnectionUsability(ctl, ctl->conn, TRUE))
|
||||
return FALSE;
|
||||
|
||||
@ -507,12 +513,14 @@ cmdVersion(vshControl *ctl, vshCmd *cmd) {
|
||||
unsigned long hvVersion;
|
||||
const char *hvType;
|
||||
|
||||
(void)cmd;
|
||||
|
||||
if (!vshConnectionUsability(ctl, ctl->conn, TRUE))
|
||||
return FALSE;
|
||||
|
||||
hvType = virConnectGetType(ctl->conn);
|
||||
if (hvType == NULL) {
|
||||
vshError(ctl, FALSE, "Failed to get hypervisor type\n");
|
||||
vshError(ctl, FALSE, "failed to get hypervisor type\n");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -523,7 +531,7 @@ cmdVersion(vshControl *ctl, vshCmd *cmd) {
|
||||
}
|
||||
if (hvVersion == 0) {
|
||||
vshPrint(ctl, VSH_MESG,
|
||||
"Cannot extract running %s hypervisor version\n",
|
||||
"cannot extract running %s hypervisor version\n",
|
||||
hvType);
|
||||
} else {
|
||||
unsigned int major = hvVersion / 1000000;
|
||||
@ -551,6 +559,7 @@ static vshCmdInfo info_quit[] = {
|
||||
|
||||
static int
|
||||
cmdQuit(vshControl *ctl, vshCmd *cmd) {
|
||||
(void)cmd;
|
||||
ctl->imode = FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
@ -575,8 +584,8 @@ static vshCmdDef commands[] = {
|
||||
* Utils for work with command definition
|
||||
* ---------------
|
||||
*/
|
||||
static char *
|
||||
vshCmddefGetInfo(vshCmdDef *cmd, char *name) {
|
||||
static const char *
|
||||
vshCmddefGetInfo(vshCmdDef *cmd, const char *name) {
|
||||
vshCmdInfo *info;
|
||||
|
||||
for (info = cmd->info; info && info->name; info++) {
|
||||
@ -587,7 +596,7 @@ vshCmddefGetInfo(vshCmdDef *cmd, char *name) {
|
||||
}
|
||||
|
||||
static vshCmdOptDef *
|
||||
vshCmddefGetOption(vshCmdDef *cmd, char *name) {
|
||||
vshCmddefGetOption(vshCmdDef *cmd, const char *name) {
|
||||
vshCmdOptDef *opt;
|
||||
|
||||
for (opt = cmd->opts; opt && opt->name; opt++)
|
||||
@ -607,7 +616,7 @@ vshCmddefGetData(vshCmdDef *cmd) {
|
||||
}
|
||||
|
||||
static vshCmdDef *
|
||||
vshCmddefSearch(char *cmdname) {
|
||||
vshCmddefSearch(const char *cmdname) {
|
||||
vshCmdDef *c;
|
||||
|
||||
for (c = commands; c->name; c++)
|
||||
@ -617,7 +626,7 @@ vshCmddefSearch(char *cmdname) {
|
||||
}
|
||||
|
||||
static int
|
||||
vshCmddefHelp(vshControl *ctl, char *cmdname, int withprog) {
|
||||
vshCmddefHelp(vshControl *ctl, const char *cmdname, int withprog) {
|
||||
vshCmdDef *def = vshCmddefSearch(cmdname);
|
||||
|
||||
if (!def) {
|
||||
@ -625,9 +634,9 @@ vshCmddefHelp(vshControl *ctl, char *cmdname, int withprog) {
|
||||
return FALSE;
|
||||
} else {
|
||||
vshCmdOptDef *opt;
|
||||
char *desc = vshCmddefGetInfo(def, "desc");
|
||||
char *help = vshCmddefGetInfo(def, "help");
|
||||
char *syntax = vshCmddefGetInfo(def, "syntax");
|
||||
const char *desc = vshCmddefGetInfo(def, "desc");
|
||||
const char *help = vshCmddefGetInfo(def, "help");
|
||||
const char *syntax = vshCmddefGetInfo(def, "syntax");
|
||||
|
||||
fputs(" NAME\n", stdout);
|
||||
fprintf(stdout, " %s - %s\n", def->name, help);
|
||||
@ -701,7 +710,7 @@ vshCommandFree(vshCmd *cmd) {
|
||||
* Returns option by name
|
||||
*/
|
||||
static vshCmdOpt *
|
||||
vshCommandOpt(vshCmd *cmd, char *name) {
|
||||
vshCommandOpt(vshCmd *cmd, const char *name) {
|
||||
vshCmdOpt *opt = cmd->opts;
|
||||
|
||||
while(opt) {
|
||||
@ -716,7 +725,7 @@ vshCommandOpt(vshCmd *cmd, char *name) {
|
||||
* Returns option as INT
|
||||
*/
|
||||
static int
|
||||
vshCommandOptInt(vshCmd *cmd, char *name, int *found) {
|
||||
vshCommandOptInt(vshCmd *cmd, const char *name, int *found) {
|
||||
vshCmdOpt *arg = vshCommandOpt(cmd, name);
|
||||
int res = 0;
|
||||
|
||||
@ -731,7 +740,7 @@ vshCommandOptInt(vshCmd *cmd, char *name, int *found) {
|
||||
* Returns option as STRING
|
||||
*/
|
||||
static char *
|
||||
vshCommandOptString(vshCmd *cmd, char *name, int *found) {
|
||||
vshCommandOptString(vshCmd *cmd, const char *name, int *found) {
|
||||
vshCmdOpt *arg = vshCommandOpt(cmd, name);
|
||||
if (found)
|
||||
*found = arg ? TRUE : FALSE;
|
||||
@ -742,7 +751,7 @@ vshCommandOptString(vshCmd *cmd, char *name, int *found) {
|
||||
* Returns TRUE/FALSE if the option exists
|
||||
*/
|
||||
static int
|
||||
vshCommandOptBool(vshCmd *cmd, char *name) {
|
||||
vshCommandOptBool(vshCmd *cmd, const char *name) {
|
||||
return vshCommandOpt(cmd, name) ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
@ -992,7 +1001,7 @@ syntaxError:
|
||||
* Misc utils
|
||||
* ---------------
|
||||
*/
|
||||
static char *
|
||||
static const char *
|
||||
vshDomainStateToString(int state) {
|
||||
switch (state) {
|
||||
case VIR_DOMAIN_RUNNING:
|
||||
@ -1055,7 +1064,7 @@ vshWantedDebug(vshOutType type, int mode) {
|
||||
}
|
||||
|
||||
static void
|
||||
vshPrint(vshControl *ctl, vshOutType type, char *format, ...) {
|
||||
vshPrint(vshControl *ctl, vshOutType type, const char *format, ...) {
|
||||
va_list ap;
|
||||
|
||||
if (ctl->quiet==TRUE && (type==VSH_HEADER || type==VSH_FOOTER))
|
||||
@ -1070,7 +1079,7 @@ vshPrint(vshControl *ctl, vshOutType type, char *format, ...) {
|
||||
}
|
||||
|
||||
static void
|
||||
vshError(vshControl *ctl, int doexit, char *format, ...) {
|
||||
vshError(vshControl *ctl, int doexit, const char *format, ...) {
|
||||
va_list ap;
|
||||
|
||||
if (doexit)
|
||||
@ -1125,7 +1134,7 @@ vshInit(vshControl *ctl) {
|
||||
static char *
|
||||
vshReadlineCommandGenerator(const char *text, int state) {
|
||||
static int list_index, len;
|
||||
char *name;
|
||||
const char *name;
|
||||
|
||||
/* If this is a new word to complete, initialize now. This
|
||||
* includes saving the length of TEXT for efficiency, and
|
||||
@ -1139,7 +1148,7 @@ vshReadlineCommandGenerator(const char *text, int state) {
|
||||
/* Return the next name which partially matches from the
|
||||
* command list.
|
||||
*/
|
||||
while (name = commands[list_index].name) {
|
||||
while ((name = commands[list_index].name)) {
|
||||
list_index++;
|
||||
if (strncmp (name, text, len) == 0)
|
||||
return strdup(name);
|
||||
@ -1153,7 +1162,7 @@ static char *
|
||||
vshReadlineOptionsGenerator(const char *text, int state) {
|
||||
static int list_index, len;
|
||||
static vshCmdDef *cmd = NULL;
|
||||
char *name;
|
||||
const char *name;
|
||||
|
||||
if (!state) {
|
||||
/* determine command name */
|
||||
@ -1175,12 +1184,12 @@ vshReadlineOptionsGenerator(const char *text, int state) {
|
||||
if (!cmd)
|
||||
return NULL;
|
||||
|
||||
while (name = cmd->opts[list_index].name) {
|
||||
while ((name = cmd->opts[list_index].name)) {
|
||||
vshCmdOptDef *opt = &cmd->opts[list_index];
|
||||
char *res;
|
||||
list_index++;
|
||||
|
||||
if (cmd->opts[list_index].type == VSH_OT_DATA)
|
||||
if (opt->type == VSH_OT_DATA)
|
||||
/* ignore non --option */
|
||||
continue;
|
||||
|
||||
@ -1201,6 +1210,8 @@ static char **
|
||||
vshReadlineCompletion(const char *text, int start, int end) {
|
||||
char **matches = (char **) NULL;
|
||||
|
||||
(void) end; /* happy gcc */
|
||||
|
||||
if (start==0)
|
||||
/* command name generator */
|
||||
matches = rl_completion_matches (text, vshReadlineCommandGenerator);
|
||||
@ -1212,7 +1223,7 @@ vshReadlineCompletion(const char *text, int start, int end) {
|
||||
|
||||
|
||||
static void
|
||||
vshReadlineInit(vshControl *ctl) {
|
||||
vshReadlineInit(void) {
|
||||
/* Allow conditional parsing of the ~/.inputrc file. */
|
||||
rl_readline_name = "virsh";
|
||||
|
||||
@ -1238,7 +1249,7 @@ vshDeinit(vshControl *ctl) {
|
||||
* Print usage
|
||||
*/
|
||||
static void
|
||||
vshUsage(vshControl *ctl, char *cmdname) {
|
||||
vshUsage(vshControl *ctl, const char *cmdname) {
|
||||
vshCmdDef *cmd;
|
||||
|
||||
/* global help */
|
||||
@ -1283,7 +1294,7 @@ vshParseArgv(vshControl *ctl, int argc, char **argv) {
|
||||
|
||||
|
||||
if (argc < 2)
|
||||
return;
|
||||
return TRUE;
|
||||
|
||||
/* look for begin of command, for example:
|
||||
* ./virsh --debug 5 -q command --cmdoption
|
||||
@ -1350,7 +1361,7 @@ vshParseArgv(vshControl *ctl, int argc, char **argv) {
|
||||
if (argc > end) {
|
||||
/* parse command */
|
||||
char *cmdstr;
|
||||
int sz=0, i, ret;
|
||||
int sz=0, ret;
|
||||
|
||||
ctl->imode = FALSE;
|
||||
|
||||
@ -1402,7 +1413,7 @@ main(int argc, char **argv) {
|
||||
vshPrint(ctl, VSH_MESG, "Type: 'help' for help with commands\n"
|
||||
" 'quit' to quit\n\n");
|
||||
}
|
||||
vshReadlineInit(ctl);
|
||||
vshReadlineInit();
|
||||
do {
|
||||
ctl->cmdstr = readline(ctl->uid==0 ? VSH_PROMPT_RW : VSH_PROMPT_RO);
|
||||
if (ctl->cmdstr==NULL)
|
||||
|
Loading…
Reference in New Issue
Block a user