[Libguestfs] [PATCH nbdkit 1/2] file: Add an internal "mode"
Richard W.M. Jones
rjones at redhat.com
Thu Aug 18 09:32:38 UTC 2022
On Thu, Aug 18, 2022 at 10:27:11AM +0200, Laszlo Ersek wrote:
> On 08/17/22 17:38, Richard W.M. Jones wrote:
> > Previously we relied on the implicit assumption filename xor directory,
> > representing two modes. Make this explicit with an internal mode
> > variable.
> >
> > This is just refactoring and should not change the functionality.
> > However we're now more strict about duplicate file= or dir= parameters
> > appearing on the command line. Previously only the last one had an
> > effect and the others were silently ignored. Now we give an error in
> > this case. eg this worked before but now gives an error:
> >
> > $ ./nbdkit file /var/tmp /var/tmp/fedora-36.img
> > nbdkit: error: file|dir parameter can only appear once on the command line
> > ---
> > plugins/file/file.c | 124 +++++++++++++++++++++++++++-----------------
> > 1 file changed, 76 insertions(+), 48 deletions(-)
> >
> > diff --git a/plugins/file/file.c b/plugins/file/file.c
> > index aefca9ee2..f673ec132 100644
> > --- a/plugins/file/file.c
> > +++ b/plugins/file/file.c
> > @@ -70,6 +70,7 @@
> > #include "isaligned.h"
> > #include "fdatasync.h"
> >
> > +static enum { mode_none, mode_filename, mode_directory } mode = mode_none;
> > static char *filename = NULL;
> > static char *directory = NULL;
> >
> > @@ -180,14 +181,23 @@ file_config (const char *key, const char *value)
> > * existence checks to the last possible moment.
> > */
> > if (strcmp (key, "file") == 0) {
> > - free (filename);
> > + if (mode != mode_none) {
> > + wrong_mode:
>
> *shudder*
>
> please move error handling sections to the end of the function. It's OK
> to jump forward in exceptional cases, but crossing jump lines (i.e.
> improper balancing / nesting) and backward jumps for error handling are
> terrible.
I don't think I really have a problem with it, but I moved it
to the end of the function.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW
More information about the Libguestfs
mailing list