[systemd-devel] [PATCH 1/2] add parameters checking for 'udevadm settle"

YangZhiyong yangzy.fnst at cn.fujitsu.com
Sun Nov 3 17:10:22 PST 2013



> -----Original Message-----
> From: Zbigniew Jędrzejewski-Szmek [mailto:zbyszek at in.waw.pl]
> Sent: Monday, November 04, 2013 12:56 AM
> To: Yang Zhiyong
> Cc: systemd-devel at lists.freedesktop.org; kay at vrfy.org
> Subject: Re: [systemd-devel][PATCH 1/2] add parameters checking for
> 'udevadm settle"
> 
> On Sun, Nov 03, 2013 at 07:49:02PM +0800, Yang Zhiyong wrote:
> > This patch adds parameters checking for 'udevadm settle'.
> > ---
> >  src/udev/udevadm-settle.c | 20 ++++++++++++++------
> >  1 file changed, 14 insertions(+), 6 deletions(-)
> >
> > diff --git a/src/udev/udevadm-settle.c b/src/udev/udevadm-settle.c
> > index c4fc4ee..06f4004 100644
> > --- a/src/udev/udevadm-settle.c
> > +++ b/src/udev/udevadm-settle.c
> > @@ -35,6 +35,7 @@
> >  #include <sys/types.h>
> >
> >  #include "udev.h"
> > +#include "util.h"
> >
> >  static int adm_settle(struct udev *udev, int argc, char *argv[])  {
> > @@ -56,14 +57,19 @@ static int adm_settle(struct udev *udev, int argc,
> char *argv[])
> >          struct pollfd pfd[1] = { {.fd = -1}, };
> >          struct udev_queue *udev_queue = NULL;
> >          int rc = EXIT_FAILURE;
> > -
> > +        int r = -1;
> >          for (;;) {
> >                  int option;
> >                  int seconds;
> >
> >                  option = getopt_long(argc, argv, "s:e:t:E:qh", options,
NULL);
> > -                if (option == -1)
> > +                if (option == -1) {
> > +                        if (optind < argc) {
> > +                                fprintf(stderr, "Extraneous argument:
> '%s'\n",argv[optind]);
> > +                                exit(EXIT_FAILURE);
> > +                        }
> >                          break;
> > +                }
> >
> >                  switch (option) {
> >                  case 's':
> > @@ -73,11 +79,13 @@ static int adm_settle(struct udev *udev, int argc,
> char *argv[])
> >                          end = strtoull(optarg, NULL, 0);
> >                          break;
> >                  case 't':
> > -                        seconds = atoi(optarg);
> > -                        if (seconds >= 0)
> > +                        r = safe_atoi(optarg,&seconds);
> So, why not make seconds unsigned? Actually, seconds is only used to set
> timout, which is already unsigned. And safe_atou will not touch the
> destination variable unless sucessfull, so you can simply do away with
> seconds, making the code simpler.
OK, I understand .safe_atou  is more efficient.

Yang Zhiyong
> 
> 
> > +                        if (r < 0 || seconds < 0) {
> > +                                fprintf(stderr, "Invalid timeout value
'%s': %s\n", optarg,
> strerror(-r));
> > +                                exit(EXIT_FAILURE);
> > +                        } else {
> >                                  timeout = seconds;
> > -                        else
> > -                                fprintf(stderr, "invalid timeout
value\n");
> > +                        }
> >                          break;
> >                  case 'q':
> >                          quiet = 1;
> 
> Zbyszek




More information about the systemd-devel mailing list