qerror: Finally unused, clean up

Remove it except for two things in qerror.h:

* Two #include to be cleaned up separately to avoid cluttering this
  patch.

* The QERR_ macros.  Mark as obsolete.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Luiz Capitulino <lcapitulino@redhat.com>
This commit is contained in:
Markus Armbruster 2015-03-17 14:29:59 +01:00
parent 485febc6d1
commit 4629ed1e98
11 changed files with 4 additions and 199 deletions

View File

@ -523,12 +523,6 @@ static void dump_qobject(fprintf_function func_fprintf, void *f,
func_fprintf(f, "%s", qbool_get_bool(value) ? "true" : "false"); func_fprintf(f, "%s", qbool_get_bool(value) ? "true" : "false");
break; break;
} }
case QTYPE_QERROR: {
QString *value = qerror_human((QError *)obj);
func_fprintf(f, "%s", qstring_get_str(value));
QDECREF(value);
break;
}
default: default:
abort(); abort();
} }

View File

@ -39,7 +39,6 @@ void monitor_flush(Monitor *mon);
int monitor_set_cpu(int cpu_index); int monitor_set_cpu(int cpu_index);
int monitor_get_cpu_index(void); int monitor_get_cpu_index(void);
void monitor_set_error(Monitor *mon, QError *qerror);
void monitor_read_command(Monitor *mon, int show_prompt); void monitor_read_command(Monitor *mon, int show_prompt);
int monitor_read_password(Monitor *mon, ReadLineFunc *readline_func, int monitor_read_password(Monitor *mon, ReadLineFunc *readline_func,
void *opaque); void *opaque);

View File

@ -14,25 +14,10 @@
#include "qapi/qmp/qstring.h" #include "qapi/qmp/qstring.h"
#include "qemu/error-report.h" #include "qemu/error-report.h"
#include "qapi/error.h"
#include "qapi-types.h"
#include <stdarg.h>
typedef struct QError {
QObject_HEAD;
Location loc;
char *err_msg;
ErrorClass err_class;
} QError;
QString *qerror_human(const QError *qerror);
void qerror_report(ErrorClass err_class, const char *fmt, ...) GCC_FMT_ATTR(2, 3);
void qerror_report_err(Error *err);
/* /*
* QError class list * These macros will go away, please don't use in new code, and do not
* Please keep the definitions in alphabetical order. * add new ones!
* Use scripts/check-qerror.sh to check.
*/ */
#define QERR_BASE_NOT_FOUND \ #define QERR_BASE_NOT_FOUND \
"Base '%s' not found" "Base '%s' not found"

View File

@ -44,7 +44,6 @@ typedef enum {
QTYPE_QLIST, QTYPE_QLIST,
QTYPE_QFLOAT, QTYPE_QFLOAT,
QTYPE_QBOOL, QTYPE_QBOOL,
QTYPE_QERROR,
QTYPE_MAX, QTYPE_MAX,
} qtype_code; } qtype_code;

View File

@ -202,7 +202,6 @@ struct Monitor {
BlockCompletionFunc *password_completion_cb; BlockCompletionFunc *password_completion_cb;
void *password_opaque; void *password_opaque;
mon_cmd_t *cmd_table; mon_cmd_t *cmd_table;
QError *error;
QLIST_HEAD(,mon_fd_t) fds; QLIST_HEAD(,mon_fd_t) fds;
QLIST_ENTRY(Monitor) entry; QLIST_ENTRY(Monitor) entry;
}; };
@ -4038,16 +4037,6 @@ fail:
return NULL; return NULL;
} }
void monitor_set_error(Monitor *mon, QError *qerror)
{
/* report only the first error */
if (!mon->error) {
mon->error = qerror;
} else {
QDECREF(qerror);
}
}
static void handle_hmp_command(Monitor *mon, const char *cmdline) static void handle_hmp_command(Monitor *mon, const char *cmdline)
{ {
QDict *qdict; QDict *qdict;
@ -5047,8 +5036,6 @@ static void handle_qmp_command(JSONMessageParser *parser, QList *tokens)
err_out: err_out:
monitor_protocol_emitter(mon, data, local_err); monitor_protocol_emitter(mon, data, local_err);
qobject_decref(data); qobject_decref(data);
QDECREF(mon->error);
mon->error = NULL;
QDECREF(input); QDECREF(input);
QDECREF(args); QDECREF(args);
} }

View File

@ -1,3 +1,2 @@
util-obj-y = qnull.o qint.o qstring.o qdict.o qlist.o qfloat.o qbool.o util-obj-y = qnull.o qint.o qstring.o qdict.o qlist.o qfloat.o qbool.o
util-obj-y += qjson.o json-lexer.o json-streamer.o json-parser.o util-obj-y += qjson.o json-lexer.o json-streamer.o json-parser.o
util-obj-y += qerror.o

View File

