aboutsummaryrefslogtreecommitdiffstats
path: root/src/player_error.c
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2008-08-20 01:31:51 -0700
committerEric Wong <normalperson@yhbt.net>2008-08-20 01:31:51 -0700
commit1b197e65232e1a51b853db53985e8eda61f1b196 (patch)
tree2d85ff67ba79e32256a20d2d2bee7222352007fd /src/player_error.c
parent5a0216af3dc7c9dedc4dacb708191f0fd380bb73 (diff)
parent508ae1c18d3bdc99a1bb06181762e5ec859cf072 (diff)
downloadmpd-1b197e65232e1a51b853db53985e8eda61f1b196.tar.gz
mpd-1b197e65232e1a51b853db53985e8eda61f1b196.tar.xz
mpd-1b197e65232e1a51b853db53985e8eda61f1b196.zip
Merge branch 'core-rewrite' of git://git.musicpd.org/normalperson/mpd
* 'core-rewrite' of git://git.musicpd.org/normalperson/mpd: Remove ob_wait_sync and cleanup triggering in playlist fix output buffer deadlock when daemonizing log.c: thread-safety for warning log core rewrite (decode,player,outputBuffer,playlist)
Diffstat (limited to '')
-rw-r--r--src/player_error.c53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/player_error.c b/src/player_error.c
new file mode 100644
index 000000000..4c7f7b9de
--- /dev/null
+++ b/src/player_error.c
@@ -0,0 +1,53 @@
+#include "player_error.h"
+#include "os_compat.h"
+#include "log.h"
+#include "path.h"
+
+enum player_error player_errno;
+Song *player_errsong;
+
+void player_clearerror(void)
+{
+ player_errno = PLAYER_ERROR_NONE;
+ player_errsong = NULL;
+}
+
+void player_seterror(enum player_error err, Song *song)
+{
+ if (player_errno)
+ ERROR("Clobbering existing error: %s\n", player_strerror());
+ player_errno = err;
+ player_errsong = song;
+}
+
+const char *player_strerror(void)
+{
+ /* static OK here, only one user in main task */
+ static char error[MPD_PATH_MAX + 64]; /* still too much */
+ char path_max_tmp[MPD_PATH_MAX];
+ *error = '\0'; /* likely */
+
+ switch (player_errno) {
+ case PLAYER_ERROR_NONE: break;
+ case PLAYER_ERROR_FILE:
+ snprintf(error, sizeof(error), "problems decoding \"%s\"",
+ get_song_url(path_max_tmp, player_errsong));
+ break;
+ case PLAYER_ERROR_AUDIO:
+ strcpy(error, "problems opening audio device");
+ break;
+ case PLAYER_ERROR_SYSTEM:
+ strcpy(error, "system error occured");
+ break;
+ case PLAYER_ERROR_UNKTYPE:
+ snprintf(error, sizeof(error), "file type of \"%s\" is unknown",
+ get_song_url(path_max_tmp, player_errsong));
+ case PLAYER_ERROR_FILENOTFOUND:
+ snprintf(error, sizeof(error),
+ "file \"%s\" does not exist or is inaccessible",
+ get_song_url(path_max_tmp, player_errsong));
+ break;
+ }
+ return *error ? error : NULL;
+}
+