Xinqi Bao's Git
projects
/
slock.git
/ diff
summary
|
log
|
commit
|
diff
|
tree
raw
|
patch
|
inline
| side by side (parent:
4b4fcca
)
applied andres' multi-slock fix, thanks for spotting this issue
author
[email protected]
<unknown>
Thu, 2 Aug 2012 19:54:18 +0000
(21:54 +0200)
committer
[email protected]
<unknown>
Thu, 2 Aug 2012 19:54:18 +0000
(21:54 +0200)
slock.c
diff
|
blob
|
history
diff --git
a/slock.c
b/slock.c
index
320ed2b
..
154a091
100644
(file)
--- a/
slock.c
+++ b/
slock.c
@@
-1,3
+1,4
@@
+
/* See LICENSE file for license details. */
#define _XOPEN_SOURCE 500
#if HAVE_SHADOW_H
/* See LICENSE file for license details. */
#define _XOPEN_SOURCE 500
#if HAVE_SHADOW_H
@@
-211,9
+212,9
@@
lockscreen(Display *dpy, int screen) {
break;
usleep(1000);
}
break;
usleep(1000);
}
- running = (len > 0);
}
}
+ running &= (len > 0);
if(!running) {
unlockscreen(dpy, lock);
lock = NULL;
if(!running) {
unlockscreen(dpy, lock);
lock = NULL;
@@
-257,10
+258,20
@@
main(int argc, char **argv) {
locks = malloc(sizeof(Lock *) * nscreens);
if(locks == NULL)
die("slock: malloc: %s", strerror(errno));
locks = malloc(sizeof(Lock *) * nscreens);
if(locks == NULL)
die("slock: malloc: %s", strerror(errno));
- for(screen = 0; screen < nscreens; screen++)
- locks[screen] = lockscreen(dpy, screen);
+ int nlocks = 0;
+ for(screen = 0; screen < nscreens; screen++) {
+ if ( (locks[screen] = lockscreen(dpy, screen)) != NULL)
+ nlocks++;
+ }
XSync(dpy, False);
XSync(dpy, False);
+ /* Did we actually manage to lock something? */
+ if (nlocks == 0) { // nothing to protect
+ free(locks);
+ XCloseDisplay(dpy);
+ return 1;
+ }
+
/* Everything is now blank. Now wait for the correct password. */
#ifdef HAVE_BSD_AUTH
readpw(dpy);
/* Everything is now blank. Now wait for the correct password. */
#ifdef HAVE_BSD_AUTH
readpw(dpy);