@ -1,148 +0,0 @@
/*
* QError Module
*
* Copyright (C) 2009 Red Hat Inc.
*
* Authors:
* Luiz Capitulino <lcapitulino@redhat.com>
*
* This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
* See the COPYING.LIB file in the top-level directory.
*/
#include "monitor/monitor.h"
#include "qapi/qmp/qjson.h"
#include "qapi/qmp/qerror.h"
#include "qemu-common.h"
static void qerror_destroy_obj(QObject *obj);
static const QType qerror_type = {
.code = QTYPE_QERROR,
.destroy = qerror_destroy_obj,
};
/**
* qerror_new(): Create a new QError
*
* Return strong reference.
*/
static QError *qerror_new(void)
{
QError *qerr;
qerr = g_malloc0(sizeof(*qerr));
QOBJECT_INIT(qerr, &qerror_type);
return qerr;
}
/**
* qerror_from_info(): Create a new QError from error information
*
* Return strong reference.
*/
static QError * GCC_FMT_ATTR(2, 0)
qerror_from_info(ErrorClass err_class, const char *fmt, va_list *va)
{
QError *qerr;
qerr = qerror_new();
loc_save(&qerr->loc);
qerr->err_msg = g_strdup_vprintf(fmt, *va);
qerr->err_class = err_class;
return qerr;
}
/**
* qerror_human(): Format QError data into human-readable string.
*/
QString *qerror_human(const QError *qerror)
{
return qstring_from_str(qerror->err_msg);
}
/**
* qerror_print(): Print QError data
*
* This function will print the member 'desc' of the specified QError object,
* it uses error_report() for this, so that the output is routed to the right
* place (ie. stderr or Monitor's device).
*/
static void qerror_print(QError *qerror)
{
QString *qstring = qerror_human(qerror);
loc_push_restore(&qerror->loc);
error_report("%s", qstring_get_str(qstring));
loc_pop(&qerror->loc);
QDECREF(qstring);
}
void qerror_report(ErrorClass eclass, const char *fmt, ...)
{
va_list va;
QError *qerror;
va_start(va, fmt);
qerror = qerror_from_info(eclass, fmt, &va);
va_end(va);
if (monitor_cur_is_qmp()) {
monitor_set_error(cur_mon, qerror);
} else {
qerror_print(qerror);
QDECREF(qerror);
}
}
/* Evil... */
struct Error
{
char *msg;
ErrorClass err_class;
};
void qerror_report_err(Error *err)
{
QError *qerr;
qerr = qerror_new();
loc_save(&qerr->loc);
qerr->err_msg = g_strdup(err->msg);
qerr->err_class = err->err_class;
if (monitor_cur_is_qmp()) {
monitor_set_error(cur_mon, qerr);
} else {
qerror_print(qerr);
QDECREF(qerr);
}
}
/**
* qobject_to_qerror(): Convert a QObject into a QError
*/
static QError *qobject_to_qerror(const QObject *obj)
{
if (qobject_type(obj) != QTYPE_QERROR) {
return NULL;
}
return container_of(obj, QError, base);
}
/**
* qerror_destroy_obj(): Free all memory allocated by a QError
*/
static void qerror_destroy_obj(QObject *obj)
{
QError *qerr;
assert(obj != NULL);
qerr = qobject_to_qerror(obj);
g_free(qerr->err_msg);
g_free(qerr);
}

View File

@ -261,9 +261,6 @@ static void to_json(const QObject *obj, QString *str, int pretty, int indent)
} }
break; break;
} }
case QTYPE_QERROR:
/* XXX: should QError be emitted? */
break;
default: default:
abort(); abort();
} }

View File

@ -21,7 +21,6 @@ stub-obj-y += machine-init-done.o
stub-obj-y += migr-blocker.o stub-obj-y += migr-blocker.o
stub-obj-y += mon-is-qmp.o stub-obj-y += mon-is-qmp.o
stub-obj-y += mon-printf.o stub-obj-y += mon-printf.o
stub-obj-y += mon-set-error.o
stub-obj-y += monitor-init.o stub-obj-y += monitor-init.o
stub-obj-y += notify-event.o stub-obj-y += notify-event.o
stub-obj-$(CONFIG_SPICE) += qemu-chr-open-spice.o stub-obj-$(CONFIG_SPICE) += qemu-chr-open-spice.o

View File

@ -1,6 +1,8 @@
#include "qemu-common.h" #include "qemu-common.h"
#include "monitor/monitor.h" #include "monitor/monitor.h"
Monitor *cur_mon;
bool monitor_cur_is_qmp(void) bool monitor_cur_is_qmp(void)
{ {
return false; return false;

View File

@ -1,8 +0,0 @@
#include "qemu-common.h"
#include "monitor/monitor.h"
Monitor *cur_mon;
void monitor_set_error(Monitor *mon, QError *qerror)
{
}