- if (argc >= 2 && fork() == 0) {
- if (dpy)
- close(ConnectionNumber(dpy));
- execvp(argv[1], argv+1);
- die("execvp %s failed: %s\n", argv[1], strerror(errno));
+ /* run post-lock command */
+ if (argc > 0) {
+ switch (fork()) {
+ case -1:
+ free(locks);
+ XCloseDisplay(dpy);
+ die("slock: fork failed: %s\n", strerror(errno));
+ case 0:
+ if (close(ConnectionNumber(dpy)) < 0)
+ die("slock: close: %s\n", strerror(errno));
+ execvp(argv[0], argv);
+ fprintf(stderr, "slock: execvp %s: %s\n", argv[0],
+ strerror(errno));
+ _exit(1);
+ }