aboutsummaryrefslogtreecommitdiffstats
path: root/src/command.c (unfollow)
Commit message (Collapse)AuthorFilesLines
2008-10-31path: removed sanitizePathDup()Max Kellermann1-4/+2
We don't need to sanitize the path, because the mapper already checks for malformed paths.
2008-10-31client: use GSList instead of struct strnode for command listsMax Kellermann1-7/+6
Replace a custom data structure with a GLib one.
2008-10-26command: removed range check from check_bool()Max Kellermann1-6/+0
check_bool() accepts only "0" or "1". The range check is superfluous.
2008-10-23command: fix boolean value parserMax Kellermann1-1/+1
Due to a logic error, no value was valid for the boolean value parser. Replace "||" with "&&".
2008-10-23stored_playlist: renamed and moved spl_delete() to stored_playlist.cMax Kellermann1-1/+1
The function deletePlaylist() shouldn't be in playlist.c.
2008-10-23command: check over/underflows in check_int()Max Kellermann1-2/+13
The "long" result of strtol() was implicitly casted down to a 32 bit integer. Add some range checking instead.
2008-10-23command: added check_unsigned() / check_bool()Max Kellermann1-13/+57
Many command arguments must not be negative; add a separate parser/checker function for that. For the same reason, add check_bool(). This eliminates two strange special cases handlers from check_int().
2008-10-23playlist: unsigned integersMax Kellermann1-3/+3
There are some integers which have a "magic" -1 value which means "undefined" or "nothing". All others can be converted to unsigned, since they must not contain a negative number.
2008-10-22command: use the bool datatype instead of intMax Kellermann1-50/+51
Instead of returning 0 for success and -1 for failure, return true or false. This seems more natural.
2008-10-22command: converted COMMAND_RETURN_* macros to enumMax Kellermann1-163/+165
Also add names for "error" and "ok". I don't like passing anonymous integer codes around. This is not yet complete: lots of functions (e.g. in playlist.c) follow the same convention of -1/0, and these have to be adapted, too.
2008-10-22command: replaced "goto" with "break"Max Kellermann1-2/+2
http://xkcd.com/292/
2008-10-22command: no CamelCaseMax Kellermann1-227/+247
Eliminate CamelCase in all public and static functions.
2008-10-22command: removed CommandHandlerFunction typedefMax Kellermann1-3/+1
The typedef CommandHandlerFunction is only used once. Move its type into the command struct.
2008-10-22ack: converted ACK_ERROR_* macros to enumMax Kellermann1-2/+2
2008-10-22stored_playlist: send timestampsMax Kellermann1-0/+8
Send last modification timestamps to the client. This allows the client to see when another client modifies a stored playlist.
2008-10-22command: added command "listplaylists"Max Kellermann1-0/+17
"listplaylists" returns a list of all stored playlists. This command seems more elaborate than listing them below "lsinfo".
2008-10-22command: added print_spl_list()Max Kellermann1-2/+18
The function print_spl_list() replaces the old function lsPlaylists() from ls.c.
2008-10-22stored_playlist: de-CamelCase moved functionMax Kellermann1-2/+2
Rename addToStoredPlaylist() to spl_append_uri(), and remove the clearStoredPlaylist() macro.
2008-10-22stored_playlist: no CamelCaseMax Kellermann1-3/+3
Renamed all public functions, prefix is "spl_".
2008-10-22renamed storedPlaylist.c to stored_playlist.cMax Kellermann1-1/+1
No CamelCase in file names.
2008-10-22command: added "commands" array instead of registering manuallyMax Kellermann1-193/+145
The list of commands is known at compile time. Instead of creating a linked list on startup, we can just register all commands in a static sorted array.
2008-10-22command: make command pointers constantMax Kellermann1-12/+13
The command pointers which are passed around aren't being modified - in fact, no command pointer must be modified once it has been added to the commandList.
2008-10-22command: renamed CommandEntry to struct commandMax Kellermann1-12/+10
No CamelCase and no struct typedefs.
2008-10-17client: converted permissions to unsignedMax Kellermann1-7/+7
client->permission is a bit set, and should be unsigned.
2008-10-17command: expect "file:///" url for local filesMax Kellermann1-4/+7
When adding a local file, clients have to use the "file" URI schema described in RFC 1738 3.10. By adding this schema to "urlhandlers", a client can detect whether this feature is available.
2008-10-16command: special case for "add /"Max Kellermann1-1/+1
The undocumented command "add /" adds the full music database to the playlist. Don't interpret this special path as a local file path.
2008-10-15playlist: added support for adding songs not in the music databaseMax Kellermann1-1/+17
Clients which have authenticated via unix socket may add local files to the MPD playlist, provided that they own the file.
2008-10-15command: print error message on "addid" failureMax Kellermann1-1/+1
Returning the playlist_result value from a command handler does not make sense. Call print_playlist_result() there, and forward its return value.
2008-10-14command: added command "idle"Max Kellermann1-0/+12
"idle" waits until something noteworthy happens on the server, e.g. song change, playlist modified, database updated. This allows clients to keep up to date without polling.
2008-10-10player: added player_get_audio_format()Max Kellermann1-2/+3
player_get_audio_format() replaces getPlayerSampleRate(), getPlayerBits(), getPlayerChannels().
2008-10-10player: added player_control.audio_formatMax Kellermann1-1/+1
This replaces the attributes bits, channels, sampleRate.
2008-10-09update: make the job id unsignedMax Kellermann1-1/+1
Since the return value cannot be -1 anymore, we can make it unsigned.
2008-10-09update: job ID must be positiveMax Kellermann1-15/+11
The documentation for directory_update_init() was incorrect: a job ID must be positive, not non-negative. If the update queue is full and no job was created, it makes more sense to return 0 instead of -1, because it is more consistent with the return value of isUpdatingDB().
2008-10-09diretory: moved code to directory_save.c, directory_print.cMax Kellermann1-0/+1
Remove clutter from directory.c. Everything which saves or loads to/from the hard disk goes to directory_save.c, and code which sends directory information to the client is moved into directory_print.c.
2008-10-09Fix error code for "Playlist already exists"Qball Cow1-1/+1
With commit 6dcd7fea (if I am not mistaken) the error returned when you try to save to an existing playlist is wrong. Instead of MPD_ACK_ERROR_EXIST, MPD_ACK_ERROR_NO_EXIST is returned. This is obviously wrong and breaks gmpc.
2008-10-08database: renamed functions, "db_" prefix and no CamelCaseMax Kellermann1-1/+1
Yet another CamelCase removal patch.
2008-10-08database: removed printDirectoryInfo()Max Kellermann1-1/+5
The same can be achieved with directory_print(db_get_directory()).
2008-10-08directory: moved code to database.cMax Kellermann1-0/+1
Taming the directory.c monster, part II: move the database management stuff to database. directory.c should only contain code which works on directory objects.
2008-10-08directory: moved code to update.cMax Kellermann1-0/+1
The source directory.c mixes several libraries: directory object management, database management and database update, resulting in a 1000+ line monster. Move the whole database update code to update.c.
2008-10-06command: fix return statusEric Wong1-17/+8
This got broken when listHandlerFunc was removed. Since we no longer need it and it's confusing, remove processCommandInternal and just use process_command.
2008-10-06command: get rid of specialized list handlersEric Wong1-88/+67
commands should really not behave differently if they're issued inside a command list or not; so stop having special handler functions to deal with them. "update" was the only command that used this functionality and I changed that in the last commit to serialize access.
2008-10-06directory: simplify list update handling logicEric Wong1-61/+18
Now the "update" command can be issued multiple times regardless of whether the client is in list mode or not. We serialize the update tasks to prevent updates from trampling over each other and will spawn another update task once the current one is finished updating and reaped. Right now we cap the queue size to 32 which is probably enough (I bet most people usually run update with no argument anyways); but we can make it grow/shrink dynamically if needed. There'll still be a hard-coded limit to prevent DoS attacks, though.
2008-09-29switch to C99 types, part IIMax Kellermann1-3/+3
Do full C99 integer type conversion in all modules which were not touched by Eric's merged patch.
2008-09-29command: don't clobber next list value when preparsingEric Wong1-3/+6
This only breaks "update" under list command mode and no other commands. This can be done more optimally without the extra heap allocation via xstrdup(); but is uncommon enough to not matter.
2008-09-25update: send proper response to the clientMax Kellermann1-5/+8
Due to a merge error, I broke the function handleUpdate(). It did not do anything for the global update, and it did not send a proper response to the client. This patch fixes both bugs.
2008-09-23command: fix command "addid"Max Kellermann1-1/+1
With patch 8d2830b3, I broke "addid": it did not return the id of the new song, because of a typo in the return condition (== instead of !=).
2008-09-23directory: update do its work inside a threadEric Wong1-41/+6
A lot of the preparation was needed (and done in previous months) in making update thread-safe, but here it is. This was the first thing I made work inside a thread when I started mpd-uclinux many years ago, and also the last thing I've done in mainline mpd to work inside a thread, go figure.
2008-09-07playlist: return -1 after assert(0)Max Kellermann1-0/+1
print_playlist_result() had an assert(0) at the end, in case there was an invalid result value. With NDEBUG, this resulted in a function not returning a value - add a dummy "return -1" at the end to keep gcc quiet.
2008-09-07command: use client_[gs]et_permission()Max Kellermann1-78/+83
Don't pass a pointer to client->permission to processCommand(), better let the code in command.c use the new permission getter/setter functions.
2008-09-07command: don't pass permission as pointer where appropriateMax Kellermann1-6/+6
Some functions don't want to modify a client's permission set. Pass the permissions to them by value, not by reference.