diff --git a/listFiles.c b/listFiles.c
index a75c7f4591a2c8d11492b516080d46732a999094..8d3684d6e15307ca0e94e27f572a0fe35decbb60 100644
--- a/listFiles.c
+++ b/listFiles.c
@@ -2,18 +2,36 @@
 #include <dirent.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <sys/stat.h>
+#include <string.h>
+
+#define BASEDIR "."
+
+int filter(const struct dirent *dir) {
+    if(dir->d_name[0] == '.') {
+        return 0;//filter out .files
+    }
+    struct stat st;
+    char name[strlen(BASEDIR) + strlen(dir->d_name)];
+    sprintf(name, "%s/%s", BASEDIR, dir->d_name);
+    if(stat(name, &st) == -1) die("stat");//lstat don't folow symlinks
+    if(S_ISREG(st.st_mode)) {
+        return 1;
+    }
+    return 0;
+}
+
 /** list files
  */
 static void listDir(){
-    const char *dirp = ".";
     struct dirent **namelist; //array of dirents
-    int n = scandir(dirp, &namelist, NULL, alphasort);
+    int n = scandir(BASEDIR, &namelist, filter, alphasort);//filter oder NULL
     if (n == -1) {
         die("scandir");
     }
 
     while (n--) {
-        printf("%s\n", namelist[n]->d_name);
+        printf("%s/%s\n", BASEDIR, namelist[n]->d_name);
         free(namelist[n]);
     }
     free(namelist);