Commit Graph

163 Commits

Author SHA1 Message Date
Eric Wong
4cf5d04ca1 interface/connection malloc reductions from mpd-ke
This patch massively reduces the amount of heap allocations at
the interface/command layer.  Most commands with minimal output
should not allocate memory from the heap at all.  Things like
repeatedly polling status, currentsong, and volume changes
should be faster as a result, and more importantly, not a source
of memory fragmentation.

These changes should be safe in that there's no way for a
remote-client to corrupt memory or otherwise do bad stuff to
MPD, but an extra set of eyes to review would be good.  Of
course there's never any warranty :)

No longer do we use FILE * structures in the interface, which means
we don't have to allocate any new memory for most connections.

Now, before you go on about losing the buffering that FILE *
+implies+, remember that myfprintf() never took advantage of
any of the stdio buffering features.

To reduce the diff and make bugs easier to spot in the diff,
I've kept myfprintf in places where we write to files (and not
network interfaces).  Expect myfprintf to go away entirely soon
(we'll use fprintf for writing regular files).

git-svn-id: https://svn.musicpd.org/mpd/trunk@4483 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-07-30 03:43:38 +00:00
Eric Wong
f08342c11f replace buffer2array() with cstrtok() from mpd-ke
This modifies the string in place, and does not allocate any memory from
the heap.  This is considerably smaller than the function it replaces,
and will be instrumental in getting the commands/conf malloc reductions
done.

git-svn-id: https://svn.musicpd.org/mpd/trunk@4481 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-07-29 18:55:00 +00:00
Eric Wong
f05166a6a0 command.c: shorten common variable names to argc and argv
Any C programmer with half a clue knows they mean argArrayLength
and argArray, and I find the code much easier to read and work with.

git-svn-id: https://svn.musicpd.org/mpd/trunk@4480 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-07-29 18:54:56 +00:00
Avuton Olrich
29a25b9933 Add mpd-indent.sh
Indent the entire tree, hopefully we can keep
it indented.

git-svn-id: https://svn.musicpd.org/mpd/trunk@4410 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-07-20 16:02:40 +00:00
Warren Dukes
0bf396d610 some quick hacks to avoid signedness warnings with gcc4
git-svn-id: https://svn.musicpd.org/mpd/trunk@4387 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-07-17 21:46:32 +00:00
Eric Wong
a234780aab sparse: ANSI-fy function declarations
These are just warnings from sparse, but it makes the output
easier to read.  I ran this through a quick perl script, but
of course verified the output by looking at the diff and making
sure the thing still compiles.

here's the quick perl script I wrote to generate this patch:
----------- 8< -----------
use Tie::File;
defined(my $pid = open my $fh, '-|') or die $!;
if (!$pid) {
open STDERR, '>&STDOUT' or die $!;
exec 'sparse', @ARGV or die $!;
}
my $na = 'warning: non-ANSI function declaration of function';
while (<$fh>) {
print STDERR $_;
if (/^(.+?\.[ch]):(\d+):(\d+): $na '(\w+)'/o) {
my ($f, $l, $pos, $func) = ($1, $2, $3, $4);
$l--;
tie my @x, 'Tie::File', $f or die "$!: $f";
print '-', $x[$l], "\n";
$x[$l] =~ s/\b($func\s*)\(\s*\)/$1(void)/;
print '+', $x[$l], "\n";
untie @x;
}
}

git-svn-id: https://svn.musicpd.org/mpd/trunk@4378 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-07-17 00:15:34 +00:00
Eric Wong
5070f8bc78 command.c: fix a format-string error (go sparse!)
git-svn-id: https://svn.musicpd.org/mpd/trunk@4356 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-07-15 13:58:02 +00:00
J. Alexander Treuman
2fa7125cce Change shank's email address
git-svn-id: https://svn.musicpd.org/mpd/trunk@4333 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-07-14 19:37:45 +00:00
Avuton Olrich
e39289a987 [CLEANUP] Remove unnecessary includes, static
functions that don't need to be exported, rename
misspelled function

git-svn-id: https://svn.musicpd.org/mpd/trunk@4325 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-07-14 18:47:55 +00:00
Avuton Olrich
a37348a74f Huge header update, update the copyright and add
the GPL header where necessary

git-svn-id: https://svn.musicpd.org/mpd/trunk@4317 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-07-13 19:20:34 +00:00
Qball Cow
751368f257 outputs now only needs read permission
git-svn-id: https://svn.musicpd.org/mpd/trunk@4127 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-04-27 22:28:26 +00:00
Qball Cow
5416d00bcd Adding of plchangesposid command, this is a stripped down version of the plchanges command, it only sends the pos and id of the changed command. Libmpd allready has support for it, and libmpdclient in libmpd too
git-svn-id: https://svn.musicpd.org/mpd/trunk@4101 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-04-23 11:10:41 +00:00
Eric Wong
10afe91c64 src/command.c: protocol commands are all lowercase, _always_
git-svn-id: https://svn.musicpd.org/mpd/trunk@3950 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-03-26 17:43:52 +00:00
Qball Cow
09929b6f82 Support for fetching the content of a stored playlist (patch by qball), this adds listPlaylist and listPlaylistInfo
git-svn-id: https://svn.musicpd.org/mpd/trunk@3947 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-03-26 13:46:05 +00:00
Eric Wong
97e355e362 command.c: remove unnecessary strdup()
git-svn-id: https://svn.musicpd.org/mpd/trunk@3924 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-03-16 06:41:45 +00:00
Warren Dukes
536c97f0bc fix addid crash ( found by qball )
git-svn-id: https://svn.musicpd.org/mpd/trunk@3805 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-01-07 03:26:12 +00:00
Qball Cow
6723e65cdf Fix AddId handler, It tried to add the first argument instead of the 2nd. Resulting it tries to add "addid"
git-svn-id: https://svn.musicpd.org/mpd/trunk@3427 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2005-08-07 18:47:49 +00:00
Warren Dukes
986a0ffc24 fix spelling error
git-svn-id: https://svn.musicpd.org/mpd/trunk@3245 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2005-05-07 00:46:44 +00:00
Warren Dukes
6db819cefe 'add' command now requires one argument
git-svn-id: https://svn.musicpd.org/mpd/trunk@3236 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2005-05-03 02:35:19 +00:00
Warren Dukes
d4352ac996 undo change 3081
git-svn-id: https://svn.musicpd.org/mpd/trunk@3085 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2005-03-15 23:18:23 +00:00
Avuton Olrich
593e1343da - Add 'mute' command for testing
- Revamp AUTHORS file

git-svn-id: https://svn.musicpd.org/mpd/trunk@3081 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2005-03-14 02:35:46 +00:00
Warren Dukes
23eef1f732 fix logic for commands and notcommands for real this time
git-svn-id: https://svn.musicpd.org/mpd/trunk@2740 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-11-23 20:54:20 +00:00
Warren Dukes
e034e2889c fix a little logic bomb in commands && notcommands
git-svn-id: https://svn.musicpd.org/mpd/trunk@2739 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-11-23 19:48:34 +00:00
Warren Dukes
498fe12702 added "notcommands" command
git-svn-id: https://svn.musicpd.org/mpd/trunk@2738 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-11-23 19:46:33 +00:00
Warren Dukes
86afc13c7e optimized read() on clients, should be much, much faster now
git-svn-id: https://svn.musicpd.org/mpd/trunk@2649 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-11-14 05:38:49 +00:00
Warren Dukes
4735ddce40 correct a type in the error message
git-svn-id: https://svn.musicpd.org/mpd/trunk@2625 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-11-12 01:47:52 +00:00
Warren Dukes
1f118ea90d now more flexible list, search, find, where you can enter pairs of
"conditionals".  Note that logical and is implied.

git-svn-id: https://svn.musicpd.org/mpd/trunk@2624 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-11-12 01:44:27 +00:00
Warren Dukes
d6a87f538d ok, now song->url is only the filename, not the full path to the song
git-svn-id: https://svn.musicpd.org/mpd/trunk@2602 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-11-11 02:59:16 +00:00
Warren Dukes
c5d27d8eaa merge changes from metadata-rewrite branch
git-svn-id: https://svn.musicpd.org/mpd/trunk@2589 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-11-10 21:58:27 +00:00
Warren Dukes
b3f3f35f99 new command "commands" for avuton
git-svn-id: https://svn.musicpd.org/mpd/trunk@2547 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-11-08 18:01:36 +00:00
Warren Dukes
f468aba16e new command "addid", this is the same as "add" command, except it also returns the songid of the added song. Note that "addid" does not work on directories
git-svn-id: https://svn.musicpd.org/mpd/trunk@2487 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-11-02 23:44:33 +00:00
Warren Dukes
78c5d884d2 new command "devices", prints devices and their states
git-svn-id: https://svn.musicpd.org/mpd/trunk@2486 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-11-02 23:08:00 +00:00
Warren Dukes
44eb26c16f new commands: enalbe_device, and disable_device, (maybe these commands should be toggles instead of two seperate commands?)
also, on close device, close the shout connection

git-svn-id: https://svn.musicpd.org/mpd/trunk@2485 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-11-02 22:13:58 +00:00
Warren Dukes
3af870a14c fix playlistid command so it can take an argument
git-svn-id: https://svn.musicpd.org/mpd/trunk@1575 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-06-19 23:59:26 +00:00
Warren Dukes
80dd76db7f fix C99 stuff for commandError
also some slight optimizations to interfacePrintWithFD() and myfprintf()

git-svn-id: https://svn.musicpd.org/mpd/trunk@1503 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-06-15 18:06:21 +00:00
Warren Dukes
c024bca2d6 make swapid and deleteid actually work
git-svn-id: https://svn.musicpd.org/mpd/trunk@1461 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-06-13 13:05:19 +00:00
Warren Dukes
593cf2ac86 make seekid actually work
git-svn-id: https://svn.musicpd.org/mpd/trunk@1460 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-06-13 13:03:37 +00:00
Warren Dukes
edbe24e2f7 make playid actually work
git-svn-id: https://svn.musicpd.org/mpd/trunk@1459 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-06-13 13:02:00 +00:00
Warren Dukes
21703b5edc change 'current' command to 'currentsong'
git-svn-id: https://svn.musicpd.org/mpd/trunk@1447 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-06-12 13:30:16 +00:00
Warren Dukes
491027a5fc todo update
git-svn-id: https://svn.musicpd.org/mpd/trunk@1433 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-06-10 04:13:23 +00:00
Warren Dukes
d217505dc6 implemented songid commands: playlistid, playid, seekid, deleteid, moveid, swapid
git-svn-id: https://svn.musicpd.org/mpd/trunk@1408 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-06-09 02:50:44 +00:00
Warren Dukes
ae44b7dae5 potential bugfixes for handling metadata in player/decoder
git-svn-id: https://svn.musicpd.org/mpd/trunk@1369 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-06-07 12:11:57 +00:00
Warren Dukes
a8a8aacdb3 implement list_OK/command_list_ok_begin
update COMMANDS

git-svn-id: https://svn.musicpd.org/mpd/trunk@1344 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-06-05 16:01:44 +00:00
Warren Dukes
c2c34f78dd new command, plchanges, and also add Num: to songinfo of playlistinfo
git-svn-id: https://svn.musicpd.org/mpd/trunk@1339 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-06-05 01:14:37 +00:00
Warren Dukes
630d33b234 finish ack error codes
git-svn-id: https://svn.musicpd.org/mpd/trunk@1325 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-06-04 02:51:54 +00:00
Warren Dukes
f958e0a4c5 work on ACK error codes
git-svn-id: https://svn.musicpd.org/mpd/trunk@1324 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-06-04 01:58:31 +00:00
Warren Dukes
ef6c500edb clean up ACK error coding a little bit
git-svn-id: https://svn.musicpd.org/mpd/trunk@1321 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-06-04 00:49:33 +00:00
Warren Dukes
15c61f6eb0 don't stop on play command!
git-svn-id: https://svn.musicpd.org/mpd/trunk@1313 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-06-03 02:56:26 +00:00
Warren Dukes
b48ac2dfa3 add urlhandlers command, but prolly not needed
git-svn-id: https://svn.musicpd.org/mpd/trunk@1307 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-06-02 23:22:37 +00:00
Warren Dukes
4a541faf12 by popular demand: have stop remember the current song and play will start
playing from the stopped song.

git-svn-id: https://svn.musicpd.org/mpd/trunk@1139 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-05-23 14:12:05 +00:00
Warren Dukes
965e6edcf1 redimentary addition of url's to playlist
git-svn-id: https://svn.musicpd.org/mpd/trunk@1000 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-05-13 18:46:38 +00:00
Warren Dukes
3ea87a52c6 round crossfade for status
git-svn-id: https://svn.musicpd.org/mpd/trunk@775 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-04-15 16:16:19 +00:00
Warren Dukes
549344d38a add vim shiznit to end of all source files
git-svn-id: https://svn.musicpd.org/mpd/trunk@750 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-04-14 14:53:41 +00:00
Warren Dukes
b68417a643 cleanup interface between interface.[ch] and command.[ch]
primarily move all buffer2array stuff from interface.c to command.c
and write a new command function explicitly for dealing with commandLists

git-svn-id: https://svn.musicpd.org/mpd/trunk@701 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-04-12 01:44:52 +00:00
Warren Dukes
fc7a264e4d incremental updates and command-list/update kung fu
this needs some serious cleaning up and testing

git-svn-id: https://svn.musicpd.org/mpd/trunk@692 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-04-11 17:37:47 +00:00
Warren Dukes
c77011bf2a update job id stuff
git-svn-id: https://svn.musicpd.org/mpd/trunk@673 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-04-11 03:12:00 +00:00
Warren Dukes
4cfd77be95 updating_db in status and some ideas for the TODO that i've already forgotten
git-svn-id: https://svn.musicpd.org/mpd/trunk@669 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-04-11 02:34:26 +00:00
Warren Dukes
12ee016607 make "update" command background/non-blocking
git-svn-id: https://svn.musicpd.org/mpd/trunk@665 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-04-11 01:53:25 +00:00
Warren Dukes
997541e1eb increment playlist version on update, so clients know to update
git-svn-id: https://svn.musicpd.org/mpd/trunk@240 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-03-10 10:00:47 +00:00
Warren Dukes
a78c5e4aea crossfade should always be displayed in status
git-svn-id: https://svn.musicpd.org/mpd/trunk@77 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-02-27 01:38:18 +00:00
Warren Dukes
9b1c550597 add xfade and audio to status, remove crossfade no args options
git-svn-id: https://svn.musicpd.org/mpd/trunk@75 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-02-27 01:35:23 +00:00
Warren Dukes
aaf4282654 have pause take an optional arugment
git-svn-id: https://svn.musicpd.org/mpd/trunk@43 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-02-25 00:08:48 +00:00
Warren Dukes
d35747a40c import from SF CVS
git-svn-id: https://svn.musicpd.org/mpd/trunk@1 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-02-23 23:41:20 +00:00