diff --git a/src/screen_lyrics.c b/src/screen_lyrics.c
index ba197a04c22a54905f3eba51fd217662aa62c3e3..152b38d30dd28311a010222c2ab21be0dd2097ef 100644 (file)
--- a/src/screen_lyrics.c
+++ b/src/screen_lyrics.c
}
}
+static void
+path_lyr_file(char *path, size_t size,
+ const char *artist, const char *title)
+{
+ snprintf(path, size, "%s/.lyrics/%s - %s.txt",
+ getenv("HOME"), artist, title);
+}
+
static bool
exists_lyr_file(const char *artist, const char *title)
{
char path[1024];
struct stat result;
- snprintf(path, 1024, "%s/.lyrics/%s - %s.txt",
- getenv("HOME"), artist, title);
+ path_lyr_file(path, 1024, artist, title);
return (stat(path, &result) == 0);
}
getenv("HOME"));
mkdir(path, S_IRWXU);
- snprintf(path, 1024, "%s/.lyrics/%s - %s.txt",
- getenv("HOME"), artist, title);
+ path_lyr_file(path, 1024, artist, title);
return fopen(path, "w");
}
return 0;
}
+static int
+delete_lyr_hd(void)
+{
+ char path[1024];
+
+ if (!exists_lyr_file(current.artist, current.title))
+ return -1;
+
+ path_lyr_file(path, 1024, current.artist, current.title);
+ if (unlink(path) != 0)
+ return -2;
+
+ return 0;
+}
+
static void
screen_lyrics_set(const GString *str)
{
/* lyrics for the song were saved on hard disk */
screen_status_message (_("Lyrics saved"));
return true;
+ case CMD_DELETE:
+ if (current.loader == NULL && current.artist != NULL &&
+ current.title != NULL) {
+ switch (delete_lyr_hd()) {
+ case 0:
+ screen_status_message (_("Lyrics deleted"));
+ break;
+ case -1:
+ screen_status_message (_("No saved lyrics"));
+ break;
+ }
+ }
+ return true;
case CMD_LYRICS_UPDATE:
if (c->song != NULL) {
screen_lyrics_load(c->song);