From ab3bcac0bf42c1e63367a0f319a66524d5acdfe3 Mon Sep 17 00:00:00 2001 From: Connor Lane Smith Date: Mon, 13 Jun 2011 19:28:30 +0100 Subject: new lsx branch --- lsx.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 lsx.c (limited to 'lsx.c') diff --git a/lsx.c b/lsx.c new file mode 100644 index 0000000..7b84acc --- /dev/null +++ b/lsx.c @@ -0,0 +1,43 @@ +/* See LICENSE file for copyright and license details. */ +#include +#include +#include +#include +#include +#include + +static void lsx(const char *s); + +int +main(int argc, char *argv[]) { + int i; + + if(argc < 2) + lsx("."); + else if(!strcmp(argv[1], "-v")) + puts("lsx-0.2, © 2006-2011 dmenu engineers, see LICENSE for details"); + else for(i = 1; i < argc; i++) + lsx(argv[i]); + return EXIT_SUCCESS; +} + +void +lsx(const char *dir) { + char buf[PATH_MAX]; + struct dirent *d; + struct stat st; + DIR *dp; + + if(!(dp = opendir(dir))) { + perror(dir); + return; + } + while((d = readdir(dp))) { + snprintf(buf, sizeof buf, "%s/%s", dir, d->d_name); + if(stat(buf, &st) == -1) + perror(buf); + else if(S_ISREG(st.st_mode) && access(buf, X_OK) == 0) + puts(d->d_name); + } + closedir(dp); +} -- cgit v1.2.3