aboutsummaryrefslogtreecommitdiffstats
path: root/src/command.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/command.c')
-rw-r--r--src/command.c1488
1 files changed, 774 insertions, 714 deletions
diff --git a/src/command.c b/src/command.c
index 98e8dae97..4e52779b5 100644
--- a/src/command.c
+++ b/src/command.c
@@ -79,10 +79,10 @@
#define COMMAND_SETVOL "setvol"
#define COMMAND_PASSWORD "password"
#define COMMAND_CROSSFADE "crossfade"
-#define COMMAND_URL_HANDLERS "urlhandlers"
-#define COMMAND_PLCHANGES "plchanges"
-#define COMMAND_PLCHANGESPOSID "plchangesposid"
-#define COMMAND_CURRENTSONG "currentsong"
+#define COMMAND_URL_HANDLERS "urlhandlers"
+#define COMMAND_PLCHANGES "plchanges"
+#define COMMAND_PLCHANGESPOSID "plchangesposid"
+#define COMMAND_CURRENTSONG "currentsong"
#define COMMAND_ENABLE_DEV "enableoutput"
#define COMMAND_DISABLE_DEV "disableoutput"
#define COMMAND_DEVICES "outputs"
@@ -106,432 +106,451 @@
typedef struct _CommandEntry CommandEntry;
-typedef int (* CommandHandlerFunction)(FILE *, int *, int, char **);
-typedef int (* CommandListHandlerFunction)
- (FILE *, int *, int, char **,ListNode *, CommandEntry *);
-
+typedef int (*CommandHandlerFunction) (FILE *, int *, int, char **);
+typedef int (*CommandListHandlerFunction)
+ (FILE *, int *, int, char **, ListNode *, CommandEntry *);
/* if min: -1 don't check args *
* if max: -1 no max args */
struct _CommandEntry {
- char * cmd;
- int min;
- int max;
+ char *cmd;
+ int min;
+ int max;
int reqPermission;
- CommandHandlerFunction handler;
+ CommandHandlerFunction handler;
CommandListHandlerFunction listHandler;
};
-char * current_command = NULL;
+char *current_command = NULL;
int command_listNum = 0;
-static CommandEntry * getCommandEntryFromString(char * string, int * permission);
+static CommandEntry *getCommandEntryFromString(char *string, int *permission);
-List * commandList;
+List *commandList;
-CommandEntry * newCommandEntry(void) {
- CommandEntry * cmd = malloc(sizeof(CommandEntry));
- cmd->cmd = NULL;
- cmd->min = 0;
- cmd->max = 0;
- cmd->handler = NULL;
- cmd->listHandler = NULL;
+CommandEntry *newCommandEntry(void)
+{
+ CommandEntry *cmd = malloc(sizeof(CommandEntry));
+ cmd->cmd = NULL;
+ cmd->min = 0;
+ cmd->max = 0;
+ cmd->handler = NULL;
+ cmd->listHandler = NULL;
cmd->reqPermission = 0;
- return cmd;
+ return cmd;
}
-static void addCommand(char * name,
- int reqPermission,
+static void addCommand(char *name,
+ int reqPermission,
int minargs,
- int maxargs,
+ int maxargs,
CommandHandlerFunction handler_func,
- CommandListHandlerFunction listHandler_func)
-{
- CommandEntry * cmd = newCommandEntry();
- cmd->cmd = name;
- cmd->min = minargs;
- cmd->max = maxargs;
- cmd->handler = handler_func;
- cmd->listHandler = listHandler_func;
+ CommandListHandlerFunction listHandler_func)
+{
+ CommandEntry *cmd = newCommandEntry();
+ cmd->cmd = name;
+ cmd->min = minargs;
+ cmd->max = maxargs;
+ cmd->handler = handler_func;
+ cmd->listHandler = listHandler_func;
cmd->reqPermission = reqPermission;
- insertInList(commandList, cmd->cmd, cmd);
+ insertInList(commandList, cmd->cmd, cmd);
}
-static int handleUrlHandlers(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleUrlHandlers(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- return printRemoteUrlHandlers(fp);
+ return printRemoteUrlHandlers(fp);
}
-static int handlePlay(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handlePlay(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- int song = -1;
- char * test;
-
- if(argArrayLength==2) {
- song = strtol(argArray[1],&test,10);
- if(*test!='\0') {
- commandError(fp, ACK_ERROR_ARG,
- "need a positive integer", NULL);
- return -1;
- }
- }
- return playPlaylist(fp,song,0);
+ int song = -1;
+ char *test;
+
+ if (argArrayLength == 2) {
+ song = strtol(argArray[1], &test, 10);
+ if (*test != '\0') {
+ commandError(fp, ACK_ERROR_ARG,
+ "need a positive integer", NULL);
+ return -1;
+ }
+ }
+ return playPlaylist(fp, song, 0);
}
-static int handlePlayId(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handlePlayId(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- int id = -1;
- char * test;
-
- if(argArrayLength==2) {
- id = strtol(argArray[1],&test,10);
- if(*test!='\0') {
- commandError(fp, ACK_ERROR_ARG,
- "need a positive integer", NULL);
- return -1;
- }
- }
- return playPlaylistById(fp, id, 0);
+ int id = -1;
+ char *test;
+
+ if (argArrayLength == 2) {
+ id = strtol(argArray[1], &test, 10);
+ if (*test != '\0') {
+ commandError(fp, ACK_ERROR_ARG,
+ "need a positive integer", NULL);
+ return -1;
+ }
+ }
+ return playPlaylistById(fp, id, 0);
}
-static int handleStop(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleStop(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- return stopPlaylist(fp);
+ return stopPlaylist(fp);
}
-static int handleCurrentSong(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleCurrentSong(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- int song = getPlaylistCurrentSong();
+ int song = getPlaylistCurrentSong();
- if(song >= 0) {
+ if (song >= 0) {
return playlistInfo(fp, song);
- }
- else return 0;
+ } else
+ return 0;
}
-static int handlePause(FILE * fp, int * permission,
- int argArrayLength, char ** argArray)
+static int handlePause(FILE * fp, int *permission,
+ int argArrayLength, char **argArray)
{
- if(argArrayLength==2) {
- char * test;
- int pause = strtol(argArray[1],&test,10);
- if(*test!='\0' || (pause!=0 && pause!=1)) {
- commandError(fp, ACK_ERROR_ARG, "\"%s\" is not 0 or 1", argArray[1]);
- return -1;
- }
- return playerSetPause(fp,pause);
- }
- return playerPause(fp);
+ if (argArrayLength == 2) {
+ char *test;
+ int pause = strtol(argArray[1], &test, 10);
+ if (*test != '\0' || (pause != 0 && pause != 1)) {
+ commandError(fp, ACK_ERROR_ARG, "\"%s\" is not 0 or 1",
+ argArray[1]);
+ return -1;
+ }
+ return playerSetPause(fp, pause);
+ }
+ return playerPause(fp);
}
-static int commandStatus(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int commandStatus(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- char * state = NULL;
+ char *state = NULL;
int updateJobId;
- int song;
+ int song;
- /*syncPlayerAndPlaylist();*/
+ /*syncPlayerAndPlaylist(); */
playPlaylistIfPlayerStopped();
- switch(getPlayerState()) {
- case PLAYER_STATE_STOP:
- state = COMMAND_STOP;
- break;
- case PLAYER_STATE_PAUSE:
- state = COMMAND_PAUSE;
- break;
- case PLAYER_STATE_PLAY:
- state = COMMAND_PLAY;
- break;
- }
-
- myfprintf(fp,"%s: %i\n",COMMAND_STATUS_VOLUME,getVolumeLevel());
- myfprintf(fp,"%s: %i\n",COMMAND_STATUS_REPEAT,getPlaylistRepeatStatus());
- myfprintf(fp,"%s: %i\n",COMMAND_STATUS_RANDOM,getPlaylistRandomStatus());
- myfprintf(fp,"%s: %li\n",COMMAND_STATUS_PLAYLIST,getPlaylistVersion());
- myfprintf(fp,"%s: %i\n",COMMAND_STATUS_PLAYLIST_LENGTH,getPlaylistLength());
- myfprintf(fp,"%s: %i\n",COMMAND_STATUS_CROSSFADE,
- (int)(getPlayerCrossFade()+0.5));
-
- myfprintf(fp,"%s: %s\n",COMMAND_STATUS_STATE,state);
-
- song = getPlaylistCurrentSong();
- if(song >= 0) {
- myfprintf(fp,"%s: %i\n", COMMAND_STATUS_SONG, song);
- myfprintf(fp,"%s: %i\n", COMMAND_STATUS_SONGID,
- getPlaylistSongId(song));
+ switch (getPlayerState()) {
+ case PLAYER_STATE_STOP:
+ state = COMMAND_STOP;
+ break;
+ case PLAYER_STATE_PAUSE:
+ state = COMMAND_PAUSE;
+ break;
+ case PLAYER_STATE_PLAY:
+ state = COMMAND_PLAY;
+ break;
+ }
+
+ myfprintf(fp, "%s: %i\n", COMMAND_STATUS_VOLUME, getVolumeLevel());
+ myfprintf(fp, "%s: %i\n", COMMAND_STATUS_REPEAT,
+ getPlaylistRepeatStatus());
+ myfprintf(fp, "%s: %i\n", COMMAND_STATUS_RANDOM,
+ getPlaylistRandomStatus());
+ myfprintf(fp, "%s: %li\n", COMMAND_STATUS_PLAYLIST,
+ getPlaylistVersion());
+ myfprintf(fp, "%s: %i\n", COMMAND_STATUS_PLAYLIST_LENGTH,
+ getPlaylistLength());
+ myfprintf(fp, "%s: %i\n", COMMAND_STATUS_CROSSFADE,
+ (int)(getPlayerCrossFade() + 0.5));
+
+ myfprintf(fp, "%s: %s\n", COMMAND_STATUS_STATE, state);
+
+ song = getPlaylistCurrentSong();
+ if (song >= 0) {
+ myfprintf(fp, "%s: %i\n", COMMAND_STATUS_SONG, song);
+ myfprintf(fp, "%s: %i\n", COMMAND_STATUS_SONGID,
+ getPlaylistSongId(song));
+ }
+ if (getPlayerState() != PLAYER_STATE_STOP) {
+ myfprintf(fp, "%s: %i:%i\n", COMMAND_STATUS_TIME,
+ getPlayerElapsedTime(), getPlayerTotalTime());
+ myfprintf(fp, "%s: %li\n", COMMAND_STATUS_BITRATE,
+ getPlayerBitRate(), getPlayerTotalTime());
+ myfprintf(fp, "%s: %u:%i:%i\n", COMMAND_STATUS_AUDIO,
+ getPlayerSampleRate(), getPlayerBits(),
+ getPlayerChannels());
}
- if(getPlayerState()!=PLAYER_STATE_STOP) {
- myfprintf(fp,"%s: %i:%i\n",COMMAND_STATUS_TIME,getPlayerElapsedTime(),getPlayerTotalTime());
- myfprintf(fp,"%s: %li\n",COMMAND_STATUS_BITRATE,getPlayerBitRate(),getPlayerTotalTime());
- myfprintf(fp,"%s: %u:%i:%i\n",COMMAND_STATUS_AUDIO,getPlayerSampleRate(),getPlayerBits(),getPlayerChannels());
- }
-
- if((updateJobId = isUpdatingDB())) {
- myfprintf(fp,"%s: %i\n",COMMAND_STATUS_UPDATING_DB,updateJobId);
+
+ if ((updateJobId = isUpdatingDB())) {
+ myfprintf(fp, "%s: %i\n", COMMAND_STATUS_UPDATING_DB,
+ updateJobId);
}
- if(getPlayerError()!=PLAYER_ERROR_NOERROR) {
- myfprintf(fp,"%s: %s\n",COMMAND_STATUS_ERROR,getPlayerErrorStr());
- }
+ if (getPlayerError() != PLAYER_ERROR_NOERROR) {
+ myfprintf(fp, "%s: %s\n", COMMAND_STATUS_ERROR,
+ getPlayerErrorStr());
+ }
- return 0;
+ return 0;
}
-static int handleKill(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleKill(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- return COMMAND_RETURN_KILL;
+ return COMMAND_RETURN_KILL;
}
-static int handleClose(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleClose(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- return COMMAND_RETURN_CLOSE;
+ return COMMAND_RETURN_CLOSE;
}
-static int handleAdd(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleAdd(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- char * path = argArray[1];
+ char *path = argArray[1];
- if(isRemoteUrl(path)) return addToPlaylist(fp, path, 0);
+ if (isRemoteUrl(path))
+ return addToPlaylist(fp, path, 0);
- return addAllIn(fp,path);
+ return addAllIn(fp, path);
}
-static int handleAddId(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleAddId(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
return addToPlaylist(fp, argArray[1], 1);
}
-static int handleDelete(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleDelete(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- int song;
- char * test;
+ int song;
+ char *test;
- song = strtol(argArray[1],&test,10);
- if(*test!='\0') {
- commandError(fp, ACK_ERROR_ARG,
- "need a positive integer", NULL);
- return -1;
- }
- return deleteFromPlaylist(fp,song);
+ song = strtol(argArray[1], &test, 10);
+ if (*test != '\0') {
+ commandError(fp, ACK_ERROR_ARG,
+ "need a positive integer", NULL);
+ return -1;
+ }
+ return deleteFromPlaylist(fp, song);
}
-static int handleDeleteId(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleDeleteId(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- int id;
- char * test;
+ int id;
+ char *test;
- id = strtol(argArray[1],&test,10);
- if(*test!='\0') {
- commandError(fp, ACK_ERROR_ARG,
- "need a positive integer", NULL);
- return -1;
- }
- return deleteFromPlaylistById(fp, id);
+ id = strtol(argArray[1], &test, 10);
+ if (*test != '\0') {
+ commandError(fp, ACK_ERROR_ARG,
+ "need a positive integer", NULL);
+ return -1;
+ }
+ return deleteFromPlaylistById(fp, id);
}
-static int handlePlaylist(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handlePlaylist(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- return showPlaylist(fp);
+ return showPlaylist(fp);
}
-static int handleShuffle(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleShuffle(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- return shufflePlaylist(fp);
+ return shufflePlaylist(fp);
}
-static int handleClear(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleClear(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- return clearPlaylist(fp);
+ return clearPlaylist(fp);
}
-static int handleSave(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleSave(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- return savePlaylist(fp,argArray[1]);
+ return savePlaylist(fp, argArray[1]);
}
-static int handleLoad(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleLoad(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- return loadPlaylist(fp,argArray[1]);
+ return loadPlaylist(fp, argArray[1]);
}
-static int handleListPlaylist(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleListPlaylist(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- return PlaylistInfo(fp,argArray[1],0);
+ return PlaylistInfo(fp, argArray[1], 0);
}
-static int handleListPlaylistInfo(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleListPlaylistInfo(FILE * fp, int *permission,
+ int argArrayLength, char **argArray)
{
- return PlaylistInfo(fp,argArray[1], 1);
+ return PlaylistInfo(fp, argArray[1], 1);
}
-static int handleLsInfo(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleLsInfo(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- if(argArrayLength==1) {
- if(printDirectoryInfo(fp,NULL)<0) return -1;
- else return lsPlaylists(fp,"");
- }
- else {
- if(printDirectoryInfo(fp,argArray[1])<0) return -1;
- else return lsPlaylists(fp,argArray[1]);
- }
+ if (argArrayLength == 1) {
+ if (printDirectoryInfo(fp, NULL) < 0)
+ return -1;
+ else
+ return lsPlaylists(fp, "");
+ } else {
+ if (printDirectoryInfo(fp, argArray[1]) < 0)
+ return -1;
+ else
+ return lsPlaylists(fp, argArray[1]);
+ }
}
-static int handleRm(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleRm(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- return deletePlaylist(fp,argArray[1]);
+ return deletePlaylist(fp, argArray[1]);
}
-static int handlePlaylistChanges(FILE * fp, int * permission,
- int argArrayLength, char ** argArray)
+static int handlePlaylistChanges(FILE * fp, int *permission,
+ int argArrayLength, char **argArray)
{
- unsigned long version;
- char * test;
+ unsigned long version;
+ char *test;
- version = strtoul(argArray[1], &test, 10);
- if(*test!='\0') {
- commandError(fp, ACK_ERROR_ARG, "need a positive integer",
- NULL);
- return -1;
- }
- return playlistChanges(fp, version);
+ version = strtoul(argArray[1], &test, 10);
+ if (*test != '\0') {
+ commandError(fp, ACK_ERROR_ARG, "need a positive integer",
+ NULL);
+ return -1;
+ }
+ return playlistChanges(fp, version);
}
-static int handlePlaylistChangesPosId(FILE * fp, int * permission,
- int argArrayLength, char ** argArray)
+static int handlePlaylistChangesPosId(FILE * fp, int *permission,
+ int argArrayLength, char **argArray)
{
- unsigned long version;
- char * test;
+ unsigned long version;
+ char *test;
- version = strtoul(argArray[1], &test, 10);
- if(*test!='\0') {
- commandError(fp, ACK_ERROR_ARG, "need a positive integer",
- NULL);
- return -1;
- }
- return playlistChangesPosId(fp, version);
+ version = strtoul(argArray[1], &test, 10);
+ if (*test != '\0') {
+ commandError(fp, ACK_ERROR_ARG, "need a positive integer",
+ NULL);
+ return -1;
+ }
+ return playlistChangesPosId(fp, version);
}
-static int handlePlaylistInfo(FILE * fp, int * permission,
- int argArrayLength, char ** argArray)
+static int handlePlaylistInfo(FILE * fp, int *permission,
+ int argArrayLength, char **argArray)
{
- int song = -1;
- char * test;
-
- if(argArrayLength == 2) {
- song = strtol(argArray[1],&test,10);
- if(*test!='\0') {
- commandError(fp, ACK_ERROR_ARG,
- "need a positive integer", NULL);
- return -1;
- }
- }
- return playlistInfo(fp,song);
+ int song = -1;
+ char *test;
+
+ if (argArrayLength == 2) {
+ song = strtol(argArray[1], &test, 10);
+ if (*test != '\0') {
+ commandError(fp, ACK_ERROR_ARG,
+ "need a positive integer", NULL);
+ return -1;
+ }
+ }
+ return playlistInfo(fp, song);
}
-static int handlePlaylistId(FILE * fp, int * permission,
- int argArrayLength, char ** argArray)
+static int handlePlaylistId(FILE * fp, int *permission,
+ int argArrayLength, char **argArray)
{
- int id = -1;
- char * test;
-
- if(argArrayLength == 2) {
- id = strtol(argArray[1],&test,10);
- if(*test!='\0') {
- commandError(fp, ACK_ERROR_ARG,
- "need a positive integer", NULL);
- return -1;
- }
- }
- return playlistId(fp, id);
+ int id = -1;
+ char *test;
+
+ if (argArrayLength == 2) {
+ id = strtol(argArray[1], &test, 10);
+ if (*test != '\0') {
+ commandError(fp, ACK_ERROR_ARG,
+ "need a positive integer", NULL);
+ return -1;
+ }
+ }
+ return playlistId(fp, id);
}
-static int handleFind(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleFind(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
int ret;
- LocateTagItem * items;
- int numItems = newLocateTagItemArrayFromArgArray(argArray+1,
- argArrayLength-1, &items);
+ LocateTagItem *items;
+ int numItems = newLocateTagItemArrayFromArgArray(argArray + 1,
+ argArrayLength - 1,
+ &items);
- if(numItems <= 0) {
- commandError(fp, ACK_ERROR_ARG, "incorrect arguments", NULL);
+ if (numItems <= 0) {
+ commandError(fp, ACK_ERROR_ARG, "incorrect arguments", NULL);
return -1;
}
- ret = findSongsIn(fp, NULL, numItems, items);
+ ret = findSongsIn(fp, NULL, numItems, items);
freeLocateTagItemArray(numItems, items);
return ret;
}
-static int handleSearch(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleSearch(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
int ret;
- LocateTagItem * items;
- int numItems = newLocateTagItemArrayFromArgArray(argArray+1,
- argArrayLength-1, &items);
+ LocateTagItem *items;
+ int numItems = newLocateTagItemArrayFromArgArray(argArray + 1,
+ argArrayLength - 1,
+ &items);
- if(numItems <= 0) {
- commandError(fp, ACK_ERROR_ARG, "incorrect arguments", NULL);
+ if (numItems <= 0) {
+ commandError(fp, ACK_ERROR_ARG, "incorrect arguments", NULL);
return -1;
}
- ret = searchForSongsIn(fp, NULL, numItems, items);
+ ret = searchForSongsIn(fp, NULL, numItems, items);
freeLocateTagItemArray(numItems, items);
return ret;
}
-static int listHandleUpdate(FILE * fp,
- int * permission,
- int argArrayLength,
- char ** argArray,
- ListNode * commandNode,
- CommandEntry * cmd)
+static int listHandleUpdate(FILE * fp,
+ int *permission,
+ int argArrayLength,
+ char **argArray,
+ ListNode * commandNode, CommandEntry * cmd)
{
- static List * pathList = NULL;
- CommandEntry * nextCmd = NULL;
- ListNode * nextNode = commandNode->nextNode;;
+ static List *pathList = NULL;
+ CommandEntry *nextCmd = NULL;
+ ListNode *nextNode = commandNode->nextNode;;
- if(!pathList) pathList = makeList(NULL, 1);
+ if (!pathList)
+ pathList = makeList(NULL, 1);
- if(argArrayLength==2) insertInList(pathList,argArray[1],NULL);
- else insertInList(pathList,"",NULL);
+ if (argArrayLength == 2)
+ insertInList(pathList, argArray[1], NULL);
+ else
+ insertInList(pathList, "", NULL);
- if(nextNode) {
+ if (nextNode) {
nextCmd = getCommandEntryFromString((void *)nextNode->data,
permission);
}
- if(cmd!=nextCmd) {
- int ret = updateInit(fp,pathList);
+ if (cmd != nextCmd) {
+ int ret = updateInit(fp, pathList);
freeList(pathList);
pathList = NULL;
return ret;
@@ -540,364 +559,369 @@ static int listHandleUpdate(FILE * fp,
return 0;
}
-static int handleUpdate(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleUpdate(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- if(argArrayLength==2) {
+ if (argArrayLength == 2) {
int ret;
- List * pathList = makeList(NULL, 1);
- insertInList(pathList,argArray[1],NULL);
- ret = updateInit(fp,pathList);
+ List *pathList = makeList(NULL, 1);
+ insertInList(pathList, argArray[1], NULL);
+ ret = updateInit(fp, pathList);
freeList(pathList);
return ret;
}
- return updateInit(fp,NULL);
+ return updateInit(fp, NULL);
}
-static int handleNext(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleNext(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- return nextSongInPlaylist(fp);
+ return nextSongInPlaylist(fp);
}
-static int handlePrevious(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handlePrevious(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- return previousSongInPlaylist(fp);
+ return previousSongInPlaylist(fp);
}
-static int handleListAll(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleListAll(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- char * directory = NULL;
+ char *directory = NULL;
- if(argArrayLength==2) directory = argArray[1];
- return printAllIn(fp,directory);
+ if (argArrayLength == 2)
+ directory = argArray[1];
+ return printAllIn(fp, directory);
}
-static int handleVolume(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleVolume(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- int change;
- char * test;
+ int change;
+ char *test;
- change = strtol(argArray[1],&test,10);
- if(*test!='\0') {
- commandError(fp, ACK_ERROR_ARG, "need an integer", NULL);
- return -1;
- }
- return changeVolumeLevel(fp,change,1);
+ change = strtol(argArray[1], &test, 10);
+ if (*test != '\0') {
+ commandError(fp, ACK_ERROR_ARG, "need an integer", NULL);
+ return -1;
+ }
+ return changeVolumeLevel(fp, change, 1);
}
-static int handleSetVol(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleSetVol(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- int level;
- char * test;
+ int level;
+ char *test;
- level = strtol(argArray[1],&test,10);
- if(*test!='\0') {
- commandError(fp, ACK_ERROR_ARG, "need an integer", NULL);
- return -1;
- }
- return changeVolumeLevel(fp,level,0);
+ level = strtol(argArray[1], &test, 10);
+ if (*test != '\0') {
+ commandError(fp, ACK_ERROR_ARG, "need an integer", NULL);
+ return -1;
+ }
+ return changeVolumeLevel(fp, level, 0);
}
-static int handleRepeat(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleRepeat(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- int status;
- char * test;
+ int status;
+ char *test;
- status = strtol(argArray[1],&test,10);
- if(*test!='\0') {
- commandError(fp, ACK_ERROR_ARG, "need an integer", NULL);
- return -1;
- }
- return setPlaylistRepeatStatus(fp,status);
+ status = strtol(argArray[1], &test, 10);
+ if (*test != '\0') {
+ commandError(fp, ACK_ERROR_ARG, "need an integer", NULL);
+ return -1;
+ }
+ return setPlaylistRepeatStatus(fp, status);
}
-static int handleRandom(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleRandom(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- int status;
- char * test;
+ int status;
+ char *test;
- status = strtol(argArray[1],&test,10);
- if(*test!='\0') {
- commandError(fp, ACK_ERROR_ARG, "need an integer", NULL);
- return -1;
- }
- return setPlaylistRandomStatus(fp,status);
+ status = strtol(argArray[1], &test, 10);
+ if (*test != '\0') {
+ commandError(fp, ACK_ERROR_ARG, "need an integer", NULL);
+ return -1;
+ }
+ return setPlaylistRandomStatus(fp, status);
}
-static int handleStats(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleStats(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- return printStats(fp);
+ return printStats(fp);
}
-static int handleClearError(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleClearError(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- clearPlayerError();
- return 0;
+ clearPlayerError();
+ return 0;
}
-static int handleList(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleList(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
int numConditionals = 0;
- LocateTagItem * conditionals = NULL;
+ LocateTagItem *conditionals = NULL;
int tagType = getLocateTagItemType(argArray[1]);
int ret;
- if(tagType < 0) {
- commandError(fp, ACK_ERROR_ARG,
- "\"%s\" is not known", argArray[1]);
+ if (tagType < 0) {
+ commandError(fp, ACK_ERROR_ARG,
+ "\"%s\" is not known", argArray[1]);
return -1;
}
/* for compatibility with < 0.12.0 */
- if(argArrayLength==3) {
- if(tagType != TAG_ITEM_ALBUM) {
- commandError(fp, ACK_ERROR_ARG,
- "should be \"%s\" for 3 arguments",
- mpdTagItemKeys[TAG_ITEM_ALBUM]);
+ if (argArrayLength == 3) {
+ if (tagType != TAG_ITEM_ALBUM) {
+ commandError(fp, ACK_ERROR_ARG,
+ "should be \"%s\" for 3 arguments",
+ mpdTagItemKeys[TAG_ITEM_ALBUM]);
return -1;
}
conditionals = newLocateTagItem(mpdTagItemKeys[TAG_ITEM_ARTIST],
- argArray[2]);
+ argArray[2]);
numConditionals = 1;
- }
- else {
- numConditionals = newLocateTagItemArrayFromArgArray(argArray+2,
- argArrayLength-2, &conditionals);
-
- if(numConditionals < 0) {
- commandError(fp, ACK_ERROR_ARG,
- "not able to parse args", NULL);
+ } else {
+ numConditionals =
+ newLocateTagItemArrayFromArgArray(argArray + 2,
+ argArrayLength - 2,
+ &conditionals);
+
+ if (numConditionals < 0) {
+ commandError(fp, ACK_ERROR_ARG,
+ "not able to parse args", NULL);
return -1;
}
}
- ret = listAllUniqueTags(fp, tagType, numConditionals,conditionals);
+ ret = listAllUniqueTags(fp, tagType, numConditionals, conditionals);
- if(conditionals) freeLocateTagItemArray(numConditionals, conditionals);
+ if (conditionals)
+ freeLocateTagItemArray(numConditionals, conditionals);
return ret;
}
-static int handleMove(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
-{
- int from;
- int to;
- char * test;
-
- from = strtol(argArray[1],&test,10);
- if(*test!='\0') {
- commandError(fp, ACK_ERROR_ARG,
- "\"%s\" is not a integer", argArray[1]);
- return -1;
- }
- to = strtol(argArray[2],&test,10);
- if(*test!='\0') {
- commandError(fp, ACK_ERROR_ARG,
- "\"%s\" is not a integer", argArray[2]);
- return -1;
- }
- return moveSongInPlaylist(fp,from,to);
-}
-
-static int handleMoveId(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
-{
- int id;
- int to;
- char * test;
-
- id = strtol(argArray[1],&test,10);
- if(*test!='\0') {
- commandError(fp, ACK_ERROR_ARG,
- "\"%s\" is not a integer", argArray[1]);
- return -1;
- }
- to = strtol(argArray[2],&test,10);
- if(*test!='\0') {
- commandError(fp, ACK_ERROR_ARG,
- "\"%s\" is not a integer", argArray[2]);
- return -1;
- }
- return moveSongInPlaylistById(fp, id, to);
-}
-
-static int handleSwap(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
-{
- int song1;
- int song2;
- char * test;
-
- song1 = strtol(argArray[1],&test,10);
- if(*test!='\0') {
- commandError(fp, ACK_ERROR_ARG,
- "\"%s\" is not a integer", argArray[1]);
- return -1;
- }
- song2 = strtol(argArray[2],&test,10);
- if(*test!='\0') {
- commandError(fp, ACK_ERROR_ARG, "\"%s\" is not a integer",
- argArray[2]);
- return -1;
- }
- return swapSongsInPlaylist(fp,song1,song2);
-}
-
-static int handleSwapId(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
-{
- int id1;
- int id2;
- char * test;
-
- id1 = strtol(argArray[1],&test,10);
- if(*test!='\0') {
- commandError(fp, ACK_ERROR_ARG,
- "\"%s\" is not a integer", argArray[1]);
- return -1;
- }
- id2 = strtol(argArray[2],&test,10);
- if(*test!='\0') {
- commandError(fp, ACK_ERROR_ARG, "\"%s\" is not a integer",
- argArray[2]);
- return -1;
- }
- return swapSongsInPlaylistById(fp, id1, id2);
-}
-
-static int handleSeek(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
-{
- int song;
- int time;
- char * test;
-
- song = strtol(argArray[1],&test,10);
- if(*test!='\0') {
- commandError(fp, ACK_ERROR_ARG,
- "\"%s\" is not a integer", argArray[1]);
- return -1;
- }
- time = strtol(argArray[2],&test,10);
- if(*test!='\0') {
- commandError(fp, ACK_ERROR_ARG,
- "\"%s\" is not a integer", argArray[2]);
- return -1;
- }
- return seekSongInPlaylist(fp,song,time);
-}
-
-static int handleSeekId(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
-{
- int id;
- int time;
- char * test;
-
- id = strtol(argArray[1],&test,10);
- if(*test!='\0') {
- commandError(fp, ACK_ERROR_ARG,
- "\"%s\" is not a integer", argArray[1]);
- return -1;
- }
- time = strtol(argArray[2],&test,10);
- if(*test!='\0') {
- commandError(fp, ACK_ERROR_ARG,
- "\"%s\" is not a integer", argArray[2]);
- return -1;
- }
- return seekSongInPlaylistById(fp, id, time);
-}
-
-static int handleListAllInfo(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
-{
- char * directory = NULL;
-
- if(argArrayLength==2) directory = argArray[1];
- return printInfoForAllIn(fp,directory);
-}
-
-static int handlePing(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
-{
- return 0;
-}
-
-static int handlePassword(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
-{
- if(getPermissionFromPassword(argArray[1],permission)<0) {
- commandError(fp, ACK_ERROR_PASSWORD, "incorrect password", NULL);
+static int handleMove(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
+{
+ int from;
+ int to;
+ char *test;
+
+ from = strtol(argArray[1], &test, 10);
+ if (*test != '\0') {
+ commandError(fp, ACK_ERROR_ARG,
+ "\"%s\" is not a integer", argArray[1]);
+ return -1;
+ }
+ to = strtol(argArray[2], &test, 10);
+ if (*test != '\0') {
+ commandError(fp, ACK_ERROR_ARG,
+ "\"%s\" is not a integer", argArray[2]);
+ return -1;
+ }
+ return moveSongInPlaylist(fp, from, to);
+}
+
+static int handleMoveId(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
+{
+ int id;
+ int to;
+ char *test;
+
+ id = strtol(argArray[1], &test, 10);
+ if (*test != '\0') {
+ commandError(fp, ACK_ERROR_ARG,
+ "\"%s\" is not a integer", argArray[1]);
+ return -1;
+ }
+ to = strtol(argArray[2], &test, 10);
+ if (*test != '\0') {
+ commandError(fp, ACK_ERROR_ARG,
+ "\"%s\" is not a integer", argArray[2]);
+ return -1;
+ }
+ return moveSongInPlaylistById(fp, id, to);
+}
+
+static int handleSwap(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
+{
+ int song1;
+ int song2;
+ char *test;
+
+ song1 = strtol(argArray[1], &test, 10);
+ if (*test != '\0') {
+ commandError(fp, ACK_ERROR_ARG,
+ "\"%s\" is not a integer", argArray[1]);
+ return -1;
+ }
+ song2 = strtol(argArray[2], &test, 10);
+ if (*test != '\0') {
+ commandError(fp, ACK_ERROR_ARG, "\"%s\" is not a integer",
+ argArray[2]);
+ return -1;
+ }
+ return swapSongsInPlaylist(fp, song1, song2);
+}
+
+static int handleSwapId(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
+{
+ int id1;
+ int id2;
+ char *test;
+
+ id1 = strtol(argArray[1], &test, 10);
+ if (*test != '\0') {
+ commandError(fp, ACK_ERROR_ARG,
+ "\"%s\" is not a integer", argArray[1]);
+ return -1;
+ }
+ id2 = strtol(argArray[2], &test, 10);
+ if (*test != '\0') {
+ commandError(fp, ACK_ERROR_ARG, "\"%s\" is not a integer",
+ argArray[2]);
+ return -1;
+ }
+ return swapSongsInPlaylistById(fp, id1, id2);
+}
+
+static int handleSeek(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
+{
+ int song;
+ int time;
+ char *test;
+
+ song = strtol(argArray[1], &test, 10);
+ if (*test != '\0') {
+ commandError(fp, ACK_ERROR_ARG,
+ "\"%s\" is not a integer", argArray[1]);
+ return -1;
+ }
+ time = strtol(argArray[2], &test, 10);
+ if (*test != '\0') {
+ commandError(fp, ACK_ERROR_ARG,
+ "\"%s\" is not a integer", argArray[2]);
+ return -1;
+ }
+ return seekSongInPlaylist(fp, song, time);
+}
+
+static int handleSeekId(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
+{
+ int id;
+ int time;
+ char *test;
+
+ id = strtol(argArray[1], &test, 10);
+ if (*test != '\0') {
+ commandError(fp, ACK_ERROR_ARG,
+ "\"%s\" is not a integer", argArray[1]);
+ return -1;
+ }
+ time = strtol(argArray[2], &test, 10);
+ if (*test != '\0') {
+ commandError(fp, ACK_ERROR_ARG,
+ "\"%s\" is not a integer", argArray[2]);
+ return -1;
+ }
+ return seekSongInPlaylistById(fp, id, time);
+}
+
+static int handleListAllInfo(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
+{
+ char *directory = NULL;
+
+ if (argArrayLength == 2)
+ directory = argArray[1];
+ return printInfoForAllIn(fp, directory);
+}
+
+static int handlePing(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
+{
+ return 0;
+}
+
+static int handlePassword(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
+{
+ if (getPermissionFromPassword(argArray[1], permission) < 0) {
+ commandError(fp, ACK_ERROR_PASSWORD, "incorrect password",
+ NULL);
return -1;
}
return 0;
}
-static int handleCrossfade(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleCrossfade(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- int time;
- char * test;
+ int time;
+ char *test;
- time = strtol(argArray[1],&test,10);
- if(*test!='\0' || time<0) {
- commandError(fp, ACK_ERROR_ARG,
- "\"%s\" is not a integer >= 0", argArray[1]);
- return -1;
- }
+ time = strtol(argArray[1], &test, 10);
+ if (*test != '\0' || time < 0) {
+ commandError(fp, ACK_ERROR_ARG,
+ "\"%s\" is not a integer >= 0", argArray[1]);
+ return -1;
+ }
setPlayerCrossFade(time);
return 0;
}
-static int handleEnableDevice(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleEnableDevice(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- int device;
- char * test;
+ int device;
+ char *test;
- device = strtol(argArray[1],&test,10);
- if(*test!='\0' || device<0) {
- commandError(fp, ACK_ERROR_ARG,
- "\"%s\" is not a integer >= 0", argArray[1]);
- return -1;
- }
+ device = strtol(argArray[1], &test, 10);
+ if (*test != '\0' || device < 0) {
+ commandError(fp, ACK_ERROR_ARG,
+ "\"%s\" is not a integer >= 0", argArray[1]);
+ return -1;
+ }
return enableAudioDevice(fp, device);
}
-static int handleDisableDevice(FILE * fp, int * permission,
- int argArrayLength, char ** argArray)
+static int handleDisableDevice(FILE * fp, int *permission,
+ int argArrayLength, char **argArray)
{
- int device;
- char * test;
+ int device;
+ char *test;
- device = strtol(argArray[1],&test,10);
- if(*test!='\0' || device<0) {
- commandError(fp, ACK_ERROR_ARG,
- "\"%s\" is not a integer >= 0", argArray[1]);
- return -1;
- }
+ device = strtol(argArray[1], &test, 10);
+ if (*test != '\0' || device < 0) {
+ commandError(fp, ACK_ERROR_ARG,
+ "\"%s\" is not a integer >= 0", argArray[1]);
+ return -1;
+ }
return disableAudioDevice(fp, device);
}
-static int handleDevices(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleDevices(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
printAudioDevices(fp);
@@ -905,15 +929,15 @@ static int handleDevices(FILE * fp, int * permission, int argArrayLength,
}
/* don't be fooled, this is the command handler for "commands" command */
-static int handleCommands(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleCommands(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- ListNode * node = commandList->firstNode;
- CommandEntry * cmd;
+ ListNode *node = commandList->firstNode;
+ CommandEntry *cmd;
- while(node != NULL) {
+ while (node != NULL) {
cmd = (CommandEntry *) node->data;
- if(cmd->reqPermission == (*permission & cmd->reqPermission)) {
+ if (cmd->reqPermission == (*permission & cmd->reqPermission)) {
myfprintf(fp, "command: %s\n", cmd->cmd);
}
@@ -923,16 +947,16 @@ static int handleCommands(FILE * fp, int * permission, int argArrayLength,
return 0;
}
-static int handleNotcommands(FILE * fp, int * permission, int argArrayLength,
- char ** argArray)
+static int handleNotcommands(FILE * fp, int *permission, int argArrayLength,
+ char **argArray)
{
- ListNode * node = commandList->firstNode;
- CommandEntry * cmd;
+ ListNode *node = commandList->firstNode;
+ CommandEntry *cmd;
- while(node != NULL) {
+ while (node != NULL) {
cmd = (CommandEntry *) node->data;
- if(cmd->reqPermission != (*permission & cmd->reqPermission)) {
+ if (cmd->reqPermission != (*permission & cmd->reqPermission)) {
myfprintf(fp, "command: %s\n", cmd->cmd);
}
@@ -942,219 +966,255 @@ static int handleNotcommands(FILE * fp, int * permission, int argArrayLength,
return 0;
}
-void initCommands(void) {
- commandList = makeList(free, 1);
-
- addCommand(COMMAND_PLAY ,PERMISSION_CONTROL, 0, 1,handlePlay,NULL);
- addCommand(COMMAND_PLAYID ,PERMISSION_CONTROL, 0, 1,handlePlayId,NULL);
- addCommand(COMMAND_STOP ,PERMISSION_CONTROL, 0, 0,handleStop,NULL);
- addCommand(COMMAND_CURRENTSONG ,PERMISSION_READ , 0, 0,handleCurrentSong,NULL);
- addCommand(COMMAND_PAUSE ,PERMISSION_CONTROL, 0, 1,handlePause,NULL);
- addCommand(COMMAND_STATUS ,PERMISSION_READ, 0, 0,commandStatus,NULL);
- addCommand(COMMAND_KILL ,PERMISSION_ADMIN, -1,-1,handleKill,NULL);
- addCommand(COMMAND_CLOSE ,0, -1,-1,handleClose,NULL);
- addCommand(COMMAND_ADD ,PERMISSION_ADD, 1, 1,handleAdd,NULL);
- addCommand(COMMAND_ADDID ,PERMISSION_ADD, 1, 1,handleAddId,NULL);
- addCommand(COMMAND_DELETE ,PERMISSION_CONTROL, 1, 1,handleDelete,NULL);
- addCommand(COMMAND_DELETEID ,PERMISSION_CONTROL, 1, 1,handleDeleteId,NULL);
- addCommand(COMMAND_PLAYLIST ,PERMISSION_READ, 0, 0,handlePlaylist,NULL);
- addCommand(COMMAND_PLAYLISTID ,PERMISSION_READ, 0, 1,handlePlaylistId,NULL);
- addCommand(COMMAND_SHUFFLE ,PERMISSION_CONTROL, 0, 0,handleShuffle,NULL);
- addCommand(COMMAND_CLEAR ,PERMISSION_CONTROL, 0, 0,handleClear,NULL);
- addCommand(COMMAND_SAVE ,PERMISSION_CONTROL, 1, 1,handleSave,NULL);
- addCommand(COMMAND_LOAD ,PERMISSION_ADD, 1, 1,handleLoad,NULL);
- addCommand(COMMAND_LISTPLAYLIST,PERMISSION_READ, 1, 1,handleListPlaylist,NULL);
- addCommand(COMMAND_LISTPLAYLISTINFO,PERMISSION_READ, 1, 1,handleListPlaylistInfo,NULL);
- addCommand(COMMAND_LSINFO ,PERMISSION_READ, 0, 1,handleLsInfo,NULL);
- addCommand(COMMAND_RM ,PERMISSION_CONTROL, 1, 1,handleRm,NULL);
- addCommand(COMMAND_PLAYLISTINFO,PERMISSION_READ, 0, 1,handlePlaylistInfo,NULL);
- addCommand(COMMAND_FIND ,PERMISSION_READ, 2,-1,handleFind,NULL);
- addCommand(COMMAND_SEARCH ,PERMISSION_READ, 2,-1,handleSearch,NULL);
- addCommand(COMMAND_UPDATE ,PERMISSION_ADMIN, 0, 1,handleUpdate,listHandleUpdate);
- addCommand(COMMAND_NEXT ,PERMISSION_CONTROL, 0, 0,handleNext,NULL);
- addCommand(COMMAND_PREVIOUS ,PERMISSION_CONTROL, 0, 0,handlePrevious,NULL);
- addCommand(COMMAND_LISTALL ,PERMISSION_READ, 0, 1,handleListAll,NULL);
- addCommand(COMMAND_VOLUME ,PERMISSION_CONTROL, 1, 1,handleVolume,NULL);
- addCommand(COMMAND_REPEAT ,PERMISSION_CONTROL, 1, 1,handleRepeat,NULL);
- addCommand(COMMAND_RANDOM ,PERMISSION_CONTROL, 1, 1,handleRandom,NULL);
- addCommand(COMMAND_STATS ,PERMISSION_READ, 0, 0,handleStats,NULL);
- addCommand(COMMAND_CLEAR_ERROR ,PERMISSION_CONTROL, 0, 0,handleClearError,NULL);
- addCommand(COMMAND_LIST ,PERMISSION_READ, 1,-1,handleList,NULL);
- addCommand(COMMAND_MOVE ,PERMISSION_CONTROL, 2, 2,handleMove,NULL);
- addCommand(COMMAND_MOVEID ,PERMISSION_CONTROL, 2, 2,handleMoveId,NULL);
- addCommand(COMMAND_SWAP ,PERMISSION_CONTROL, 2, 2,handleSwap,NULL);
- addCommand(COMMAND_SWAPID ,PERMISSION_CONTROL, 2, 2,handleSwapId,NULL);
- addCommand(COMMAND_SEEK ,PERMISSION_CONTROL, 2, 2,handleSeek,NULL);
- addCommand(COMMAND_SEEKID ,PERMISSION_CONTROL, 2, 2,handleSeekId,NULL);
- addCommand(COMMAND_LISTALLINFO ,PERMISSION_READ, 0, 1,handleListAllInfo,NULL);
- addCommand(COMMAND_PING ,0, 0, 0,handlePing,NULL);
- addCommand(COMMAND_SETVOL ,PERMISSION_CONTROL, 1, 1,handleSetVol,NULL);
- addCommand(COMMAND_PASSWORD ,0, 1, 1,handlePassword,NULL);
- addCommand(COMMAND_CROSSFADE ,PERMISSION_CONTROL, 1, 1,handleCrossfade,NULL);
- addCommand(COMMAND_URL_HANDLERS,PERMISSION_READ, 0, 0,handleUrlHandlers,NULL);
- addCommand(COMMAND_PLCHANGES ,PERMISSION_READ, 1, 1,handlePlaylistChanges,NULL);
- addCommand(COMMAND_PLCHANGESPOSID ,PERMISSION_READ, 1, 1,handlePlaylistChangesPosId,NULL);
- addCommand(COMMAND_ENABLE_DEV ,PERMISSION_ADMIN, 1, 1,handleEnableDevice,NULL);
- addCommand(COMMAND_DISABLE_DEV ,PERMISSION_ADMIN, 1, 1,handleDisableDevice,NULL);
- addCommand(COMMAND_DEVICES ,PERMISSION_READ, 0, 0,handleDevices,NULL);
- addCommand(COMMAND_COMMANDS ,0, 0, 0,handleCommands,NULL);
- addCommand(COMMAND_NOTCOMMANDS ,0, 0, 0,handleNotcommands,NULL);
-
- sortList(commandList);
-}
-
-void finishCommands(void) {
- freeList(commandList);
-}
-
-static int checkArgcAndPermission(CommandEntry * cmd, FILE *fp,
- int permission, int argc, char** argArray)
-{
- int min = cmd->min + 1;
- int max = cmd->max + 1;
+void initCommands(void)
+{
+ commandList = makeList(free, 1);
+
+ addCommand(COMMAND_PLAY, PERMISSION_CONTROL, 0, 1, handlePlay, NULL);
+ addCommand(COMMAND_PLAYID, PERMISSION_CONTROL, 0, 1, handlePlayId,
+ NULL);
+ addCommand(COMMAND_STOP, PERMISSION_CONTROL, 0, 0, handleStop, NULL);
+ addCommand(COMMAND_CURRENTSONG, PERMISSION_READ, 0, 0,
+ handleCurrentSong, NULL);
+ addCommand(COMMAND_PAUSE, PERMISSION_CONTROL, 0, 1, handlePause, NULL);
+ addCommand(COMMAND_STATUS, PERMISSION_READ, 0, 0, commandStatus, NULL);
+ addCommand(COMMAND_KILL, PERMISSION_ADMIN, -1, -1, handleKill, NULL);
+ addCommand(COMMAND_CLOSE, 0, -1, -1, handleClose, NULL);
+ addCommand(COMMAND_ADD, PERMISSION_ADD, 1, 1, handleAdd, NULL);
+ addCommand(COMMAND_ADDID, PERMISSION_ADD, 1, 1, handleAddId, NULL);
+ addCommand(COMMAND_DELETE, PERMISSION_CONTROL, 1, 1, handleDelete,
+ NULL);
+ addCommand(COMMAND_DELETEID, PERMISSION_CONTROL, 1, 1, handleDeleteId,
+ NULL);
+ addCommand(COMMAND_PLAYLIST, PERMISSION_READ, 0, 0, handlePlaylist,
+ NULL);
+ addCommand(COMMAND_PLAYLISTID, PERMISSION_READ, 0, 1, handlePlaylistId,
+ NULL);
+ addCommand(COMMAND_SHUFFLE, PERMISSION_CONTROL, 0, 0, handleShuffle,
+ NULL);
+ addCommand(COMMAND_CLEAR, PERMISSION_CONTROL, 0, 0, handleClear, NULL);
+ addCommand(COMMAND_SAVE, PERMISSION_CONTROL, 1, 1, handleSave, NULL);
+ addCommand(COMMAND_LOAD, PERMISSION_ADD, 1, 1, handleLoad, NULL);
+ addCommand(COMMAND_LISTPLAYLIST, PERMISSION_READ, 1, 1,
+ handleListPlaylist, NULL);
+ addCommand(COMMAND_LISTPLAYLISTINFO, PERMISSION_READ, 1, 1,
+ handleListPlaylistInfo, NULL);
+ addCommand(COMMAND_LSINFO, PERMISSION_READ, 0, 1, handleLsInfo, NULL);
+ addCommand(COMMAND_RM, PERMISSION_CONTROL, 1, 1, handleRm, NULL);
+ addCommand(COMMAND_PLAYLISTINFO, PERMISSION_READ, 0, 1,
+ handlePlaylistInfo, NULL);
+ addCommand(COMMAND_FIND, PERMISSION_READ, 2, -1, handleFind, NULL);
+ addCommand(COMMAND_SEARCH, PERMISSION_READ, 2, -1, handleSearch, NULL);
+ addCommand(COMMAND_UPDATE, PERMISSION_ADMIN, 0, 1, handleUpdate,
+ listHandleUpdate);
+ addCommand(COMMAND_NEXT, PERMISSION_CONTROL, 0, 0, handleNext, NULL);
+ addCommand(COMMAND_PREVIOUS, PERMISSION_CONTROL, 0, 0, handlePrevious,
+ NULL);
+ addCommand(COMMAND_LISTALL, PERMISSION_READ, 0, 1, handleListAll, NULL);
+ addCommand(COMMAND_VOLUME, PERMISSION_CONTROL, 1, 1, handleVolume,
+ NULL);
+ addCommand(COMMAND_REPEAT, PERMISSION_CONTROL, 1, 1, handleRepeat,
+ NULL);
+ addCommand(COMMAND_RANDOM, PERMISSION_CONTROL, 1, 1, handleRandom,
+ NULL);
+ addCommand(COMMAND_STATS, PERMISSION_READ, 0, 0, handleStats, NULL);
+ addCommand(COMMAND_CLEAR_ERROR, PERMISSION_CONTROL, 0, 0,
+ handleClearError, NULL);
+ addCommand(COMMAND_LIST, PERMISSION_READ, 1, -1, handleList, NULL);
+ addCommand(COMMAND_MOVE, PERMISSION_CONTROL, 2, 2, handleMove, NULL);
+ addCommand(COMMAND_MOVEID, PERMISSION_CONTROL, 2, 2, handleMoveId,
+ NULL);
+ addCommand(COMMAND_SWAP, PERMISSION_CONTROL, 2, 2, handleSwap, NULL);
+ addCommand(COMMAND_SWAPID, PERMISSION_CONTROL, 2, 2, handleSwapId,
+ NULL);
+ addCommand(COMMAND_SEEK, PERMISSION_CONTROL, 2, 2, handleSeek, NULL);
+ addCommand(COMMAND_SEEKID, PERMISSION_CONTROL, 2, 2, handleSeekId,
+ NULL);
+ addCommand(COMMAND_LISTALLINFO, PERMISSION_READ, 0, 1,
+ handleListAllInfo, NULL);
+ addCommand(COMMAND_PING, 0, 0, 0, handlePing, NULL);
+ addCommand(COMMAND_SETVOL, PERMISSION_CONTROL, 1, 1, handleSetVol,
+ NULL);
+ addCommand(COMMAND_PASSWORD, 0, 1, 1, handlePassword, NULL);
+ addCommand(COMMAND_CROSSFADE, PERMISSION_CONTROL, 1, 1, handleCrossfade,
+ NULL);
+ addCommand(COMMAND_URL_HANDLERS, PERMISSION_READ, 0, 0,
+ handleUrlHandlers, NULL);
+ addCommand(COMMAND_PLCHANGES, PERMISSION_READ, 1, 1,
+ handlePlaylistChanges, NULL);
+ addCommand(COMMAND_PLCHANGESPOSID, PERMISSION_READ, 1, 1,
+ handlePlaylistChangesPosId, NULL);
+ addCommand(COMMAND_ENABLE_DEV, PERMISSION_ADMIN, 1, 1,
+ handleEnableDevice, NULL);
+ addCommand(COMMAND_DISABLE_DEV, PERMISSION_ADMIN, 1, 1,
+ handleDisableDevice, NULL);
+ addCommand(COMMAND_DEVICES, PERMISSION_READ, 0, 0, handleDevices, NULL);
+ addCommand(COMMAND_COMMANDS, 0, 0, 0, handleCommands, NULL);
+ addCommand(COMMAND_NOTCOMMANDS, 0, 0, 0, handleNotcommands, NULL);
+
+ sortList(commandList);
+}
+
+void finishCommands(void)
+{
+ freeList(commandList);
+}
+
+static int checkArgcAndPermission(CommandEntry * cmd, FILE * fp,
+ int permission, int argc, char **argArray)
+{
+ int min = cmd->min + 1;
+ int max = cmd->max + 1;
if (cmd->reqPermission != (permission & cmd->reqPermission)) {
- if(fp) {
- commandError(fp, ACK_ERROR_PERMISSION,
- "you don't have permission for \"%s\"",
- cmd->cmd);
+ if (fp) {
+ commandError(fp, ACK_ERROR_PERMISSION,
+ "you don't have permission for \"%s\"",
+ cmd->cmd);
}
- return -1;
+ return -1;
}
- if (min == 0) return 0;
+ if (min == 0)
+ return 0;
- if (min == max && max != argc) {
- if(fp) {
- commandError(fp, ACK_ERROR_ARG,
- "wrong number of arguments for \"%s\"",
- argArray[0]);
+ if (min == max && max != argc) {
+ if (fp) {
+ commandError(fp, ACK_ERROR_ARG,
+ "wrong number of arguments for \"%s\"",
+ argArray[0]);
}
- return -1;
- }
- else if (argc < min) {
- if(fp) {
- commandError(fp, ACK_ERROR_ARG,
- "too few arguments for \"%s\"",
- argArray[0]);
+ return -1;
+ } else if (argc < min) {
+ if (fp) {
+ commandError(fp, ACK_ERROR_ARG,
+ "too few arguments for \"%s\"",
+ argArray[0]);
}
- return -1;
- }
- else if (argc > max && max /* != 0 */) {
- if(fp) {
- commandError(fp, ACK_ERROR_ARG,
- "too many arguments for \"%s\"",
- argArray[0]);
+ return -1;
+ } else if (argc > max && max /* != 0 */ ) {
+ if (fp) {
+ commandError(fp, ACK_ERROR_ARG,
+ "too many arguments for \"%s\"",
+ argArray[0]);
}
- return -1;
- }
- else return 0;
+ return -1;
+ } else
+ return 0;
}
-static CommandEntry * getCommandEntryAndCheckArgcAndPermission(FILE * fp,
- int * permission, int argArrayLength, char ** argArray)
+static CommandEntry *getCommandEntryAndCheckArgcAndPermission(FILE * fp,
+ int *permission,
+ int
+ argArrayLength,
+ char **argArray)
{
static char unknown[] = "";
- CommandEntry * cmd;
+ CommandEntry *cmd;
current_command = unknown;
- if(argArrayLength == 0) return NULL;
+ if (argArrayLength == 0)
+ return NULL;
- if(!findInList(commandList, argArray[0],(void *)&cmd)) {
- if(fp) {
+ if (!findInList(commandList, argArray[0], (void *)&cmd)) {
+ if (fp) {
commandError(fp, ACK_ERROR_UNKNOWN,
- "unknown command \"%s\"", argArray[0]);
+ "unknown command \"%s\"", argArray[0]);
}
- return NULL;
- }
+ return NULL;
+ }
current_command = cmd->cmd;
- if(checkArgcAndPermission(cmd, fp, *permission, argArrayLength,
- argArray) < 0)
- {
+ if (checkArgcAndPermission(cmd, fp, *permission, argArrayLength,
+ argArray) < 0) {
return NULL;
}
return cmd;
}
-static CommandEntry * getCommandEntryFromString(char * string, int * permission) {
- CommandEntry * cmd = NULL;
- char ** argArray;
- int argArrayLength = buffer2array(string,&argArray);
+static CommandEntry *getCommandEntryFromString(char *string, int *permission)
+{
+ CommandEntry *cmd = NULL;
+ char **argArray;
+ int argArrayLength = buffer2array(string, &argArray);
- if(0==argArrayLength) return NULL;
+ if (0 == argArrayLength)
+ return NULL;
- cmd = getCommandEntryAndCheckArgcAndPermission(NULL,permission,
- argArrayLength,argArray);
- freeArgArray(argArray,argArrayLength);
+ cmd = getCommandEntryAndCheckArgcAndPermission(NULL, permission,
+ argArrayLength,
+ argArray);
+ freeArgArray(argArray, argArrayLength);
return cmd;
}
-static int processCommandInternal(FILE * fp, int * permission,
- char * commandString,
- ListNode * commandNode)
+static int processCommandInternal(FILE * fp, int *permission,
+ char *commandString, ListNode * commandNode)
{
int argArrayLength;
- char ** argArray;
- CommandEntry * cmd;
+ char **argArray;
+ CommandEntry *cmd;
int ret = -1;
- argArrayLength = buffer2array(commandString,&argArray);
+ argArrayLength = buffer2array(commandString, &argArray);
- if(argArrayLength == 0) return 0;
+ if (argArrayLength == 0)
+ return 0;
- if((cmd = getCommandEntryAndCheckArgcAndPermission(fp,permission,
- argArrayLength,argArray)))
- {
- if(NULL==commandNode || NULL==cmd->listHandler) {
- ret = cmd->handler(fp, permission, argArrayLength,
- argArray);
- }
- else {
+ if ((cmd = getCommandEntryAndCheckArgcAndPermission(fp, permission,
+ argArrayLength,
+ argArray))) {
+ if (NULL == commandNode || NULL == cmd->listHandler) {
+ ret = cmd->handler(fp, permission, argArrayLength,
+ argArray);
+ } else {
ret = cmd->listHandler(fp, permission, argArrayLength,
- argArray, commandNode, cmd);
+ argArray, commandNode, cmd);
}
}
- freeArgArray(argArray,argArrayLength);
+ freeArgArray(argArray, argArrayLength);
current_command = NULL;
return ret;
}
-int processListOfCommands(FILE * fp, int * permission, int * expired,
- int listOK, List * list)
+int processListOfCommands(FILE * fp, int *permission, int *expired,
+ int listOK, List * list)
{
- ListNode * node = list->firstNode;
- ListNode * tempNode;
+ ListNode *node = list->firstNode;
+ ListNode *tempNode;
int ret = 0;
command_listNum = 0;
- while(node!=NULL) {
+ while (node != NULL) {
DEBUG("processListOfCommands: process command \"%s\"\n",
- node->data);
- ret = processCommandInternal(fp,permission,(char *)node->data,
- node);
- DEBUG("processListOfCommands: command returned %i\n",ret);
+ node->data);
+ ret = processCommandInternal(fp, permission, (char *)node->data,
+ node);
+ DEBUG("processListOfCommands: command returned %i\n", ret);
tempNode = node->nextNode;
- deleteNodeFromList(list,node);
+ deleteNodeFromList(list, node);
node = tempNode;
- if(ret!=0 || (*expired)!=0) node = NULL;
- else if(listOK) myfprintf(fp, "list_OK\n");
+ if (ret != 0 || (*expired) != 0)
+ node = NULL;
+ else if (listOK)
+ myfprintf(fp, "list_OK\n");
command_listNum++;
}
command_listNum = 0;
-
+
return ret;
}
-int processCommand(FILE * fp, int * permission, char * commandString) {
- return processCommandInternal(fp,permission,commandString,NULL);
+int processCommand(FILE * fp, int *permission, char *commandString)
+{
+ return processCommandInternal(fp, permission, commandString, NULL);
}