On 08/14/2012 08:14 AM, Benoît Canet wrote: > Signed-off-by: Benoit Canet <ben...@irqsave.net>
Your commit message is sparse. At least document the syntax expected for opening a quorum file. > --- > block/quorum.c | 113 > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 113 insertions(+) > > diff --git a/block/quorum.c b/block/quorum.c > index bab6175..f228428 100644 > --- a/block/quorum.c > +++ b/block/quorum.c > @@ -52,11 +52,124 @@ struct QuorumAIOCB { > int vote_ret; > }; > > +/* Valid quorum filenames look like > + * quorum:n/m:path/to/image_1, ... ,path/to/image_m such as copying this in the commit message. Also, document your escape handling; I had to read it from the code, but it looks like you set up '\' to escape anything, so that '\:' and '\\' are the spellings for a literal backslash or colon in a file name. > + */ > +static int quorum_open(BlockDriverState *bs, const char *filename, int flags) > +{ > + BDRVQuorumState *s = bs->opaque; > + int escape, i, j, len, ret = 0; escape only ever holds 0 or 1, so it should be a 'bool' instead. > + /* Get the filenames pointers */ > + escape = 0; s/0/false/ > + s->filenames[0] = names; > + len = strlen(names); > + for (i = 0, j = 1; i < len && j < s->m; i++) { > + if (!escape && names[i] == ':') { > + names[i] = '\0'; > + s->filenames[j] = names + i + 1; > + j += 1; Isn't this usually written 'j++'? > + } > + > + if (!escape && names[i] == '\\') { > + escape = 1; s/1/true/ > + } else { > + escape = 0; s/0/false/ > + } Or even simplify the 'if' to a one-liner: escape = !escape && names[i] == '\\'; -- Eric Blake ebl...@redhat.com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature