Commit e86fd65c authored by Eric Wong's avatar Eric Wong

commandError() cleanups, fixup gcc checks

stripped binary size reduced by 9k on my machine from making commandError a function. We'll print out error messages slightly slower before, but the smaller binary is more than worth it. git-svn-id: https://svn.musicpd.org/mpd/trunk@4488 09075e82-0dd4-0310-85a5-a0d7c8717e4f
parent a0c8e365
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
#include "dbUtils.h" #include "dbUtils.h"
#include "tag.h" #include "tag.h"
#include <stdarg.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <unistd.h> #include <unistd.h>
...@@ -182,7 +183,7 @@ static int handlePlay(int fd, int *permission, int argc, ...@@ -182,7 +183,7 @@ static int handlePlay(int fd, int *permission, int argc,
song = strtol(argv[1], &test, 10); song = strtol(argv[1], &test, 10);
if (*test != '\0') { if (*test != '\0') {
commandError(fd, ACK_ERROR_ARG, commandError(fd, ACK_ERROR_ARG,
"need a positive integer", NULL); "need a positive integer");
return -1; return -1;
} }
} }
...@@ -199,7 +200,7 @@ static int handlePlayId(int fd, int *permission, int argc, ...@@ -199,7 +200,7 @@ static int handlePlayId(int fd, int *permission, int argc,
id = strtol(argv[1], &test, 10); id = strtol(argv[1], &test, 10);
if (*test != '\0') { if (*test != '\0') {
commandError(fd, ACK_ERROR_ARG, commandError(fd, ACK_ERROR_ARG,
"need a positive integer", NULL); "need a positive integer");
return -1; return -1;
} }
} }
...@@ -284,7 +285,7 @@ static int commandStatus(int fd, int *permission, int argc, ...@@ -284,7 +285,7 @@ static int commandStatus(int fd, int *permission, int argc,
fdprintf(fd, "%s: %i:%i\n", COMMAND_STATUS_TIME, fdprintf(fd, "%s: %i:%i\n", COMMAND_STATUS_TIME,
getPlayerElapsedTime(), getPlayerTotalTime()); getPlayerElapsedTime(), getPlayerTotalTime());
fdprintf(fd, "%s: %li\n", COMMAND_STATUS_BITRATE, fdprintf(fd, "%s: %li\n", COMMAND_STATUS_BITRATE,
getPlayerBitRate(), getPlayerTotalTime()); getPlayerBitRate());
fdprintf(fd, "%s: %u:%i:%i\n", COMMAND_STATUS_AUDIO, fdprintf(fd, "%s: %u:%i:%i\n", COMMAND_STATUS_AUDIO,
getPlayerSampleRate(), getPlayerBits(), getPlayerSampleRate(), getPlayerBits(),
getPlayerChannels()); getPlayerChannels());
...@@ -341,7 +342,7 @@ static int handleDelete(int fd, int *permission, int argc, ...@@ -341,7 +342,7 @@ static int handleDelete(int fd, int *permission, int argc,
song = strtol(argv[1], &test, 10); song = strtol(argv[1], &test, 10);
if (*test != '\0') { if (*test != '\0') {
commandError(fd, ACK_ERROR_ARG, commandError(fd, ACK_ERROR_ARG,
"need a positive integer", NULL); "need a positive integer");
return -1; return -1;
} }
return deleteFromPlaylist(fd, song); return deleteFromPlaylist(fd, song);
...@@ -356,7 +357,7 @@ static int handleDeleteId(int fd, int *permission, int argc, ...@@ -356,7 +357,7 @@ static int handleDeleteId(int fd, int *permission, int argc,
id = strtol(argv[1], &test, 10); id = strtol(argv[1], &test, 10);
if (*test != '\0') { if (*test != '\0') {
commandError(fd, ACK_ERROR_ARG, commandError(fd, ACK_ERROR_ARG,
"need a positive integer", NULL); "need a positive integer");
return -1; return -1;
} }
return deleteFromPlaylistById(fd, id); return deleteFromPlaylistById(fd, id);
...@@ -434,8 +435,7 @@ static int handlePlaylistChanges(int fd, int *permission, ...@@ -434,8 +435,7 @@ static int handlePlaylistChanges(int fd, int *permission,
version = strtoul(argv[1], &test, 10); version = strtoul(argv[1], &test, 10);
if (*test != '\0') { if (*test != '\0') {
commandError(fd, ACK_ERROR_ARG, "need a positive integer", commandError(fd, ACK_ERROR_ARG, "need a positive integer");
NULL);
return -1; return -1;
} }
return playlistChanges(fd, version); return playlistChanges(fd, version);
...@@ -449,8 +449,7 @@ static int handlePlaylistChangesPosId(int fd, int *permission, ...@@ -449,8 +449,7 @@ static int handlePlaylistChangesPosId(int fd, int *permission,
version = strtoul(argv[1], &test, 10); version = strtoul(argv[1], &test, 10);
if (*test != '\0') { if (*test != '\0') {
commandError(fd, ACK_ERROR_ARG, "need a positive integer", commandError(fd, ACK_ERROR_ARG, "need a positive integer");
NULL);
return -1; return -1;
} }
return playlistChangesPosId(fd, version); return playlistChangesPosId(fd, version);
...@@ -466,7 +465,7 @@ static int handlePlaylistInfo(int fd, int *permission, ...@@ -466,7 +465,7 @@ static int handlePlaylistInfo(int fd, int *permission,
song = strtol(argv[1], &test, 10); song = strtol(argv[1], &test, 10);
if (*test != '\0') { if (*test != '\0') {
commandError(fd, ACK_ERROR_ARG, commandError(fd, ACK_ERROR_ARG,
"need a positive integer", NULL); "need a positive integer");
return -1; return -1;
} }
} }
...@@ -483,7 +482,7 @@ static int handlePlaylistId(int fd, int *permission, ...@@ -483,7 +482,7 @@ static int handlePlaylistId(int fd, int *permission,
id = strtol(argv[1], &test, 10); id = strtol(argv[1], &test, 10);
if (*test != '\0') { if (*test != '\0') {
commandError(fd, ACK_ERROR_ARG, commandError(fd, ACK_ERROR_ARG,
"need a positive integer", NULL); "need a positive integer");
return -1; return -1;
} }
} }
...@@ -501,7 +500,7 @@ static int handleFind(int fd, int *permission, int argc, ...@@ -501,7 +500,7 @@ static int handleFind(int fd, int *permission, int argc,
&items); &items);
if (numItems <= 0) { if (numItems <= 0) {
commandError(fd, ACK_ERROR_ARG, "incorrect arguments", NULL); commandError(fd, ACK_ERROR_ARG, "incorrect arguments");
return -1; return -1;
} }
...@@ -523,7 +522,7 @@ static int handleSearch(int fd, int *permission, int argc, ...@@ -523,7 +522,7 @@ static int handleSearch(int fd, int *permission, int argc,
&items); &items);
if (numItems <= 0) { if (numItems <= 0) {
commandError(fd, ACK_ERROR_ARG, "incorrect arguments", NULL); commandError(fd, ACK_ERROR_ARG, "incorrect arguments");
return -1; return -1;
} }
...@@ -609,7 +608,7 @@ static int handleVolume(int fd, int *permission, int argc, ...@@ -609,7 +608,7 @@ static int handleVolume(int fd, int *permission, int argc,
change = strtol(argv[1], &test, 10); change = strtol(argv[1], &test, 10);
if (*test != '\0') { if (*test != '\0') {
commandError(fd, ACK_ERROR_ARG, "need an integer", NULL); commandError(fd, ACK_ERROR_ARG, "need an integer");
return -1; return -1;
} }
return changeVolumeLevel(fd, change, 1); return changeVolumeLevel(fd, change, 1);
...@@ -623,7 +622,7 @@ static int handleSetVol(int fd, int *permission, int argc, ...@@ -623,7 +622,7 @@ static int handleSetVol(int fd, int *permission, int argc,
level = strtol(argv[1], &test, 10); level = strtol(argv[1], &test, 10);
if (*test != '\0') { if (*test != '\0') {
commandError(fd, ACK_ERROR_ARG, "need an integer", NULL); commandError(fd, ACK_ERROR_ARG, "need an integer");
return -1; return -1;
} }
return changeVolumeLevel(fd, level, 0); return changeVolumeLevel(fd, level, 0);
...@@ -637,7 +636,7 @@ static int handleRepeat(int fd, int *permission, int argc, ...@@ -637,7 +636,7 @@ static int handleRepeat(int fd, int *permission, int argc,
status = strtol(argv[1], &test, 10); status = strtol(argv[1], &test, 10);
if (*test != '\0') { if (*test != '\0') {
commandError(fd, ACK_ERROR_ARG, "need an integer", NULL); commandError(fd, ACK_ERROR_ARG, "need an integer");
return -1; return -1;
} }
return setPlaylistRepeatStatus(fd, status); return setPlaylistRepeatStatus(fd, status);
...@@ -651,7 +650,7 @@ static int handleRandom(int fd, int *permission, int argc, ...@@ -651,7 +650,7 @@ static int handleRandom(int fd, int *permission, int argc,
status = strtol(argv[1], &test, 10); status = strtol(argv[1], &test, 10);
if (*test != '\0') { if (*test != '\0') {
commandError(fd, ACK_ERROR_ARG, "need an integer", NULL); commandError(fd, ACK_ERROR_ARG, "need an integer");
return -1; return -1;
} }
return setPlaylistRandomStatus(fd, status); return setPlaylistRandomStatus(fd, status);
...@@ -703,7 +702,7 @@ static int handleList(int fd, int *permission, int argc, ...@@ -703,7 +702,7 @@ static int handleList(int fd, int *permission, int argc,
if (numConditionals < 0) { if (numConditionals < 0) {
commandError(fd, ACK_ERROR_ARG, commandError(fd, ACK_ERROR_ARG,
"not able to parse args", NULL); "not able to parse args");
return -1; return -1;
} }
} }
...@@ -868,8 +867,7 @@ static int handlePassword(int fd, int *permission, int argc, ...@@ -868,8 +867,7 @@ static int handlePassword(int fd, int *permission, int argc,
char *argv[]) char *argv[])
{ {
if (getPermissionFromPassword(argv[1], permission) < 0) { if (getPermissionFromPassword(argv[1], permission) < 0) {
commandError(fd, ACK_ERROR_PASSWORD, "incorrect password", commandError(fd, ACK_ERROR_PASSWORD, "incorrect password");
NULL);
return -1; return -1;
} }
...@@ -1212,3 +1210,23 @@ int processCommand(int fd, int *permission, char *commandString) ...@@ -1212,3 +1210,23 @@ int processCommand(int fd, int *permission, char *commandString)
{ {
return processCommandInternal(fd, permission, commandString, NULL); return processCommandInternal(fd, permission, commandString, NULL);
} }
mpd_fprintf_ void commandError(int fd, int error, const char *fmt, ...)
{
va_list args;
va_start(args, fmt);
if (current_command) {
fdprintf(fd, "ACK [%i@%i] {%s} ",
(int)error, command_listNum, current_command);
current_command = NULL;
} else
fdprintf(STDERR_FILENO, "ACK [%i@%i] ",
(int)error, command_listNum);
vfdprintf(fd, fmt, args);
va_end(args);
fdprintf(fd,"\n");
}
...@@ -48,18 +48,6 @@ void finishCommands(); ...@@ -48,18 +48,6 @@ void finishCommands();
#define commandSuccess(fd) fdprintf(fd, "OK\n") #define commandSuccess(fd) fdprintf(fd, "OK\n")
#define commandError(fd, error, format, ... ) do \ mpd_fprintf_ void commandError(int fd, int error, const char *fmt, ...);
{\
if (current_command) { \
fdprintf(fd, "ACK [%i@%i] {%s} " format "\n", \
(int)error, command_listNum, \
current_command, __VA_ARGS__); \
current_command = NULL; \
} \
else { \
fdprintf(STDERR_FILENO, "ACK [%i@%i] " format "\n", \
(int)error, command_listNum, \
__VA_ARGS__); \
} \
} while (0)
#endif #endif
...@@ -162,8 +162,7 @@ void readDirectoryDBIfUpdateIsFinished() ...@@ -162,8 +162,7 @@ void readDirectoryDBIfUpdateIsFinished()
int updateInit(int fd, List * pathList) int updateInit(int fd, List * pathList)
{ {
if (directory_updatePid > 0) { if (directory_updatePid > 0) {
commandError(fd, ACK_ERROR_UPDATE_ALREADY, "already updating", commandError(fd, ACK_ERROR_UPDATE_ALREADY, "already updating");
NULL);
return -1; return -1;
} }
...@@ -217,7 +216,7 @@ int updateInit(int fd, List * pathList) ...@@ -217,7 +216,7 @@ int updateInit(int fd, List * pathList)
unblockSignals(); unblockSignals();
ERROR("updateInit: Problems forking()'ing\n"); ERROR("updateInit: Problems forking()'ing\n");
commandError(fd, ACK_ERROR_SYSTEM, commandError(fd, ACK_ERROR_SYSTEM,
"problems trying to update", NULL); "problems trying to update");
directory_updatePid = 0; directory_updatePid = 0;
return -1; return -1;
} }
...@@ -891,8 +890,7 @@ int printDirectoryInfo(int fd, char *name) ...@@ -891,8 +890,7 @@ int printDirectoryInfo(int fd, char *name)
Directory *directory; Directory *directory;
if ((directory = getDirectory(name)) == NULL) { if ((directory = getDirectory(name)) == NULL) {
commandError(fd, ACK_ERROR_NO_EXIST, "directory not found", commandError(fd, ACK_ERROR_NO_EXIST, "directory not found");
NULL);
return -1; return -1;
} }
...@@ -1288,7 +1286,7 @@ int traverseAllIn(int fd, char *name, ...@@ -1288,7 +1286,7 @@ int traverseAllIn(int fd, char *name,
return forEachSong(fd, song, data); return forEachSong(fd, song, data);
} }
commandError(fd, ACK_ERROR_NO_EXIST, commandError(fd, ACK_ERROR_NO_EXIST,
"directory or file not found", NULL); "directory or file not found");
return -1; return -1;
} }
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
*/ */
/* disabled (0) until I fix all the warnings :) */ /* disabled (0) until I fix all the warnings :) */
#if (0 && __GNUC__ >= 3) #if __GNUC__ >= 3
# define mpd_const __attribute__ ((const)) # define mpd_const __attribute__ ((const))
# define mpd_deprecated __attribute__ ((deprecated)) # define mpd_deprecated __attribute__ ((deprecated))
# define mpd_malloc __attribute__ ((malloc)) # define mpd_malloc __attribute__ ((malloc))
...@@ -25,8 +25,8 @@ ...@@ -25,8 +25,8 @@
# define mpd_used __attribute__ ((used)) # define mpd_used __attribute__ ((used))
/* # define inline inline __attribute__ ((always_inline)) */ /* # define inline inline __attribute__ ((always_inline)) */
# define mpd_noinline __attribute__ ((noinline)) # define mpd_noinline __attribute__ ((noinline))
# define likely(x) __builtin_expect (!!(x), 1) # define mpd_likely(x) __builtin_expect (!!(x), 1)
# define unlikely(x) __builtin_expect (!!(x), 0) # define mpd_unlikely(x) __builtin_expect (!!(x), 0)
#else #else
# define mpd_const # define mpd_const
# define mpd_deprecated # define mpd_deprecated
...@@ -43,8 +43,8 @@ ...@@ -43,8 +43,8 @@
# define mpd_used # define mpd_used
/* # define inline */ /* # define inline */
# define mpd_noinline # define mpd_noinline
# define likely(x) (x) # define mpd_likely(x) (x)
# define unlikely(x) (x) # define mpd_unlikely(x) (x)
#endif #endif
#endif /* MPD_GCC_H */ #endif /* MPD_GCC_H */
...@@ -396,7 +396,7 @@ int playerSeek(int fd, Song * song, float time) ...@@ -396,7 +396,7 @@ int playerSeek(int fd, Song * song, float time)
if (pc->state == PLAYER_STATE_STOP) { if (pc->state == PLAYER_STATE_STOP) {
commandError(fd, ACK_ERROR_PLAYER_SYNC, commandError(fd, ACK_ERROR_PLAYER_SYNC,
"player not currently playing", NULL); "player not currently playing");
return -1; return -1;
} }
......
...@@ -671,7 +671,7 @@ int addSongToPlaylist(int fd, Song * song, int printId) ...@@ -671,7 +671,7 @@ int addSongToPlaylist(int fd, Song * song, int printId)
if (playlist.length == playlist_max_length) { if (playlist.length == playlist_max_length) {
commandError(fd, ACK_ERROR_PLAYLIST_MAX, commandError(fd, ACK_ERROR_PLAYLIST_MAX,
"playlist is at the max size", NULL); "playlist is at the max size");
return -1; return -1;
} }
...@@ -1360,7 +1360,7 @@ int deletePlaylist(int fd, char *utf8file) ...@@ -1360,7 +1360,7 @@ int deletePlaylist(int fd, char *utf8file)
if (unlink(actualFile) < 0) { if (unlink(actualFile) < 0) {
commandError(fd, ACK_ERROR_SYSTEM, commandError(fd, ACK_ERROR_SYSTEM,
"problems deleting file", NULL); "problems deleting file");
return -1; return -1;
} }
...@@ -1407,8 +1407,7 @@ int savePlaylist(int fd, char *utf8file) ...@@ -1407,8 +1407,7 @@ int savePlaylist(int fd, char *utf8file)
while (!(fileP = fopen(actualFile, "w")) && errno == EINTR) ; while (!(fileP = fopen(actualFile, "w")) && errno == EINTR) ;
if (fileP == NULL) { if (fileP == NULL) {
commandError(fd, ACK_ERROR_SYSTEM, "problems opening file", commandError(fd, ACK_ERROR_SYSTEM, "problems opening file");
NULL);
return -1; return -1;
} }
......
...@@ -36,8 +36,8 @@ void initStats(void) ...@@ -36,8 +36,8 @@ void initStats(void)
int printStats(int fd) int printStats(int fd)
{ {
fdprintf(fd, "artists: %li\n", getNumberOfTagItems(TAG_ITEM_ARTIST)); fdprintf(fd, "artists: %i\n", getNumberOfTagItems(TAG_ITEM_ARTIST));
fdprintf(fd, "albums: %li\n", getNumberOfTagItems(TAG_ITEM_ALBUM)); fdprintf(fd, "albums: %i\n", getNumberOfTagItems(TAG_ITEM_ALBUM));
fdprintf(fd, "songs: %i\n", stats.numberOfSongs); fdprintf(fd, "songs: %i\n", stats.numberOfSongs);
fdprintf(fd, "uptime: %li\n", time(NULL) - stats.daemonStart); fdprintf(fd, "uptime: %li\n", time(NULL) - stats.daemonStart);
fdprintf(fd, "playtime: %li\n", fdprintf(fd, "playtime: %li\n",
......
...@@ -178,7 +178,7 @@ static int changeOssVolumeLevel(int fd, int change, int rel) ...@@ -178,7 +178,7 @@ static int changeOssVolumeLevel(int fd, int change, int rel)
if (rel) { if (rel) {
if ((current = getOssVolumeLevel()) < 0) { if ((current = getOssVolumeLevel()) < 0) {
commandError(fd, ACK_ERROR_SYSTEM, commandError(fd, ACK_ERROR_SYSTEM,
"problem getting current volume", NULL); "problem getting current volume");
return -1; return -1;
} }
...@@ -198,8 +198,7 @@ static int changeOssVolumeLevel(int fd, int change, int rel) ...@@ -198,8 +198,7 @@ static int changeOssVolumeLevel(int fd, int change, int rel)
if (ioctl(volume_ossFd, MIXER_WRITE(volume_ossControl), &level) < 0) { if (ioctl(volume_ossFd, MIXER_WRITE(volume_ossControl), &level) < 0) {
closeOssMixer(); closeOssMixer();
commandError(fd, ACK_ERROR_SYSTEM, "problems setting volume", commandError(fd, ACK_ERROR_SYSTEM, "problems setting volume");
NULL);
return -1; return -1;
} }
...@@ -361,8 +360,7 @@ static int changeAlsaVolumeLevel(int fd, int change, int rel) ...@@ -361,8 +360,7 @@ static int changeAlsaVolumeLevel(int fd, int change, int rel)
if ((err = if ((err =
snd_mixer_selem_set_playback_volume_all(volume_alsaElem, snd_mixer_selem_set_playback_volume_all(volume_alsaElem,
level)) < 0) { level)) < 0) {
commandError(fd, ACK_ERROR_SYSTEM, "problems setting volume", commandError(fd, ACK_ERROR_SYSTEM, "problems setting volume");
NULL);
WARNING("problems setting alsa volume: %s\n", WARNING("problems setting alsa volume: %s\n",
snd_strerror(err)); snd_strerror(err));
closeAlsaMixer(); closeAlsaMixer();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment