diff options
author | Connor Lane Smith | 2011-06-23 20:27:28 +0100 |
---|---|---|
committer | Connor Lane Smith | 2011-06-23 20:27:28 +0100 |
commit | 49672e9d05540fdde14af64723f2f861918031d4 (patch) | |
tree | 7db74351d23db0b1fa057a51f0afaf2c11cc40e9 /lsx.c | |
parent | f7cbe710a266448122d89a02b8ba8c70423fc750 (diff) | |
parent | 07d452e0c8b158e571fb0adf528897829850ecf5 (diff) |
merge lsx -> default
Diffstat (limited to 'lsx.c')
-rw-r--r-- | lsx.c | 38 |
1 files changed, 38 insertions, 0 deletions
@@ -0,0 +1,38 @@ +/* See LICENSE file for copyright and license details. */ +#include <dirent.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <sys/stat.h> + +static void lsx(const char *dir); + +int +main(int argc, char *argv[]) { + int i; + + if(argc < 2) + lsx("."); + 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))) + 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); +} |