aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorWarren Dukes <warren.dukes@gmail.com>2004-06-04 01:58:31 +0000
committerWarren Dukes <warren.dukes@gmail.com>2004-06-04 01:58:31 +0000
commitf958e0a4c5bb7241b2ec443a402d10c29abfc08f (patch)
treeaeaaf910ae09cffaa0289223503f12dcdfcb8245 /src
parentd22e5ec5228ccb3f6fd843cebc4662953f42451d (diff)
downloadmpd-f958e0a4c5bb7241b2ec443a402d10c29abfc08f.tar.gz
mpd-f958e0a4c5bb7241b2ec443a402d10c29abfc08f.tar.xz
mpd-f958e0a4c5bb7241b2ec443a402d10c29abfc08f.zip
work on ACK error codes
git-svn-id: https://svn.musicpd.org/mpd/trunk@1324 09075e82-0dd4-0310-85a5-a0d7c8717e4f
Diffstat (limited to '')
-rw-r--r--src/command.c16
-rw-r--r--src/command.h17
-rw-r--r--src/playlist.c44
-rw-r--r--src/tables.c3
4 files changed, 43 insertions, 37 deletions
diff --git a/src/command.c b/src/command.c
index 121c9358e..b83daa8eb 100644
--- a/src/command.c
+++ b/src/command.c
@@ -106,6 +106,9 @@ struct _CommandEntry {
CommandListHandlerFunction listHandler;
};
+char * current_command = NULL;
+int command_listNum = 0;
+
CommandEntry * getCommandEntryFromString(char * string, int * permission);
List * commandList;
@@ -679,8 +682,11 @@ int checkArgcAndPermission(CommandEntry * cmd, FILE *fp,
CommandEntry * getCommandEntryAndCheckArgcAndPermission(FILE * fp,
unsigned int * permission, int argArrayLength, char ** argArray)
{
+ static char unknown[] = "";
CommandEntry * cmd;
+ current_command = unknown;
+
if(argArrayLength == 0) return NULL;
if(!findInList(commandList, argArray[0],(void *)&cmd)) {
@@ -688,6 +694,8 @@ CommandEntry * getCommandEntryAndCheckArgcAndPermission(FILE * fp,
return NULL;
}
+ current_command = cmd->cmd;
+
if(checkArgcAndPermission(cmd, fp, *permission, argArrayLength,
argArray) < 0)
{
@@ -739,6 +747,8 @@ int processCommandInternal(FILE * fp, unsigned int * permission,
freeArgArray(argArray,argArrayLength);
+ current_command = NULL;
+
return ret;
}
@@ -749,6 +759,8 @@ int proccessListOfCommands(FILE * fp, int * permission, int * expired,
ListNode * tempNode;
int ret = 0;
+ command_listNum = 0;
+
while(node!=NULL) {
DEBUG("proccesListOfCommands: process command \"%s\"\n",
node->data);
@@ -759,7 +771,10 @@ int proccessListOfCommands(FILE * fp, int * permission, int * expired,
deleteNodeFromList(list,node);
node = tempNode;
if(ret!=0 || (*expired)!=0) node = NULL;
+ command_listNum++;
}
+
+ command_listNum = 0;
return ret;
}
@@ -767,4 +782,3 @@ int proccessListOfCommands(FILE * fp, int * permission, int * expired,
int processCommand(FILE * fp, unsigned int * permission, char * commandString) {
return processCommandInternal(fp,permission,commandString,NULL);
}
-/* vim:set shiftwidth=4 tabstop=8 expandtab: */
diff --git a/src/command.h b/src/command.h
index 3aad04dca..8e2b90711 100644
--- a/src/command.h
+++ b/src/command.h
@@ -29,6 +29,9 @@
#define COMMAND_RETURN_KILL 10
#define COMMAND_RETURN_CLOSE 20
+extern char * current_command;
+extern int command_listNum;
+
int proccessListOfCommands(FILE * fp, int * permission, int * expired,
List * list);
@@ -40,6 +43,18 @@ void finishCommands();
#define commandSuccess(fp) myfprintf(fp, "OK\n")
-#define commandError(fp, format, ... ) myfprintf(fp, "ACK " format "\n", ##__VA_ARGS__)
+#define commandError(fp, format, ... ) \
+ {\
+ if(current_command) { \
+ myfprintf(fp, "ACK [%s:%i] " format "\n", \
+ current_command, command_listNum, \
+ ##__VA_ARGS__); \
+ current_command = NULL; \
+ } \
+ else { \
+ myfprintf(fp, "ACK [:%i] " format "\n", \
+ command_listNum, ##__VA_ARGS__); \
+ } \
+ }
#endif
diff --git a/src/playlist.c b/src/playlist.c
index d1691b5ed..9c8755216 100644
--- a/src/playlist.c
+++ b/src/playlist.c
@@ -375,7 +375,7 @@ int playlistInfo(FILE * fp,int song) {
end = song+1;
}
if(song>=playlist.length) {
- commandError(fp, "song doesn't exist");
+ commandError(fp, "song doesn't exist: \"%i\"", song);
return -1;
}
@@ -535,11 +535,11 @@ int swapSongsInPlaylist(FILE * fp, int song1, int song2) {
int currentSong = -1;
if(song1<0 || song1>=playlist.length) {
- commandError(fp,"\"%i\" is not in the playlist", song1);
+ commandError(fp, "song doesn't exist: \"%i\"", song1);
return -1;
}
if(song2<0 || song2>=playlist.length) {
- commandError(fp, "\"%i\" is not in the playlist", song2);
+ commandError(fp, "song doesn't exist: \"%i\"", song2);
return -1;
}
@@ -585,12 +585,8 @@ int deleteFromPlaylist(FILE * fp, int song) {
int i;
int songOrder;
- if(song<0) {
- commandError(fp, "need a positive integer");
- return -1;
- }
- if(song>=playlist.length) {
- commandError(fp, "song doesn't exist");
+ if(song<0 || song>=playlist.length) {
+ commandError(fp, "song doesn't exist: \"%i\"", song);
return -1;
}
@@ -713,18 +709,8 @@ int playPlaylist(FILE * fp, int song, int stopOnError) {
i = 0;
}
}
- else if(song<0) {
- commandError(fp, "need integer >= -1");
- playlist_state = PLAYLIST_STATE_STOP;
- return -1;
- }
- if(!playlist.length) {
- commandError(fp, "playlist is empty");
- playlist_state = PLAYLIST_STATE_STOP;
- return -1;
- }
- else if(song>=playlist.length) {
- commandError(fp, "song doesn't exist");
+ else if(song<0 || song>=playlist.length) {
+ commandError(fp, "song doesn't exist: \"%i\"", song);
playlist_state = PLAYLIST_STATE_STOP;
return -1;
}
@@ -869,12 +855,12 @@ int moveSongInPlaylist(FILE * fp, int from, int to) {
int currentSong = -1;
if(from<0 || from>=playlist.length) {
- commandError(fp, "\"%i\" is not a song in the playlist", from);
+ commandError(fp, "song doesn't exist: \"%i\"", from);
return -1;
}
if(to<0 || to>=playlist.length) {
- commandError(fp, "\"%i\" is not a song in the playlist", to);
+ commandError(fp, "song doesn't exist: \"%i\"", to);
return -1;
}
@@ -1253,16 +1239,8 @@ int getPlaylistLength() {
int seekSongInPlaylist(FILE * fp, int song, float time) {
int i = song;
- if(song<0) {
- commandError(fp, "need integer >= -1");
- return -1;
- }
- if(!playlist.length) {
- commandError(fp, "playlist is empty");
- return -1;
- }
- else if(song>=playlist.length) {
- commandError(fp, "song doesn't exist");
+ if(song<0 || song>=playlist.length) {
+ commandError(fp, "song doesn't exist: \"%i\"", song);
return -1;
}
diff --git a/src/tables.c b/src/tables.c
index 114f71d15..0270319f4 100644
--- a/src/tables.c
+++ b/src/tables.c
@@ -192,8 +192,7 @@ int printAllKeysOfTable(FILE * fp, char * table, char * arg1) {
return printAllAlbums(fp,arg1);
}
else {
- commandError(fp, "table \"%s\" does not exist or not available "
- "for listing", table);
+ commandError(fp, "table \"%s\" does not exist", table);
return -1;
}
}