aboutsummaryrefslogtreecommitdiffstats
path: root/src/lyrics_hd.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lyrics_hd.c')
-rw-r--r--src/lyrics_hd.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/lyrics_hd.c b/src/lyrics_hd.c
new file mode 100644
index 000000000..2d91adc2a
--- /dev/null
+++ b/src/lyrics_hd.c
@@ -0,0 +1,52 @@
+#include <glib.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#include "src_lyrics.h"
+
+char *check_lyr_hd(char *artist, char *title, int how)
+{ //checking whether for lyrics file existence and proper access
+ static char path[1024];
+ snprintf(path, 1024, "%s/.lyrics/%s/%s.lyric",
+ getenv("HOME"), artist, title);
+
+ if(g_access(path, how) != 0) return NULL;
+
+ return path;
+}
+
+
+int get_lyr_hd(char *artist, char *title)
+{
+ char *path = check_lyr_hd(artist, title, R_OK);
+ if(path == NULL) return -1;
+
+ FILE *lyr_file;
+ lyr_file = fopen(path, "r");
+ if(lyr_file == NULL) return -1;
+
+ char *buf = NULL;
+ char **line = &buf;
+ size_t n = 0;
+
+ while(1)
+ {
+ n = getline(line, &n, lyr_file);
+ if( n < 1 || *line == NULL || feof(lyr_file) != 0 ) return 0;
+ add_text_line(&lyr_text, *line, n);
+ free(*line);
+ *line = NULL; n = 0;
+ }
+
+ return 0;
+}
+
+int register_lyr_hd (src_lyr *source_descriptor)
+{
+ source_descriptor->check_lyr = check_lyr_hd;
+ source_descriptor->get_lyr = get_lyr_hd;
+
+ source_descriptor->name = "Harddisk";
+ source_descriptor->description = "";
+}