7 Commits
0.8 ... 0.9

Author SHA1 Message Date
Anselm R Garbe
a6a3471dd9 fix 2008-07-29 19:17:24 +01:00
Anselm R Garbe
75dd779245 prepared release 2008-07-29 19:14:53 +01:00
Anselm R Garbe
1460b14f45 removed useless chars, prepared release 2008-07-29 19:08:18 +01:00
Anselm R Garbe
c0fdcb8afc s/d// 2008-04-09 23:42:50 +01:00
Anselm R Garbe
cc36050e44 yet another DPMS fix, still trying to prevent the error handler 2008-04-09 23:42:19 +01:00
Anselm R Garbe
049ccf9a90 fixed DPMS crashing issue 2008-04-08 09:55:46 +01:00
Anselm R Garbe
4ed35d22dc Added tag 0.8 for changeset c0eb8221ba49 2008-03-13 16:59:24 +00:00
6 changed files with 37 additions and 35 deletions

View File

@@ -5,3 +5,4 @@ f9157b1864388ad8f1920e5fde7c5849e73d8327 0.3
bd24ea7fcca26b161225c464df23ecbfe85280e1 0.5 bd24ea7fcca26b161225c464df23ecbfe85280e1 0.5
dd226a81c09adfa86db232419b3000b7e406df68 0.6 dd226a81c09adfa86db232419b3000b7e406df68 0.6
c4635bb35a4581261f0187b347d5e596dd390ca3 0.7 c4635bb35a4581261f0187b347d5e596dd390ca3 0.7
c0eb8221ba49c6d10becc93c063c45196a3bb1ba 0.8

18
LICENSE
View File

@@ -6,16 +6,16 @@ Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"), copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense, the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions: Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software. all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE. DEALINGS IN THE SOFTWARE.

View File

@@ -13,7 +13,6 @@ options:
@echo "CFLAGS = ${CFLAGS}" @echo "CFLAGS = ${CFLAGS}"
@echo "LDFLAGS = ${LDFLAGS}" @echo "LDFLAGS = ${LDFLAGS}"
@echo "CC = ${CC}" @echo "CC = ${CC}"
@echo "LD = ${LD}"
.c.o: .c.o:
@echo CC $< @echo CC $<
@@ -22,9 +21,8 @@ options:
${OBJ}: config.mk ${OBJ}: config.mk
slock: ${OBJ} slock: ${OBJ}
@echo LD $@ @echo CC -o $@
@${LD} -o $@ ${OBJ} ${LDFLAGS} @${CC} -o $@ ${OBJ} ${LDFLAGS}
@strip $@
clean: clean:
@echo cleaning @echo cleaning

4
README
View File

@@ -13,8 +13,8 @@ Installation
Edit config.mk to match your local setup (slock is installed into Edit config.mk to match your local setup (slock is installed into
the /usr/local namespace by default). the /usr/local namespace by default).
Afterwards enter the following command to build and install slock (if Afterwards enter the following command to build and install slock
necessary as root): (if necessary as root):
make clean install make clean install

View File

@@ -1,5 +1,5 @@
# slock version # slock version
VERSION = 0.8 VERSION = 0.9
# Customize below to fit your system # Customize below to fit your system
@@ -14,17 +14,15 @@ INCS = -I. -I/usr/include -I${X11INC}
LIBS = -L/usr/lib -lc -lcrypt -L${X11LIB} -lX11 -lXext LIBS = -L/usr/lib -lc -lcrypt -L${X11LIB} -lX11 -lXext
# flags # flags
CFLAGS = -Os ${INCS} -DVERSION=\"${VERSION}\" -DHAVE_SHADOW_H CPPFLAGS = -DVERSION=\"${VERSION}\" -DHAVE_SHADOW_H
LDFLAGS = ${LIBS} CFLAGS = -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS}
#CFLAGS = -g -Wall -O2 ${INCS} -DVERSION=\"${VERSION}\" -DHAVE_SHADOW_H LDFLAGS = -s ${LIBS}
#LDFLAGS = -g ${LIBS}
# On *BSD remove -DHAVE_SHADOW_H from CFLAGS and add -DHAVE_BSD_AUTH # On *BSD remove -DHAVE_SHADOW_H from CPPFLAGS and add -DHAVE_BSD_AUTH
# On OpenBSD and Darwin remove -lcrypt from LIBS # On OpenBSD and Darwin remove -lcrypt from LIBS
# compiler and linker # compiler and linker
CC = cc CC = cc
LD = ${CC}
# Install mode. On BSD systems MODE=2755 and GROUP=auth # Install mode. On BSD systems MODE=2755 and GROUP=auth
# On others MODE=4755 and GROUP=root # On others MODE=4755 and GROUP=root

31
slock.c
View File

