This makes lsx a bit more usable.

Signed-off-by: Petr Sabata <psab...@redhat.com>
---
 lsx.c |   38 +++++++++++++++++++++++---------------
 1 files changed, 23 insertions(+), 15 deletions(-)

diff --git a/lsx.c b/lsx.c
index 5060b9c..7fa5e35 100644
--- a/lsx.c
+++ b/lsx.c
@@ -8,28 +8,36 @@
 #include <unistd.h>
 #include <sys/stat.h>
 
-int
-main(int argc, char *argv[]) {
-       int i;
+void
+lsx(char *dirpath) {
        struct dirent *dp;
        struct stat s;
        DIR *dir;
 
+       if((dir = opendir(dirpath))) {
+               fchdir(dirfd(dir));
+               do
+                       if((dp = readdir(dir))
+                               && (stat(dp->d_name, &s) != -1)
+                               && S_ISREG (s.st_mode)
+                               && !access(dp->d_name, X_OK))
+                               puts(dp->d_name);
+               while(dp);
+               closedir(dir);
+       }
+}
+
+int
+main(int argc, char *argv[]) {
+       int i;
+
        if((argc > 1) && !strncmp(argv[1], "-v", 3)) {
                fputs("lsx-"VERSION", (C)opyright MMVI Anselm R. Garbe\n", 
stdout);
                exit(EXIT_SUCCESS);
        }
-       for(i = 0; i < argc; i++)
-               if((dir = opendir(argv[i]))) {
-                       fchdir(dirfd(dir));
-                       do
-                               if((dp = readdir(dir))
-                                       && (stat(dp->d_name, &s) != -1)
-                                       && S_ISREG (s.st_mode)
-                                       && !access(dp->d_name, X_OK))
-                                       puts(dp->d_name);
-                       while(dp);
-                       closedir(dir);
-               }
+       if (argc == 1)
+               lsx(".");
+       for(i = 1; i < argc; i++)
+               lsx(argv[i]);
        return 0;
 }
-- 
1.7.4.4


Reply via email to