qemu-io: Interface cleanup

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
Kevin Wolf 2013-06-05 14:19:39 +02:00 committed by Stefan Hajnoczi
parent 0b613881ae
commit 3d21994f9c
3 changed files with 27 additions and 30 deletions

View File

@ -14,35 +14,33 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>. * along with this program; if not, see <http://www.gnu.org/licenses/>.
*/ */
#ifndef __COMMAND_H__
#define __COMMAND_H__ #ifndef QEMU_IO_H
#define QEMU_IO_H
#include "qemu-common.h" #include "qemu-common.h"
#define CMD_FLAG_GLOBAL ((int)0x80000000) /* don't iterate "args" */ #define CMD_FLAG_GLOBAL ((int)0x80000000) /* don't iterate "args" */
extern BlockDriverState *qemuio_bs;
typedef int (*cfunc_t)(BlockDriverState *bs, int argc, char **argv); typedef int (*cfunc_t)(BlockDriverState *bs, int argc, char **argv);
typedef void (*helpfunc_t)(void); typedef void (*helpfunc_t)(void);
typedef struct cmdinfo { typedef struct cmdinfo {
const char *name; const char* name;
const char *altname; const char* altname;
cfunc_t cfunc; cfunc_t cfunc;
int argmin; int argmin;
int argmax; int argmax;
int canpush; int canpush;
int flags; int flags;
const char *args; const char *args;
const char *oneline; const char *oneline;
helpfunc_t help; helpfunc_t help;
} cmdinfo_t; } cmdinfo_t;
void qemuio_add_command(const cmdinfo_t *ci); bool qemuio_command(BlockDriverState *bs, const char *cmd);
void qemuio_add_command(const cmdinfo_t *ci);
int qemuio_command_usage(const cmdinfo_t *ci); int qemuio_command_usage(const cmdinfo_t *ci);
bool qemuio_command(const char *cmd); #endif /* QEMU_IO_H */
#endif /* __COMMAND_H__ */

View File

@ -8,9 +8,8 @@
* See the COPYING file in the top-level directory. * See the COPYING file in the top-level directory.
*/ */
#include "qemu-common.h" #include "qemu-io.h"
#include "block/block_int.h" #include "block/block_int.h"
#include "cmd.h"
#define CMD_NOFILE_OK 0x01 #define CMD_NOFILE_OK 0x01
@ -50,11 +49,12 @@ static int init_check_command(BlockDriverState *bs, const cmdinfo_t *ct)
return 1; return 1;
} }
static int command(const cmdinfo_t *ct, int argc, char **argv) static int command(BlockDriverState *bs, const cmdinfo_t *ct, int argc,
char **argv)
{ {
char *cmd = argv[0]; char *cmd = argv[0];
if (!init_check_command(qemuio_bs, ct)) { if (!init_check_command(bs, ct)) {
return 0; return 0;
} }
@ -75,7 +75,7 @@ static int command(const cmdinfo_t *ct, int argc, char **argv)
return 0; return 0;
} }
optind = 0; optind = 0;
return ct->cfunc(qemuio_bs, argc, argv); return ct->cfunc(bs, argc, argv);
} }
static const cmdinfo_t *find_command(const char *cmd) static const cmdinfo_t *find_command(const char *cmd)
@ -2068,7 +2068,7 @@ static const cmdinfo_t help_cmd = {
.oneline = "help for one or all commands", .oneline = "help for one or all commands",
}; };
bool qemuio_command(const char *cmd) bool qemuio_command(BlockDriverState *bs, const char *cmd)
{ {
char *input; char *input;
const cmdinfo_t *ct; const cmdinfo_t *ct;
@ -2081,7 +2081,7 @@ bool qemuio_command(const char *cmd)
if (c) { if (c) {
ct = find_command(v[0]); ct = find_command(v[0]);
if (ct) { if (ct) {
done = command(ct, c, v); done = command(bs, ct, c, v);
} else { } else {
fprintf(stderr, "command \"%s\" not found\n", v[0]); fprintf(stderr, "command \"%s\" not found\n", v[0]);
} }

View File

@ -14,10 +14,9 @@
#include <getopt.h> #include <getopt.h>
#include <libgen.h> #include <libgen.h>
#include "qemu-common.h" #include "qemu-io.h"
#include "qemu/main-loop.h" #include "qemu/main-loop.h"
#include "block/block_int.h" #include "block/block_int.h"
#include "cmd.h"
#include "trace/control.h" #include "trace/control.h"
#define VERSION "0.0.1" #define VERSION "0.0.1"
@ -273,7 +272,7 @@ static void command_loop(void)
char *input; char *input;
for (i = 0; !done && i < ncmdline; i++) { for (i = 0; !done && i < ncmdline; i++) {
done = qemuio_command(cmdline[i]); done = qemuio_command(qemuio_bs, cmdline[i]);
} }
if (cmdline) { if (cmdline) {
g_free(cmdline); g_free(cmdline);
@ -298,7 +297,7 @@ static void command_loop(void)
if (input == NULL) { if (input == NULL) {
break; break;
} }
done = qemuio_command(input); done = qemuio_command(qemuio_bs, input);
g_free(input); g_free(input);
prompted = 0; prompted = 0;