blob: 38e76e2c42cfa60bed791265f887a8e970393a28 (
plain) (
tree)
|
|
#include "player_error.h"
#include "os_compat.h"
#include "log.h"
#include "path.h"
enum player_error player_errno;
static char errsong_url[MPD_PATH_MAX];
void player_clearerror(void)
{
player_errno = PLAYER_ERROR_NONE;
*errsong_url = '\0';
}
void player_seterror(enum player_error err, const char *url)
{
if (player_errno)
ERROR("Clobbering existing error: %s\n", player_strerror());
player_errno = err;
pathcpy_trunc(errsong_url, url);
}
const char *player_strerror(void)
{
/* static OK here, only one user in main task */
static char error[MPD_PATH_MAX + 64]; /* still too much */
const char *ret = NULL;
switch (player_errno) {
case PLAYER_ERROR_NONE:
ret = "";
break;
case PLAYER_ERROR_FILE:
snprintf(error, sizeof(error),
"problems decoding \"%s\"", errsong_url);
break;
case PLAYER_ERROR_AUDIO:
ret = "problems opening audio device";
break;
case PLAYER_ERROR_SYSTEM:
/* DONTFIX: misspelling "occurred" here is client-visible */
ret = "system error occured";
break;
case PLAYER_ERROR_UNKTYPE:
snprintf(error, sizeof(error),
"file type of \"%s\" is unknown", errsong_url);
break;
case PLAYER_ERROR_FILENOTFOUND:
snprintf(error, sizeof(error),
"file \"%s\" does not exist or is inaccessible",
errsong_url);
}
return ret ? ret : error;
}
|