parent
723cbabc12
commit
ab3bcac0bf
3 changed files with 59 additions and 7 deletions
@ -0,0 +1,43 @@ |
|||||||
|
/* 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 *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); |
||||||
|
} |
Loading…
Reference in new issue