~ob/slock

d276b9b0e01ea086e48ea8327efa0f9ebddca621 — garbeam@gmail.com 9 years ago 4b4fcca
applied andres' multi-slock fix, thanks for spotting this issue
1 files changed, 14 insertions(+), 3 deletions(-)

M slock.c
M slock.c => slock.c +14 -3
@@ 1,3 1,4 @@

/* 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);
		}
		running = (len > 0);
	}

	running &= (len > 0);
	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));
	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);

	/* 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);