Re: [PATCH] rtcwake: use poweroff if shutdown is not found

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



v2 sent! Thanks for the review

On Thu, Nov 1, 2018 at 3:09 AM Karel Zak <kzak@xxxxxxxxxx> wrote:
>
> On Wed, Oct 31, 2018 at 12:25:48PM -0700, justinpopo6@xxxxxxxxx wrote:
> > From: Justin Chen <justinpopo6@xxxxxxxxx>
> >
> > Some systems do not have the shutdown command. Use poweroff as an
> > alternative.
> >
> > Signed-off-by: Justin Chen <justinpopo6@xxxxxxxxx>
> > ---
> >  include/pathnames.h |  1 +
> >  sys-utils/rtcwake.c | 38 +++++++++++++++++++++++++++-----------
> >  2 files changed, 28 insertions(+), 11 deletions(-)
> >
> > diff --git a/include/pathnames.h b/include/pathnames.h
> > index 3d5052e..ed8ea33 100644
> > --- a/include/pathnames.h
> > +++ b/include/pathnames.h
> > @@ -53,6 +53,7 @@
> >  # define _PATH_LOGIN         "/bin/login"
> >  #endif
> >  #define _PATH_SHUTDOWN               "/sbin/shutdown"
> > +#define _PATH_POWEROFF               "/sbin/poweroff"
> >
> >  #define _PATH_TERMCOLORS_DIRNAME "terminal-colors.d"
> >  #define _PATH_TERMCOLORS_DIR "/etc/" _PATH_TERMCOLORS_DIRNAME
> > diff --git a/sys-utils/rtcwake.c b/sys-utils/rtcwake.c
> > index b63c646..b79adbe 100644
> > --- a/sys-utils/rtcwake.c
> > +++ b/sys-utils/rtcwake.c
> > @@ -28,6 +28,7 @@
> >  #include <stdlib.h>
> >  #include <string.h>
> >  #include <sys/ioctl.h>
> > +#include <sys/stat.h>
> >  #include <sys/time.h>
> >  #include <sys/types.h>
> >  #include <termios.h>
> > @@ -579,20 +580,35 @@ int main(int argc, char **argv)
> >               break;
> >       case OFF_MODE:
> >       {
> > +             struct stat buf;
> >               char *arg[5];
> >               int i = 0;
> >
> > -             if (ctl.verbose)
> > -                     printf(_("suspend mode: off; executing %s\n"),
> > -                                             _PATH_SHUTDOWN);
> > -             arg[i++] = _PATH_SHUTDOWN;
> > -             arg[i++] = "-h";
> > -             arg[i++] = "-P";
> > -             arg[i++] = "now";
> > -             arg[i]   = NULL;
> > -             if (!ctl.dryrun) {
> > -                     execv(arg[0], arg);
> > -                     warn(_("failed to execute %s"), _PATH_SHUTDOWN);
> > +             if (!stat(_PATH_SHUTDOWN, &buf)) {
> > +                     arg[i++] = _PATH_SHUTDOWN;
> > +                     arg[i++] = "-h";
> > +                     arg[i++] = "-P";
> > +                     arg[i++] = "now";
> > +                     arg[i]   = NULL;
> > +             } else if (!stat(_PATH_POWEROFF, &buf)) {
> > +                     arg[i++] = _PATH_POWEROFF;
> > +                     arg[i]   = NULL;
> > +             } else {
> > +                     arg[i]   = NULL;
> > +             }
> > +
> > +             if (arg[0]) {
> > +                     if (ctl.verbose)
> > +                             printf(_("suspend mode: off; executing %s\n"),
> > +                                             arg[0]);
> > +                     if (!ctl.dryrun) {
> > +                             execv(arg[0], arg);
> > +                             warn(_("failed to execute %s"), arg[0]);
> > +                             rc = EXIT_FAILURE;
> > +                     }
> > +             } else {
> > +                     /* Failed to find shutdown command */
> > +                     warn(_("failed to find shutdown command"));
> >                       rc = EXIT_FAILURE;
>
> maybe we can also change  exit code to:
>
>             rc = EX_EXEC_ENOENT
>
> to be compatible with another utils.
>
>     Karel
>
> >               }
> >               break;
> > --
> > 2.7.4
> >
>
> --
>  Karel Zak  <kzak@xxxxxxxxxx>
>  http://karelzak.blogspot.com



[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux