You are not logged in.
*EDIT* Fixed code is in a post further down
I'm currently in the process of writing a recursive implementation of a functional method to list all files within a directory. This is mainly for practice, but I will probably end up using it in a few projects if I get it working. I'd appreciate any pointers/suggestions as to how I could fix the error I have run into with recursion in the dirReadLin.h header file. I'll probably be able to sort out any other issues after that, but this is the issue that's stumped me. Maybe I've just been staring at it so long it I've started to overlook the error. I'd also greatly appreciate an explanation of what I did wrong, if time allows. Thanks in advance to any suggestions! Also, I think I included everything relevant in this post, but if there's anything missing, I'll gladly supply more information where required.
So far the only result I get from my current method is this:
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
./id3lib
countch.cpp
output.txt
hello.exe
countch.exe
getenv.cpp
id3lib
a.out
fibonacci_console_only.exe
Projects
dirReadLin.h
mp3tag.h
test.cpp
fibonacci2.exe
getenv
fibonacci.cpp
curltest
dirRead.h
test.exe
curltest.cpp
list
hello.cpp
fibonacci
list.cpp
music_generator.cpp
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
id3lib-3.8.3binaries
As you can probably tell, it gets hung up on the id3lib folder. The contents of the above folders are as follows:
./ (the directory list.cpp is run from)
a.out
countch.cpp
countch.exe
curltest
curltest.cpp
dirRead.h
dirReadLin.h
fibonacci
fibonacci2.exe
fibonacci_console_only.exe
fibonacci.cpp
getenv
getenv.cpp
hello.cpp
hello.exe
id3lib
list
list.cpp
mp3tag.h
music_generator.cpp
output.txt
Projects
test.cpp
test.exe
id3lib
id3lib-3.8.3binaries
The actual code so far:
list.cpp
#include<stdio.h>
#include<cstdlib>
#include<iostream>
#include<string.h>
#include<fstream>
#include<dirent.h>
#include "dirReadLin.h"
using namespace std;
int main(int argc, char* argv[]){
if (argc != 2) {
//check to see if an argument was passed.
printf( "usage: %s path",argv[0]);
}
else {
//create the basic path to the directory using command-line argument
string dir = argv[1];
//create the list of strings
vector<string> files = vector<string>();
//call the recursive directory traversal method
getdir_r(dir,dir,files);
//list all files within the list.
for(unsigned int i = 0;i<files.size();i++){
cout << files[i] << endl;
}
}
return 0;
}
dirReadLin.h
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<string.h>
#include<stddef.h>
#include<sys/types.h>
#include<dirent.h>
#include<vector>
using namespace std;
int getdir(string dir, vector<string> &files){
DIR *dp; //create the directory object
struct dirent *entry; //create the entry structure
dp=opendir(dir.c_str()); //open directory by converting the string to const char*
if(dp!=NULL){ //if the directory isn't empty
while( entry=readdir(dp) ){ //while there is something in the directory
if(strcmp(entry->d_name, ".") != 0 && strcmp(entry->d_name, "..") != 0){ //and if the entry isn't "." or ".."
files.push_back(string(entry->d_name));//add the entry to the list of files
}
}
(void) closedir(dp); //close directory
}
else{
perror ("Couldn't open the directory.");
}
return 0;
}
int getdir_r(string odir, string dir, vector<string> &files){ //pass the original directory path (odir), for path creation later
DIR *dp;
string path;
getdir(dir,files); //list the files in the root folder, in order to fill the list
for(unsigned int i = 0; i<files.size();i++){
char last=odir.at(odir.length()-1);
if (last == '/' ){ //check to see if the original path ends in /, for proper path creation
path = odir+files[i];
}else{
path = odir+"/"+files[i];
}
dp=opendir(path.c_str());//open path
if (dp) { //make sure path is a directory, if yes, continue on.
cout << path << endl;
getdir_r(odir,path,files);//recurse
}
}
}
Last edited by lswest (2010-05-16 13:25:13)
Lswest <- the first letter of my username is a lowercase "L".
"...the Linux philosophy is "laugh in the face of danger". Oops. Wrong one. "Do it yourself". That's it." - Linus Torvalds
Offline
Have no time to go through all of the code you posted but here's a working example which I wrote earlier this month.
// Author: Dainis Dauners ( SwedBo [ e-creative@inbox.lv ] @ archlinux.org )
// Date: 02.05.2010
#include <iostream>
#include <string>
#include <dirent.h>
#include <sys/stat.h>
#include <errno.h>
using namespace std;
bool isDir(string dir)
{
struct stat fileInfo;
stat(dir.c_str(), &fileInfo);
if (S_ISDIR(fileInfo.st_mode)) {
return true;
} else {
return false;
}
}
void listFiles(string baseDir, bool recursive)
{
DIR *dp;
struct dirent *dirp;
if ((dp = opendir(baseDir.c_str())) == NULL) {
cout << "[ERROR: " << errno << " ] Couldn't open " << baseDir << "." << endl;
return;
} else {
while ((dirp = readdir(dp)) != NULL) {
if (dirp->d_name != string(".") && dirp->d_name != string("..")) {
if (isDir(baseDir + dirp->d_name) == true && recursive == true) {
cout << "[DIR]\t" << baseDir << dirp->d_name << "/" << endl;
listFiles(baseDir + dirp->d_name + "/", true);
} else {
cout << "[FILE]\t" << baseDir << dirp->d_name << endl;
}
}
}
closedir(dp);
}
}
int main(int argc, char *argv[])
{
if (argc <= 1) {
cout << "[WARNING] At least one argument ( path ) expected .. exiting." << endl;
return 1;
} else {
listFiles(argv[1], true);
}
return 0;
}
** Argument should contain the trailing slash ( eg. /etc/httpd/, NOT /etc/httpd ).
Last edited by SwedBo (2010-05-16 11:36:22)
Offline
Thanks for the working code sample, I'll be sure to go through it. As for the trailing slash, I think my solution might work for that?
char last=odir.at(odir.length()-1); //find last character of string
if (last == '/' ){ //check to see if the original path ends in /, for proper path creation
path = odir+files[i]; //don't add a forward slash
}else{
path = odir+"/"+files[i]; //add a forward slash
}
Just in case you were interested. Thanks again!
Also, re-reading your code...the bool recursive in your method header seems unnecessary, since you never actually check the value of it, and just recursively list the files, unless I'm reading it wrong.
Last edited by lswest (2010-05-16 11:41:48)
Lswest <- the first letter of my username is a lowercase "L".
"...the Linux philosophy is "laugh in the face of danger". Oops. Wrong one. "Do it yourself". That's it." - Linus Torvalds
Offline
Thanks for the working code sample, I'll be sure to go through it. As for the trailing slash, I think my solution might work for that?
char last=odir.at(odir.length()-1); //find last character of string if (last == '/' ){ //check to see if the original path ends in /, for proper path creation path = odir+files[i]; //don't add a forward slash }else{ path = odir+"/"+files[i]; //add a forward slash }
Just in case you were interested. Thanks again!
When you check whether the object is a directory or file, does it return the right values ?
** For testing purposes, add some cout statements here and there so that you could see what the program is doing ..
Offline
It does indeed return the correct value, but I'm going to probably end up using your method since it's a bit easier to troubleshoot.
About the cout's...very true, I was just thoroughly confusing myself when I posted here, thus I took a break.
*EDIT* Thanks for the code sample, I've made use of your "isDir" function and added in your check for whether it was a directory or not and it works. I have a hunch the error was in the way I was attempting recursion and and mixing my two methods. I've also removed the required "/" at the end of the path with this line of code:
if(dir.at(dir.length()-1)!='/'){
dir=dir+"/";
}
Basically, it just checks the last character of the string and if it's not a "/", it adds it to the end of the string. Just in case you are interested.
Fixed code (for anyone interested):
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<string.h>
#include<stddef.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<dirent.h>
#include<vector>
using namespace std;
bool isDir(string dir){
struct stat fileInfo;
stat(dir.c_str(), &fileInfo);
if (S_ISDIR(fileInfo.st_mode)){
return true;
}else{
return false;
}
}
void getdir(string dir, vector<string> &files, bool recursive){
DIR *dp; //create the directory object
struct dirent *entry; //create the entry structure
dp=opendir(dir.c_str()); //open directory by converting the string to const char*
if(dir.at(dir.length()-1)!='/'){
dir=dir+"/";
}
if(dp!=NULL){ //if the directory isn't empty
while( entry=readdir(dp) ){ //while there is something in the directory
if(strcmp(entry->d_name, ".") != 0 && strcmp(entry->d_name, "..") != 0){ //and if the entry isn't "." or ".."
if(isDir(dir + entry->d_name) == true && recursive == true){//check if the new path is a directory, and if it is (and recursion is specified as true), recurse.
files.push_back(string(entry->d_name)); //add entry to the list of files
getdir(dir + entry->d_name, files, true); //recurse
} else{
files.push_back(string(entry->d_name));//add the entry to the list of files
}
}
}
(void) closedir(dp); //close directory
}
else{
perror ("Couldn't open the directory.");
}
}
list.cpp
#include<stdio.h>
#include<cstdlib>
#include<iostream>
#include<string.h>
#include<fstream>
#include<dirent.h>
#include "dirReadLin.h"
using namespace std;
int main(int argc, char* argv[]){
if (argc != 2) {
//check to see if an argument was passed.
printf( "usage: %s path",argv[0]);
}
else {
//create the basic path to the directory using command-line argument
string dir = argv[1];
//create the list of strings
vector<string> files = vector<string>();
//call the recursive directory traversal method
getdir(dir,files,true);
//list all files within the list.
for(unsigned int i = 0;i<files.size();i++){
cout << files[i] << endl;
}
}
return 0;
}
Last edited by lswest (2010-05-16 12:01:21)
Lswest <- the first letter of my username is a lowercase "L".
"...the Linux philosophy is "laugh in the face of danger". Oops. Wrong one. "Do it yourself". That's it." - Linus Torvalds
Offline
Glad it helped and thanks for the snippet for checking / adding the trailing slash
Offline
Glad it helped and thanks for the snippet for checking / adding the trailing slash
Haha, least I could do Thanks again!
Lswest <- the first letter of my username is a lowercase "L".
"...the Linux philosophy is "laugh in the face of danger". Oops. Wrong one. "Do it yourself". That's it." - Linus Torvalds
Offline
I have talked to a lot of very knowledgeable people about recursive directory traversal and they all say not to do it. Instead of using recursion do it iteratively.
Actually, do as much as you can easily (or even often not easily) iteratively instead. In programming classes they usually teach recursion as being how to do things, they do not usually tell you that you should not do it. >.> There are a few exceptions...but in general it should, and can, be avoided. (all recursive algorithms can be turned into iterative ones, and vice-versa)
Offline
I have talked to a lot of very knowledgeable people about recursive directory traversal and they all say not to do it. Instead of using recursion do it iteratively.
Actually, do as much as you can easily (or even often not easily) iteratively instead. In programming classes they usually teach recursion as being how to do things, they do not usually tell you that you should not do it. >.> There are a few exceptions...but in general it should, and can, be avoided. (all recursive algorithms can be turned into iterative ones, and vice-versa)
Probably true, and I may re-write it as an iterative method, depending on how it works for my actual code. Basically, I want to iterate through my music collection and compile a list of songs, or artists, or albums, etc. Besides, re-writing it gives me more practice Thanks for the comment though, and I'll definitely take it under advisement as I continue to learn C++. If I remember correctly though my Comp. Sci. class only ever covered recursive methods in Java. And now that you mention it, I'm not actually sure what I use in my Python scripts... Thanks for pointing that out, got something new to learn now! (And something more to help fend off the boredom).
Lswest <- the first letter of my username is a lowercase "L".
"...the Linux philosophy is "laugh in the face of danger". Oops. Wrong one. "Do it yourself". That's it." - Linus Torvalds
Offline
Actually, do as much as you can easily (or even often not easily) iteratively instead. In programming classes they usually teach recursion as being how to do things, they do not usually tell you that you should not do it.
My guess why recursion is used for programming classes is because it forces students to implement code which executes in a deterministic way, iterative algorithms tends to be easier to implement in a non deterministic way. It is of course possible to write non deterministic recursive algorithms but is a lot harder compared to an iterative algorithm. Anyway, recursive algorithms tends to scale badly if the data set is large and that is pretty much why those are avoided.
Offline