Introduction
Introduction Statistics Contact Development Disclaimer Help
Move screen unlocking inside cleanup() - slock - simple X display locker utility
git clone git://git.suckless.org/slock
Log
Files
Refs
README
LICENSE
---
commit 39fb855aa100c5a5a8b7f3b6cc1fbb2135fe7dde
parent e378f735d857f7da124177e3540912d920be5022
Author: Quentin Rameau <[email protected]>
Date: Thu, 1 Sep 2016 13:47:05 +0200
Move screen unlocking inside cleanup()
Diffstat:
M slock.c | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
---
diff --git a/slock.c b/slock.c
@@ -234,6 +234,11 @@ unlockscreen(Display *dpy, Lock *lock)
static void
cleanup(Display *dpy)
{
+ int s;
+
+ for (s = 0; s < nscreens; ++s)
+ unlockscreen(dpy, locks[s]);
+
free(locks);
XCloseDisplay(dpy);
}
@@ -305,8 +310,6 @@ lockscreen(Display *dpy, int screen)
fprintf(stderr, "slock: unable to grab mouse pointer for scree…
if (kbgrab != GrabSuccess)
fprintf(stderr, "slock: unable to grab keyboard for screen %d\…
- running = 0;
- unlockscreen(dpy, lock);
return NULL;
}
@@ -359,19 +362,21 @@ main(int argc, char **argv) {
/* get number of screens in display "dpy" and blank them */
nscreens = ScreenCount(dpy);
- if (!(locks = malloc(sizeof(Lock *) * nscreens))) {
+ if (!(locks = calloc(nscreens, sizeof(Lock *)))) {
XCloseDisplay(dpy);
die("slock: out of memory\n");
}
for (nlocks = 0, s = 0; s < nscreens; s++) {
if ((locks[s] = lockscreen(dpy, s)) != NULL)
nlocks++;
+ else
+ break;
}
XSync(dpy, 0);
- /* did we actually manage to lock anything? */
- if (nlocks == 0) {
- /* nothing to protect */
+ /* did we manage to lock everything? */
+ if (nlocks != nscreens) {
+ running = 0;
cleanup(dpy);
return 1;
}
@@ -400,9 +405,6 @@ main(int argc, char **argv) {
#endif
/* password ok, unlock everything and quit */
- for (s = 0; s < nscreens; s++)
- unlockscreen(dpy, locks[s]);
-
cleanup(dpy);
return 0;
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.