X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=lib%2Fovsdb-idl.c;h=3f3ce555ac3f4ec413352107ef65e40730ade696;hb=6dee2066b5edaa9b5c7af572d075591ad595428d;hp=ba58895af6e1e2ddff3698addf5c8f4670b7e541;hpb=1e86ae6f51bcc91d2fa36e4154bc6e540251eaf8;p=openvswitch diff --git a/lib/ovsdb-idl.c b/lib/ovsdb-idl.c index ba58895a..3f3ce555 100644 --- a/lib/ovsdb-idl.c +++ b/lib/ovsdb-idl.c @@ -25,6 +25,7 @@ #include "bitmap.h" #include "dynamic-string.h" +#include "fatal-signal.h" #include "json.h" #include "jsonrpc.h" #include "ovsdb-data.h" @@ -914,13 +915,22 @@ ovsdb_idl_txn_create(struct ovsdb_idl *idl) return txn; } +/* Appends 's', which is treated as a printf()-type format string, to the + * comments that will be passed to the OVSDB server when 'txn' is committed. + * (The comment will be committed to the OVSDB log, which "ovsdb-tool + * show-log" can print in a relatively human-readable form.) */ void -ovsdb_idl_txn_add_comment(struct ovsdb_idl_txn *txn, const char *s) +ovsdb_idl_txn_add_comment(struct ovsdb_idl_txn *txn, const char *s, ...) { + va_list args; + if (txn->comment.length) { ds_put_char(&txn->comment, '\n'); } - ds_put_cstr(&txn->comment, s); + + va_start(args, s); + ds_put_format_valist(&txn->comment, s, args); + va_end(args); } void @@ -1272,6 +1282,7 @@ ovsdb_idl_txn_commit_block(struct ovsdb_idl_txn *txn) { enum ovsdb_idl_txn_status status; + fatal_signal_run(); while ((status = ovsdb_idl_txn_commit(txn)) == TXN_INCOMPLETE) { ovsdb_idl_run(txn->idl); ovsdb_idl_wait(txn->idl);