@@ -1,5 +1,4 @@
/* © 2006-2008 Anselm R Garbe <garbeam at gmail dot com> /* See LICENSE file for license details. */
* See LICENSE file for license details. */
#define _XOPEN_SOURCE 500 #define _XOPEN_SOURCE 500
#if HAVE_SHADOW_H #if HAVE_SHADOW_H
#include <shadow.h> #include <shadow.h>
@@ -23,8 +22,8 @@
#include <bsd_auth.h> #include <bsd_auth.h>
#endif #endif
void static void
eprint(const char *errstr, ...) { die(const char *errstr, ...) {
va_list ap; va_list ap;
va_start(ap, errstr); va_start(ap, errstr);
@@ -34,13 +33,13 @@ eprint(const char *errstr, ...) {
} }
#ifndef HAVE_BSD_AUTH #ifndef HAVE_BSD_AUTH
const char * static const char *
get_password() { /* only run as root */ get_password() { /* only run as root */
const char *rval; const char *rval;
struct passwd *pw; struct passwd *pw;
if(geteuid() != 0) if(geteuid() != 0)
eprint("slock: cannot retrieve password entry (make sure to suid slock)\n"); die("slock: cannot retrieve password entry (make sure to suid slock)\n");
pw = getpwuid(getuid()); pw = getpwuid(getuid());
endpwent(); endpwent();
rval = pw->pw_passwd; rval = pw->pw_passwd;
@@ -56,7 +55,7 @@ get_password() { /* only run as root */
/* drop privileges */ /* drop privileges */
if(setgid(pw->pw_gid) < 0 || setuid(pw->pw_uid) < 0) if(setgid(pw->pw_gid) < 0 || setuid(pw->pw_uid) < 0)
eprint("slock: cannot drop privileges\n"); die("slock: cannot drop privileges\n");
return rval; return rval;
} }
#endif #endif
@@ -82,16 +81,16 @@ main(int argc, char **argv) {
XSetWindowAttributes wa; XSetWindowAttributes wa;
if((argc == 2) && !strcmp("-v", argv[1])) if((argc == 2) && !strcmp("-v", argv[1]))
eprint("slock-"VERSION", © 2006-2008 Anselm R Garbe\n"); die("slock-"VERSION", © 2006-2008 Anselm R Garbe\n");
else if(argc != 1) else if(argc != 1)
eprint("usage: slock [-v]\n"); die("usage: slock [-v]\n");
#ifndef HAVE_BSD_AUTH #ifndef HAVE_BSD_AUTH
pws = get_password(); pws = get_password();
#endif #endif
if(!(dpy = XOpenDisplay(0))) if(!(dpy = XOpenDisplay(0)))
eprint("slock: cannot open display\n"); die("slock: cannot open display\n");
screen = DefaultScreen(dpy); screen = DefaultScreen(dpy);
root = RootWindow(dpy, screen); root = RootWindow(dpy, screen);
@@ -126,11 +125,19 @@ main(int argc, char **argv) {
/* main event loop */ /* main event loop */
while(running && !XNextEvent(dpy, &ev)) { while(running && !XNextEvent(dpy, &ev)) {
if(len == 0) if(len == 0 && DPMSCapable(dpy)) {
DPMSEnable(dpy);
DPMSForceLevel(dpy, DPMSModeOff); DPMSForceLevel(dpy, DPMSModeOff);
}
if(ev.type == KeyPress) { if(ev.type == KeyPress) {
buf[0] = 0; buf[0] = 0;
num = XLookupString(&ev.xkey, buf, sizeof buf, &ksym, 0); num = XLookupString(&ev.xkey, buf, sizeof buf, &ksym, 0);
if(IsKeypadKey(ksym)) {
if(ksym == XK_KP_Enter)
ksym = XK_Return;
else if(ksym >= XK_KP_0 && ksym <= XK_KP_9)
ksym = (ksym - XK_KP_0) + XK_0;
}
if(IsFunctionKey(ksym) || IsKeypadKey(ksym) if(IsFunctionKey(ksym) || IsKeypadKey(ksym)
|| IsMiscFunctionKey(ksym) || IsPFKey(ksym) || IsMiscFunctionKey(ksym) || IsPFKey(ksym)
|| IsPrivateKeypadKey(ksym)) || IsPrivateKeypadKey(ksym))
@@ -138,13 +145,11 @@ main(int argc, char **argv) {
switch(ksym) { switch(ksym) {
case XK_Return: case XK_Return:
passwd[len] = 0; passwd[len] = 0;
#ifdef HAVE_BSD_AUTH #ifdef HAVE_BSD_AUTH
running = !auth_userokay(getlogin(), NULL, "auth-xlock", passwd); running = !auth_userokay(getlogin(), NULL, "auth-xlock", passwd);
#else #else
running = strcmp(crypt(passwd, pws), pws); running = strcmp(crypt(passwd, pws), pws);
#endif #endif
if (running != 0) if (running != 0)
XBell(dpy, 100); XBell(dpy, 100);
len = 0; len = 0;