player_control: allocate getPlayerErrorStr() result

This lets us eliminate the static fixed-size buffer.
This commit is contained in:
Max Kellermann
2009-10-08 20:45:38 +02:00
parent a5960c20cc
commit 128a5fa4a5
3 changed files with 23 additions and 21 deletions
+13 -19
View File
@@ -167,46 +167,40 @@ pc_errored_song_uri(void)
char *getPlayerErrorStr(void)
{
/* static OK here, only one user in main task */
static char error[MPD_PATH_MAX + 64]; /* still too much */
static const size_t errorlen = sizeof(error);
char *error;
char *uri;
*error = '\0'; /* likely */
switch (pc.error) {
case PLAYER_ERROR_NOERROR:
break;
return NULL;
case PLAYER_ERROR_FILENOTFOUND:
uri = pc_errored_song_uri();
snprintf(error, errorlen,
"file \"%s\" does not exist or is inaccessible", uri);
error = g_strdup_printf("file \"%s\" does not exist or is inaccessible", uri);
g_free(uri);
break;
return error;
case PLAYER_ERROR_FILE:
uri = pc_errored_song_uri();
snprintf(error, errorlen, "problems decoding \"%s\"", uri);
error = g_strdup_printf("problems decoding \"%s\"", uri);
g_free(uri);
break;
return error;
case PLAYER_ERROR_AUDIO:
strcpy(error, "problems opening audio device");
break;
return g_strdup("problems opening audio device");
case PLAYER_ERROR_SYSTEM:
strcpy(error, "system error occured");
break;
return g_strdup("system error occured");
case PLAYER_ERROR_UNKTYPE:
uri = pc_errored_song_uri();
snprintf(error, errorlen,
"file type of \"%s\" is unknown", uri);
error = g_strdup_printf("file type of \"%s\" is unknown", uri);
g_free(uri);
break;
return error;
}
return *error ? error : NULL;
assert(false);
return NULL;
}
void