--- /dev/null
+diff --git a/src/command.c b/src/command.c
+index 2140173..aad82cc 100644
+--- a/src/command.c
++++ b/src/command.c
+@@ -335,6 +335,26 @@ int cmd_play ( int argc, char ** argv, mpd_Connection * conn )
+ return 1;
+ }
+
++int cmd_playid ( int argc, char ** argv, mpd_Connection * conn )
++{
++ int song;
++ int i;
++
++ if(0==argc) song = MPD_PLAY_AT_BEGINNING;
++ else {
++ for(i=0;i<argc-1;i++)
++ printf("skipping: %s\n",argv[i]);
++
++ if(!parse_songnum(argv[i], &song))
++ DIE("error parsing song numbers from: %s\n",argv[i]);
++ }
++
++ mpd_sendPlayIdCommand(conn,song);
++ my_finishCommand(conn);
++
++ return 1;
++}
++
+ int
+ cmd_seek(mpd_unused int argc, mpd_unused char **argv, mpd_Connection *conn)
+ {
+diff --git a/src/command.h b/src/command.h
+index e68f433..5a9d896 100644
+--- a/src/command.h
++++ b/src/command.h
+@@ -28,6 +28,7 @@ int cmd_add ( int argc, char ** argv, mpd_Connection * conn ) ;
+ int cmd_crop ( int argc, char ** argv, mpd_Connection * conn );
+ int cmd_del ( int argc, char ** argv, mpd_Connection * conn );
+ int cmd_play ( int argc, char ** argv, mpd_Connection * conn );
++int cmd_playid ( int argc, char ** argv, mpd_Connection * conn );
+ int cmd_next ( int argc, char ** argv, mpd_Connection * conn );
+ int cmd_prev ( int argc, char ** argv, mpd_Connection * conn );
+ int cmd_pause ( int argc, char ** argv, mpd_Connection * conn );
+diff --git a/src/main.c b/src/main.c
+index c0fd83c..1ce0a4c 100644
+--- a/src/main.c
++++ b/src/main.c
+@@ -58,6 +58,7 @@ struct _mpc_table {
+ {"crop", 0, 0, 0, cmd_crop, "", "Remove all but the currently playing song"},
+ {"del", 0, -1, 1, cmd_del, "<position>", "Remove a song from the current playlist"},
+ {"play", 0, -1, 2, cmd_play, "[<position>]", "Start playing at <position> (default: 1)"},
++ {"playid", 0, -1, 2, cmd_playid, "[<id>]", "Start playing at track <id>"},
+ {"next", 0, 0, 0, cmd_next, "", "Play the next song in the current playlist"},
+ {"prev", 0, 0, 0, cmd_prev, "", "Play the previous song in the current playlist"},
+ {"pause", 0, 0, 0, cmd_pause, "", "Pauses the currently playing song"},
--- /dev/null
+# Copyright 1999-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-sound/mpc/mpc-0.16.ebuild,v 1.1 2009/05/25 20:22:16 angelos Exp $
+
+EAPI=2
+inherit eutils bash-completion
+
+DESCRIPTION="A commandline client for Music Player Daemon (media-sound/mpd)"
+HOMEPAGE="http://www.musicpd.org"
+SRC_URI="mirror://sourceforge/musicpd/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~hppa ~ppc ~ppc64 ~sparc ~x86"
+IUSE="iconv"
+
+RDEPEND="iconv? ( virtual/libiconv )"
+DEPEND="${RDEPEND}"
+
+src_unpack() {
+ unpack ${A};
+
+ cd "${S}"
+ epatch ${FILESDIR}/${P}-playid.patch
+}
+
+src_configure() {
+ econf --disable-dependency-tracking \
+ $(use_enable iconv)
+}
+
+src_install() {
+ emake install DESTDIR="${D}" || die "emake install failed"
+ dodoc AUTHORS NEWS README
+ dodoc doc/mpd-m3u-handler.sh doc/mppledit doc/mpd-pls-handler.sh
+ rm -rf "${D}"/usr/share/doc/${PN}
+ rmdir "${D}"/usr/share/${PN}
+
+ dobashcompletion doc/mpc-bashrc
+}