diff options
| -rw-r--r-- | Makefile | 21 | ||||
| -rwxr-xr-x | dmenu_path | 2 | ||||
| -rw-r--r-- | lsx.c | 43 |
3 files changed, 59 insertions, 7 deletions
| @@ -3,10 +3,10 @@ | |||
| 3 | 3 | ||
| 4 | include config.mk | 4 | include config.mk |
| 5 | 5 | ||
| 6 | SRC = dmenu.c draw.c | 6 | SRC = dmenu.c draw.c lsx.c |
| 7 | OBJ = ${SRC:.c=.o} | 7 | OBJ = ${SRC:.c=.o} |
| 8 | 8 | ||
| 9 | all: options dmenu | 9 | all: options dmenu lsx |
| 10 | 10 | ||
| 11 | options: | 11 | options: |
| 12 | @echo dmenu build options: | 12 | @echo dmenu build options: |
| @@ -20,9 +20,13 @@ options: | |||
| 20 | 20 | ||
| 21 | ${OBJ}: config.mk | 21 | ${OBJ}: config.mk |
| 22 | 22 | ||
| 23 | dmenu: ${OBJ} | 23 | dmenu: dmenu.o draw.o |
| 24 | @echo CC -o $@ | 24 | @echo CC -o $@ |
| 25 | @${CC} -o $@ ${OBJ} ${LDFLAGS} | 25 | @${CC} -o $@ dmenu.o draw.o ${LDFLAGS} |
| 26 | |||
| 27 | lsx: lsx.o | ||
| 28 | @echo CC -o $@ | ||
| 29 | @${CC} -o $@ lsx.o ${LDFLAGS} | ||
| 26 | 30 | ||
| 27 | clean: | 31 | clean: |
| 28 | @echo cleaning | 32 | @echo cleaning |
| @@ -39,21 +43,26 @@ dist: clean | |||
| 39 | install: all | 43 | install: all |
| 40 | @echo installing executables to ${DESTDIR}${PREFIX}/bin | 44 | @echo installing executables to ${DESTDIR}${PREFIX}/bin |
| 41 | @mkdir -p ${DESTDIR}${PREFIX}/bin | 45 | @mkdir -p ${DESTDIR}${PREFIX}/bin |
| 42 | @cp -f dmenu dmenu_path dmenu_run ${DESTDIR}${PREFIX}/bin | 46 | @cp -f dmenu dmenu_path dmenu_run lsx ${DESTDIR}${PREFIX}/bin |
| 43 | @chmod 755 ${DESTDIR}${PREFIX}/bin/dmenu | 47 | @chmod 755 ${DESTDIR}${PREFIX}/bin/dmenu |
| 44 | @chmod 755 ${DESTDIR}${PREFIX}/bin/dmenu_path | 48 | @chmod 755 ${DESTDIR}${PREFIX}/bin/dmenu_path |
| 45 | @chmod 755 ${DESTDIR}${PREFIX}/bin/dmenu_run | 49 | @chmod 755 ${DESTDIR}${PREFIX}/bin/dmenu_run |
| 46 | @echo installing manual page to ${DESTDIR}${MANPREFIX}/man1 | 50 | @chmod 755 ${DESTDIR}${PREFIX}/bin/lsx |
| 51 | @echo installing manual pages to ${DESTDIR}${MANPREFIX}/man1 | ||
| 47 | @mkdir -p ${DESTDIR}${MANPREFIX}/man1 | 52 | @mkdir -p ${DESTDIR}${MANPREFIX}/man1 |
| 48 | @sed "s/VERSION/${VERSION}/g" < dmenu.1 > ${DESTDIR}${MANPREFIX}/man1/dmenu.1 | 53 | @sed "s/VERSION/${VERSION}/g" < dmenu.1 > ${DESTDIR}${MANPREFIX}/man1/dmenu.1 |
| 54 | @sed "s/VERSION/${VERSION}/g" < lsx.1 > ${DESTDIR}${MANPREFIX}/man1/lsx.1 | ||
| 49 | @chmod 644 ${DESTDIR}${MANPREFIX}/man1/dmenu.1 | 55 | @chmod 644 ${DESTDIR}${MANPREFIX}/man1/dmenu.1 |
| 56 | @chmod 644 ${DESTDIR}${MANPREFIX}/man1/lsx.1 | ||
| 50 | 57 | ||
| 51 | uninstall: | 58 | uninstall: |
| 52 | @echo removing executables from ${DESTDIR}${PREFIX}/bin | 59 | @echo removing executables from ${DESTDIR}${PREFIX}/bin |
| 53 | @rm -f ${DESTDIR}${PREFIX}/bin/dmenu | 60 | @rm -f ${DESTDIR}${PREFIX}/bin/dmenu |
| 54 | @rm -f ${DESTDIR}${PREFIX}/bin/dmenu_path | 61 | @rm -f ${DESTDIR}${PREFIX}/bin/dmenu_path |
| 55 | @rm -f ${DESTDIR}${PREFIX}/bin/dmenu_run | 62 | @rm -f ${DESTDIR}${PREFIX}/bin/dmenu_run |
| 63 | @rm -f ${DESTDIR}${PREFIX}/bin/lsx | ||
| 56 | @echo removing manual page from ${DESTDIR}${MANPREFIX}/man1 | 64 | @echo removing manual page from ${DESTDIR}${MANPREFIX}/man1 |
| 57 | @rm -f ${DESTDIR}${MANPREFIX}/man1/dmenu.1 | 65 | @rm -f ${DESTDIR}${MANPREFIX}/man1/dmenu.1 |
| 66 | @rm -f ${DESTDIR}${MANPREFIX}/man1/lsx.1 | ||
| 58 | 67 | ||
| 59 | .PHONY: all options clean dist install uninstall | 68 | .PHONY: all options clean dist install uninstall |
| @@ -3,7 +3,7 @@ CACHE=$HOME/.dmenu_cache | |||
| 3 | IFS=: | 3 | IFS=: |
| 4 | 4 | ||
| 5 | if ! test -f "$CACHE" || find $PATH -type d -newer "$CACHE" | grep -q .; then | 5 | if ! test -f "$CACHE" || find $PATH -type d -newer "$CACHE" | grep -q .; then |
| 6 | find $PATH ! -type d \( -perm -1 -o -perm -10 -o -perm -100 \) | sed 's/.*\///' | sort -u > "$CACHE" | 6 | lsx $PATH | sort -u > "$CACHE" |
| 7 | fi | 7 | fi |
| 8 | 8 | ||
| 9 | cat "$CACHE" | 9 | cat "$CACHE" |
| @@ -0,0 +1,43 @@ | |||
| 1 | /* See LICENSE file for copyright and license details. */ | ||
| 2 | #include <dirent.h> | ||
| 3 | #include <stdio.h> | ||
| 4 | #include <stdlib.h> | ||
| 5 | #include <string.h> | ||
| 6 | #include <unistd.h> | ||
| 7 | #include <sys/stat.h> | ||
| 8 | |||
| 9 | static void lsx(const char *s); | ||
| 10 | |||
| 11 | int | ||
| 12 | main(int argc, char *argv[]) { | ||
| 13 | int i; | ||
| 14 | |||
| 15 | if(argc < 2) | ||
| 16 | lsx("."); | ||
| 17 | else if(!strcmp(argv[1], "-v")) | ||
| 18 | puts("lsx-0.2, © 2006-2011 dmenu engineers, see LICENSE for details"); | ||
| 19 | else for(i = 1; i < argc; i++) | ||
| 20 | lsx(argv[i]); | ||
| 21 | return EXIT_SUCCESS; | ||
| 22 | } | ||
| 23 | |||
| 24 | void | ||
| 25 | lsx(const char *dir) { | ||
| 26 | char buf[PATH_MAX]; | ||
| 27 | struct dirent *d; | ||
| 28 | struct stat st; | ||
| 29 | DIR *dp; | ||
| 30 | |||
| 31 | if(!(dp = opendir(dir))) { | ||
| 32 | perror(dir); | ||
| 33 | return; | ||
| 34 | } | ||
| 35 | while((d = readdir(dp))) { | ||
| 36 | snprintf(buf, sizeof buf, "%s/%s", dir, d->d_name); | ||
| 37 | if(stat(buf, &st) == -1) | ||
| 38 | perror(buf); | ||
| 39 | else if(S_ISREG(st.st_mode) && access(buf, X_OK) == 0) | ||
| 40 | puts(d->d_name); | ||
| 41 | } | ||
| 42 | closedir(dp); | ||
| 43 | } | ||
