aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--slock.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/slock.c b/slock.c
index 320ed2b..154a091 100644
--- a/slock.c
+++ b/slock.c
@@ -1,3 +1,4 @@
1
1/* See LICENSE file for license details. */ 2/* See LICENSE file for license details. */
2#define _XOPEN_SOURCE 500 3#define _XOPEN_SOURCE 500
3#if HAVE_SHADOW_H 4#if HAVE_SHADOW_H
@@ -211,9 +212,9 @@ lockscreen(Display *dpy, int screen) {
211 break; 212 break;
212 usleep(1000); 213 usleep(1000);
213 } 214 }
214 running = (len > 0);
215 } 215 }
216 216
217 running &= (len > 0);
217 if(!running) { 218 if(!running) {
218 unlockscreen(dpy, lock); 219 unlockscreen(dpy, lock);
219 lock = NULL; 220 lock = NULL;
@@ -257,10 +258,20 @@ main(int argc, char **argv) {
257 locks = malloc(sizeof(Lock *) * nscreens); 258 locks = malloc(sizeof(Lock *) * nscreens);
258 if(locks == NULL) 259 if(locks == NULL)
259 die("slock: malloc: %s", strerror(errno)); 260 die("slock: malloc: %s", strerror(errno));
260 for(screen = 0; screen < nscreens; screen++) 261 int nlocks = 0;
261 locks[screen] = lockscreen(dpy, screen); 262 for(screen = 0; screen < nscreens; screen++) {
263 if ( (locks[screen] = lockscreen(dpy, screen)) != NULL)
264 nlocks++;
265 }
262 XSync(dpy, False); 266 XSync(dpy, False);
263 267
268 /* Did we actually manage to lock something? */
269 if (nlocks == 0) { // nothing to protect
270 free(locks);
271 XCloseDisplay(dpy);
272 return 1;
273 }
274
264 /* Everything is now blank. Now wait for the correct password. */ 275 /* Everything is now blank. Now wait for the correct password. */
265#ifdef HAVE_BSD_AUTH 276#ifdef HAVE_BSD_AUTH
266 readpw(dpy); 277 readpw(dpy);