diff options
author | Jon Bergli Heier <snakebite@jvnv.net> | 2010-12-27 01:14:27 +0100 |
---|---|---|
committer | Jon Bergli Heier <snakebite@jvnv.net> | 2010-12-27 01:14:27 +0100 |
commit | 9e411c8fe5f3a7b507bca0c4e132454d7d57650c (patch) | |
tree | 197f94ed3af663ef0397c065479071c9d3a439d6 /music.cpp |
Initial commit.
Diffstat (limited to 'music.cpp')
-rw-r--r-- | music.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/music.cpp b/music.cpp new file mode 100644 index 0000000..bd50719 --- /dev/null +++ b/music.cpp @@ -0,0 +1,44 @@ +#include "music.h" + +#include <cstdio> +#include <stdexcept> +#include <sys/types.h> +#include <dirent.h> +#include <errno.h> +#include <string.h> + +namespace music { + +MusicDirectory *root_directory = NULL; + +void init(const std::string root) { + root_directory = new MusicDirectory(root); +} + +}; + +MusicTrack::MusicTrack(const std::string filename) { + printf("%s\n", filename.c_str()); + this->filename = filename; +} + +MusicDirectory::MusicDirectory(const std::string root) { + printf("%s\n", root.c_str()); + + DIR *d = opendir(root.c_str()); + if(!d) { + throw std::runtime_error(strerror(errno)); + } + + struct dirent *dir; + while((dir = readdir(d)) != NULL) { + if(strcmp(dir->d_name, ".") == 0 || strcmp(dir->d_name, "..") == 0) continue; + if(dir->d_type == DT_DIR) { + directories.push_back(MusicDirectory(root + "/" + dir->d_name)); + } else if(dir->d_type == DT_REG) { + tracks.push_back(MusicTrack(root + "/" + dir->d_name)); + } + } + + closedir(d); +} |