On Sat, Nov 03, 2018 at 08:41:22PM +0100, Klemens Nanni wrote:
> Simpler and without ugly `goto fail'. `value.addr` is typed XPointer
> which is just a char pointer.
> 
> Zap linter hints while here.
Bump.

I have a few small/simple changes that I want to get in before
eventually sending an improved diff for `-program' handling.

OK?

Index: xidle.c
===================================================================
RCS file: /cvs/xenocara/app/xidle/xidle.c,v
retrieving revision 1.6
diff -u -p -r1.6 xidle.c
--- xidle.c     6 Sep 2018 07:21:34 -0000       1.6
+++ xidle.c     11 Nov 2018 11:22:47 -0000
@@ -187,14 +187,10 @@ action(struct xinfo *xi, char **args)
        switch (fork()) {
        case -1:
                err(1, "fork");
-               /* NOTREACHED */
-
        case 0:
                setsid();
                execv(*args, args);
                exit(1);
-               /* NOTREACHED */
-
        default:
                wait(&dumb);
                XSync(xi->dpy, True);
@@ -259,6 +255,7 @@ void
 parse_opts(int argc, char **argv, Display **dpy, int *area, int *delay,
     int *timeout, int *position, char **args)
 {
+       const char *errstr;
        char **ap, *program = PATH_PROG;
        char *display, *p;
        XrmDatabase tdb, rdb = NULL;
@@ -276,7 +273,6 @@ parse_opts(int argc, char **argv, Displa
        *dpy = XOpenDisplay(display);
        if (!*dpy) {
                errx(1, "Unable to open display %s", XDisplayName(display));
-               /* NOTREACHED */
        }
 
        /* Get server resources database. */
@@ -297,29 +293,26 @@ parse_opts(int argc, char **argv, Displa
            __progname, &argc, argv);
        if (argc > 1) {
                usage();
-               /* NOTREACHED */
        }
        if (getres(&value, rdb, "area", "Area")) {
-               *area = strtol((char *)value.addr, &p, 10);
-               if (*p || *area < 1) {
-fail:                  errx(1, "illegal value -- %s", (char *)value.addr);
-                       /* NOTREACHED */
-               }
+               *area = strtonum(value.addr, 0, INT_MAX, &errstr);
+               if (errstr)
+                       errx(1, "area is %s: %s", errstr, value.addr);
        }
        if (getres(&value, rdb, "delay", "Delay")) {
-               *delay = strtol((char *)value.addr, &p, 10);
-               if (*p || *delay < 0)
-                       goto fail;
+               *delay = strtonum(value.addr, 0, INT_MAX, &errstr);
+               if (errstr)
+                       errx(1, "delay is %s: %s", errstr, value.addr);
        }
        if (getres(&value, rdb, "position", "Position")) {
                *position = str2pos((char *)value.addr);
                if (!*position)
-                       goto fail;
+                       errx(1, "position is invalid: %s", value.addr);
        }
        if (getres(&value, rdb, "timeout", "Timeout")) {
-               *timeout = strtol((char *)value.addr, &p, 10);
-               if (*p || *timeout < 0)
-                       goto fail;
+               *timeout = strtonum(value.addr, 0, INT_MAX, &errstr);
+               if (errstr)
+                       errx(1, "timeout is %s: %s", errstr, value.addr);
        }
        if (getres(&value, rdb, "program", "Program")) {
                /* Should be the last :) */
@@ -454,6 +447,4 @@ main(int argc, char **argv)
                        break;
                }
        }
-
-       /* NOTREACHED */
 }

Reply via email to