summaryrefslogtreecommitdiffstats
path: root/src/track.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/track.c')
-rw-r--r--src/track.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/track.c b/src/track.c
index f7aa2a9..31d70b4 100644
--- a/src/track.c
+++ b/src/track.c
@@ -2,24 +2,32 @@
#include <wchar.h>
#include <string.h>
+#include <sys/stat.h>
struct track *
-track_init(const char *dir, const char *file)
+track_init(const char *dir, const char *fname)
{
struct track *track;
+ struct stat info;
track = malloc(sizeof(struct track));
ASSERT(track != NULL);
- track->fname = strdup(file);
+ track->fname = strdup(fname);
ASSERT(track->fname != NULL);
- track->fpath = aprintf("%s/%s", dir, file);
+ track->fpath = aprintf("%s/%s", dir, fname);
ASSERT(track->fpath != NULL);
track->name = calloc(strlen(track->fname) + 1, sizeof(wchar_t));
+ ASSERT(track->name != NULL);
mbstowcs(track->name, track->fname, strlen(track->fname) + 1);
- track->link = LINK_EMPTY;
+ if (!stat(track->fpath, &info)) {
+ track->fid = info.st_ino;
+ } else {
+ track->fid = -1;
+ }
+
track->tags = LIST_HEAD;
return track;