Keep the line-lengths at bay - slock - simple X display locker utility | |
git clone git://git.suckless.org/slock | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 0a43b78d00ebac574376ffd93223a751e21e265e | |
parent bd069b08c5fe4fea3c78f6991a849b19ed40cbe0 | |
Author: FRIGN <[email protected]> | |
Date: Sat, 1 Oct 2016 23:50:49 +0200 | |
Keep the line-lengths at bay | |
This makes the code more readable and prevents wraparounds in the | |
editor. | |
Diffstat: | |
M slock.c | 70 +++++++++++++++++++----------… | |
1 file changed, 42 insertions(+), 28 deletions(-) | |
--- | |
diff --git a/slock.c b/slock.c | |
@@ -76,10 +76,9 @@ dontkillme(void) | |
if (fclose(f)) { | |
if (errno == EACCES) | |
die("slock: unable to disable OOM killer. " | |
- "suid or sgid set?\n"); | |
+ "Make sure to suid or sgid slock.\n"); | |
else | |
- die("slock: fclose %s: %s\n", oomfile, | |
- strerror(errno)); | |
+ die("slock: fclose %s: %s\n", oomfile, strerror(errno)… | |
} | |
} | |
#endif | |
@@ -104,17 +103,20 @@ gethash(void) | |
if (hash[0] == 'x' && hash[1] == '\0') { | |
struct spwd *sp; | |
if (!(sp = getspnam(pw->pw_name))) | |
- die("slock: getspnam: cannot retrieve shadow entry (ma… | |
+ die("slock: getspnam: cannot retrieve shadow entry. " | |
+ "Make sure to suid or sgid slock.\n"); | |
hash = sp->sp_pwdp; | |
} | |
#else | |
if (hash[0] == '*' && hash[1] == '\0') { | |
#ifdef __OpenBSD__ | |
if (!(pw = getpwuid_shadow(getuid()))) | |
- die("slock: getpwnam_shadow: cannot retrieve shadow en… | |
+ die("slock: getpwnam_shadow: cannot retrieve shadow en… | |
+ "Make sure to suid or sgid slock.\n"); | |
hash = pw->pw_passwd; | |
#else | |
- die("slock: getpwuid: cannot retrieve shadow entry (make sure … | |
+ die("slock: getpwuid: cannot retrieve shadow entry. " | |
+ "Make sure to suid or sgid slock.\n"); | |
#endif /* __OpenBSD__ */ | |
} | |
#endif /* HAVE_SHADOW_H */ | |
@@ -126,6 +128,7 @@ static void | |
readpw(Display *dpy, struct xrandr *rr, struct lock **locks, int nscreens, | |
const char *hash) | |
{ | |
+ XRRScreenChangeNotifyEvent *rre; | |
char buf[32], passwd[256], *inputhash; | |
int num, screen, running, failure; | |
unsigned int len, color; | |
@@ -177,25 +180,29 @@ readpw(Display *dpy, struct xrandr *rr, struct lock **loc… | |
passwd[len--] = 0; | |
break; | |
default: | |
- if (num && !iscntrl((int)buf[0]) && (len + num… | |
+ if (num && !iscntrl((int)buf[0]) && | |
+ (len + num < sizeof(passwd))) { | |
memcpy(passwd + len, buf, num); | |
len += num; | |
} | |
break; | |
} | |
- color = len ? INPUT : (failure || failonclear ? FAILED… | |
+ color = len ? INPUT : ((failure || failonclear) ? FAIL… | |
if (running && oldc != color) { | |
for (screen = 0; screen < nscreens; screen++) { | |
- XSetWindowBackground(dpy, locks[screen… | |
+ XSetWindowBackground(dpy, | |
+ locks[screen]->wi… | |
+ locks[screen]->co… | |
XClearWindow(dpy, locks[screen]->win); | |
} | |
oldc = color; | |
} | |
} else if (rr->active && ev.type == rr->evbase + RRScreenChang… | |
- XRRScreenChangeNotifyEvent *rre = (XRRScreenChangeNoti… | |
+ rre = (XRRScreenChangeNotifyEvent*)&ev; | |
for (screen = 0; screen < nscreens; screen++) { | |
if (locks[screen]->win == rre->window) { | |
- XResizeWindow(dpy, locks[screen]->win,… | |
+ XResizeWindow(dpy, locks[screen]->win, | |
+ rre->width, rre->height); | |
XClearWindow(dpy, locks[screen]->win); | |
} | |
} | |
@@ -221,31 +228,37 @@ lockscreen(Display *dpy, struct xrandr *rr, int screen) | |
lock->root = RootWindow(dpy, lock->screen); | |
for (i = 0; i < NUMCOLS; i++) { | |
- XAllocNamedColor(dpy, DefaultColormap(dpy, lock->screen), colo… | |
+ XAllocNamedColor(dpy, DefaultColormap(dpy, lock->screen), | |
+ colorname[i], &color, &dummy); | |
lock->colors[i] = color.pixel; | |
} | |
/* init */ | |
wa.override_redirect = 1; | |
wa.background_pixel = lock->colors[INIT]; | |
- lock->win = XCreateWindow(dpy, lock->root, 0, 0, DisplayWidth(dpy, loc… | |
- 0, DefaultDepth(dpy, lock->screen), CopyFrom… | |
- DefaultVisual(dpy, lock->screen), CWOverride… | |
+ lock->win = XCreateWindow(dpy, lock->root, 0, 0, | |
+ DisplayWidth(dpy, lock->screen), | |
+ DisplayHeight(dpy, lock->screen), | |
+ 0, DefaultDepth(dpy, lock->screen), | |
+ CopyFromParent, | |
+ DefaultVisual(dpy, lock->screen), | |
+ CWOverrideRedirect | CWBackPixel, &wa); | |
lock->pmap = XCreateBitmapFromData(dpy, lock->win, curs, 8, 8); | |
- invisible = XCreatePixmapCursor(dpy, lock->pmap, lock->pmap, &color, &… | |
+ invisible = XCreatePixmapCursor(dpy, lock->pmap, lock->pmap, | |
+ &color, &color, 0, 0); | |
XDefineCursor(dpy, lock->win, invisible); | |
/* Try to grab mouse pointer *and* keyboard for 600ms, else fail the l… | |
for (i = 0, ptgrab = kbgrab = -1; i < 6; i++) { | |
if (ptgrab != GrabSuccess) { | |
ptgrab = XGrabPointer(dpy, lock->root, False, | |
- ButtonPressMask | ButtonReleaseMask | | |
- PointerMotionMask, GrabModeAsync, | |
- GrabModeAsync, None, invisible, CurrentTime); | |
+ ButtonPressMask | ButtonReleaseM… | |
+ PointerMotionMask, GrabModeAsync, | |
+ GrabModeAsync, None, invisible, … | |
} | |
if (kbgrab != GrabSuccess) { | |
kbgrab = XGrabKeyboard(dpy, lock->root, True, | |
- GrabModeAsync, GrabModeAsync, CurrentTime); | |
+ GrabModeAsync, GrabModeAsync, C… | |
} | |
/* input is grabbed: we can lock the screen */ | |
@@ -268,9 +281,11 @@ lockscreen(Display *dpy, struct xrandr *rr, int screen) | |
/* we couldn't grab all input: fail out */ | |
if (ptgrab != GrabSuccess) | |
- fprintf(stderr, "slock: unable to grab mouse pointer for scree… | |
+ fprintf(stderr, "slock: unable to grab mouse pointer for scree… | |
+ screen); | |
if (kbgrab != GrabSuccess) | |
- fprintf(stderr, "slock: unable to grab keyboard for screen %d\… | |
+ fprintf(stderr, "slock: unable to grab keyboard for screen %d\… | |
+ screen); | |
return NULL; | |
} | |
@@ -303,13 +318,13 @@ main(int argc, char **argv) { | |
/* validate drop-user and -group */ | |
errno = 0; | |
if (!(pwd = getpwnam(user))) | |
- die("slock: getpwnam %s: %s\n", user, errno ? | |
- strerror(errno) : "user entry not found"); | |
+ die("slock: getpwnam %s: %s\n", user, | |
+ errno ? strerror(errno) : "user entry not found"); | |
duid = pwd->pw_uid; | |
errno = 0; | |
if (!(grp = getgrnam(group))) | |
- die("slock: getgrnam %s: %s\n", group, errno ? | |
- strerror(errno) : "group entry not found"); | |
+ die("slock: getgrnam %s: %s\n", group, | |
+ errno ? strerror(errno) : "group entry not found"); | |
dgid = grp->gr_gid; | |
#ifdef __linux__ | |
@@ -360,8 +375,7 @@ main(int argc, char **argv) { | |
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)); | |
+ fprintf(stderr, "slock: execvp %s: %s\n", argv[0], str… | |
_exit(1); | |
} | |
} |