| applied BSD support patch - slock - simple X display locker utility | |
| git clone git://git.suckless.org/slock | |
| Log | |
| Files | |
| Refs | |
| README | |
| LICENSE | |
| --- | |
| commit 0f1157d7e6cabe0394ffc35a0a58a30507af8ebd | |
| parent 2fa12210c9b6795f51a3227aaf417afe7f94fbce | |
| Author: Anselm R. Garbe <[email protected]> | |
| Date: Thu, 12 Oct 2006 08:11:08 +0200 | |
| applied BSD support patch | |
| Diffstat: | |
| M config.mk | 5 ++++- | |
| M slock.c | 22 +++++++++++++++++++++- | |
| 2 files changed, 25 insertions(+), 2 deletions(-) | |
| --- | |
| diff --git a/config.mk b/config.mk | |
| @@ -15,11 +15,14 @@ INCS = -I. -I/usr/include -I${X11INC} | |
| LIBS = -L/usr/lib -lc -lcrypt -L${X11LIB} -lX11 | |
| # flags | |
| -CFLAGS = -Os ${INCS} -DVERSION=\"${VERSION}\" | |
| +CFLAGS = -Os ${INCS} -DVERSION=\"${VERSION}\" -DHAVE_SHADOW_H | |
| LDFLAGS = ${LIBS} | |
| #CFLAGS = -g -Wall -O2 ${INCS} -DVERSION=\"${VERSION}\" | |
| #LDFLAGS = -g ${LIBS} | |
| +# On *BSD remove -DHAVE_SHADOW_H from CFLAGS | |
| +# On OpenBSD remove -lcrypt from LIBS | |
| + | |
| # compiler and linker | |
| CC = cc | |
| LD = ${CC} | |
| diff --git a/slock.c b/slock.c | |
| @@ -2,7 +2,13 @@ | |
| * See LICENSE file for license details. | |
| */ | |
| #define _XOPEN_SOURCE | |
| + | |
| +#if HAVE_SHADOW_H | |
| #include <shadow.h> | |
| +#else | |
| +#include <pwd.h> | |
| +#endif | |
| + | |
| #include <stdlib.h> | |
| #include <stdio.h> | |
| #include <string.h> | |
| @@ -17,7 +23,11 @@ main(int argc, char **argv) { | |
| char curs[] = {0, 0, 0, 0, 0, 0, 0, 0}; | |
| char buf[32], passwd[256]; | |
| int num, prev_nitem, screen; | |
| +#if HAVE_SHADOW_H | |
| struct spwd *sp; | |
| +#else | |
| + struct passwd *pw; | |
| +#endif | |
| unsigned int i, len; | |
| Bool running = True; | |
| Cursor invisible; | |
| @@ -33,11 +43,17 @@ main(int argc, char **argv) { | |
| fputs("slock-"VERSION", (C)opyright MMVI Anselm R. Garbe\n", s… | |
| exit(EXIT_SUCCESS); | |
| } | |
| - if(!(sp = getspnam(getenv("USER")))) { | |
| + if(geteuid() != 0) { | |
| fputs("slock: cannot retrieve password entry (make sure to sui… | |
| exit(EXIT_FAILURE); | |
| } | |
| +#if HAVE_SHADOW_H | |
| + sp = getspnam(getenv("USER")); | |
| endspent(); | |
| +#else | |
| + pw = getpwuid(getuid()); | |
| + endpwent(); | |
| +#endif | |
| if(!(dpy = XOpenDisplay(0))) { | |
| fputs("slock: cannot open display\n", stderr); | |
| exit(EXIT_FAILURE); | |
| @@ -87,7 +103,11 @@ main(int argc, char **argv) { | |
| } | |
| switch(ksym) { | |
| case XK_Return: | |
| +#if HAVE_SHADOW_H | |
| if((running = strncmp(crypt(passwd, sp->sp_pwd… | |
| +#else | |
| + if((running = strncmp(crypt(passwd, pw->pw_pas… | |
| +#endif | |
| XBell(dpy, 100); | |
| passwd[0] = 0; | |
| break; |