tweaks
[dmenu.git] / lsx.c
diff --git a/lsx.c b/lsx.c
index fd28625..f337a4a 100644 (file)
--- a/lsx.c
+++ b/lsx.c
@@ -1,8 +1,8 @@
 /* See LICENSE file for copyright and license details. */
 #include <dirent.h>
+#include <limits.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <string.h>
 #include <unistd.h>
 #include <sys/stat.h>
 
@@ -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) < (int)sizeof buf
+               && !stat(buf, &st) && S_ISREG(st.st_mode) && access(buf, X_OK) == 0)
                        puts(d->d_name);
-       }
        closedir(dp);
 }