Running the test program from the glibc ftw man page[1]: +zhasha@wirbelwind /home/zhasha ; ./6.out test d 0 4096 test 0 test d 1 4096 test/a 5 a f 2 0 test/a/1 7 1 d 1 4096 test/b 5 b f 2 0 test/b/1 7 1 f 2 0 test/b/2 7 2 d 1 4096 test/ddd 5 ddd f 2 0 test/ddd/5 9 5 d 1 4096 test/cc 5 cc f 2 0 test/cc/3 8 3 +zhasha@wirbelwind /home/zhasha ; ./6.out test/ d 0 4096 test/ 4 / d 1 4096 test/a 6 f 2 0 test/a/1 7 1 d 1 4096 test/b 6 f 2 0 test/b/1 7 1 f 2 0 test/b/2 7 2 d 1 4096 test/ddd 6 dd f 2 0 test/ddd/5 9 5 d 1 4096 test/cc 6 c f 2 0 test/cc/3 8 3 The final 2 columns are the file name length and path + ftw->base respectively, which is off by one when the path ends in /. It also seems to confuse the initial dir name. I have attached a fix but I'm not sure it's a particularly good one. [1] http://linux.die.net/man/3/ftw