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-13-gbd6f From eadf090413c530e69e8568492ebeb4b4087bd2ad Mon Sep 17 00:00:00 2001 From: Connor Lane Smith Date: Mon, 13 Jun 2011 21:50:31 +0100 Subject: new dmenu_run --- lsx.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'lsx.c') diff --git a/lsx.c b/lsx.c index 7b84acc..325c508 100644 --- a/lsx.c +++ b/lsx.c @@ -6,7 +6,7 @@ #include #include -static void lsx(const char *s); +static void lsx(const char *dir); int main(int argc, char *argv[]) { @@ -34,9 +34,7 @@ lsx(const char *dir) { } 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) + if(stat(buf, &st) == 0 && S_ISREG(st.st_mode) && access(buf, X_OK) == 0) puts(d->d_name); } closedir(dp); -- cgit v1.2.3-13-gbd6f From 86e9e6f1ecc4711d8fe447f5c0f2c1bd0feb8568 Mon Sep 17 00:00:00 2001 From: Connor Lane Smith Date: Sat, 18 Jun 2011 07:50:46 +0100 Subject: simpler lsx --- lsx.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'lsx.c') diff --git a/lsx.c b/lsx.c index 325c508..fd28625 100644 --- a/lsx.c +++ b/lsx.c @@ -14,8 +14,6 @@ main(int argc, char *argv[]) { 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; @@ -34,7 +32,7 @@ lsx(const char *dir) { } while((d = readdir(dp))) { snprintf(buf, sizeof buf, "%s/%s", dir, d->d_name); - if(stat(buf, &st) == 0 && S_ISREG(st.st_mode) && access(buf, X_OK) == 0) + if(!stat(buf, &st) && S_ISREG(st.st_mode) && access(buf, X_OK) == 0) puts(d->d_name); } closedir(dp); -- cgit v1.2.3-13-gbd6f From 88d44169e9ea6c208412691c5767edca32718472 Mon Sep 17 00:00:00 2001 From: Connor Lane Smith Date: Thu, 23 Jun 2011 20:04:50 +0100 Subject: lsx: check snprintf --- lsx.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'lsx.c') diff --git a/lsx.c b/lsx.c index fd28625..e5b5c0b 100644 --- a/lsx.c +++ b/lsx.c @@ -30,10 +30,9 @@ lsx(const char *dir) { perror(dir); return; } - while((d = readdir(dp))) { - snprintf(buf, sizeof buf, "%s/%s", dir, d->d_name); - if(!stat(buf, &st) && S_ISREG(st.st_mode) && access(buf, X_OK) == 0) + while((d = readdir(dp))) + if(snprintf(buf, sizeof buf, "%s/%s", dir, d->d_name) < sizeof buf + && !stat(buf, &st) && S_ISREG(st.st_mode) && access(buf, X_OK) == 0) puts(d->d_name); - } closedir(dp); } -- cgit v1.2.3-13-gbd6f