summaryrefslogtreecommitdiff
path: root/music.cpp
diff options
context:
space:
mode:
authorJon Bergli Heier <snakebite@jvnv.net>2010-12-27 01:14:27 +0100
committerJon Bergli Heier <snakebite@jvnv.net>2010-12-27 01:14:27 +0100
commit9e411c8fe5f3a7b507bca0c4e132454d7d57650c (patch)
tree197f94ed3af663ef0397c065479071c9d3a439d6 /music.cpp
Initial commit.
Diffstat (limited to 'music.cpp')
-rw-r--r--music.cpp44
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);
+}