chiark / gitweb /
play command
authorRichard Kettlewell <rjk@greenend.org.uk>
Sat, 5 Jun 2010 13:46:04 +0000 (14:46 +0100)
committerRichard Kettlewell <rjk@terraraq.org.uk>
Sat, 6 Aug 2011 17:19:07 +0000 (18:19 +0100)
cgi/actions.c
clients/disorder.c
lib/client-stubs.c
lib/client-stubs.h
lib/client.c
lib/client.h
scripts/protocol

index f6755b0317ad2ca080c1d28098e3902df38cb559..584da76c040a88c0ea8988c17366c7ae86201acd 100644 (file)
@@ -240,16 +240,17 @@ static void act_play(void) {
   char **tracks;
   int ntracks, n;
   struct tracksort_data *tsd;
+  char *id;
   
   if(dcgi_client) {
     if((track = cgi_get("track"))) {
-      disorder_play(dcgi_client, track);
+      disorder_play(dcgi_client, track, &id);
     } else if((dir = cgi_get("dir"))) {
       if(disorder_files(dcgi_client, dir, 0, &tracks, &ntracks))
         ntracks = 0;
       tsd = tracksort_init(ntracks, tracks, "track");
       for(n = 0; n < ntracks; ++n)
-        disorder_play(dcgi_client, tsd[n].track);
+        disorder_play(dcgi_client, tsd[n].track, &id);
     }
   }
   redirect(0);
index 48745b6bcf06f8b8287e54602d47a3d4b762cfe3..6e2ec146564401db4a55b315897b53af9e5e6f95 100644 (file)
@@ -138,8 +138,9 @@ static void cf_playing(char attribute((unused)) **argv) {
 }
 
 static void cf_play(char **argv) {
+  char *id;
   while(*argv)
-    if(disorder_play(getclient(), *argv++)) exit(EXIT_FAILURE);
+    if(disorder_play(getclient(), *argv++, &id)) exit(EXIT_FAILURE);
 }
 
 static void cf_remove(char **argv) {
index de9e6cc05d50a45d48bd560864a4bc7955702d60..3d021396b6a7bf137687b174c85cf6bd29a54b3e 100644 (file)
@@ -110,6 +110,10 @@ int disorder_pause(disorder_client *c) {
   return disorder_simple(c, 0, "pause", (char *)0);
 }
 
+int disorder_play(disorder_client *c, const char *track, char **idp) {
+  return dequote(disorder_simple(c, idp, "play", track, (char *)0), idp);
+}
+
 int disorder_playlist_delete(disorder_client *c, const char *playlist) {
   return disorder_simple(c, 0, "playlist-delete", playlist, (char *)0);
 }
index 81822136720ce74483848fe8e79c79985a8449f8..13f0724f58979f1100693714eced68540ed589d0 100644 (file)
@@ -203,6 +203,16 @@ int disorder_part(disorder_client *c, const char *track, const char *context, co
  */
 int disorder_pause(disorder_client *c);
 
+/** @brief Play a track
+ *
+ * Requires the 'play' right.
+ *
+ * @param track Track to play
+ * @param idp Queue ID of new track
+ * @return 0 on success, non-0 on error
+ */
+int disorder_play(disorder_client *c, const char *track, char **idp);
+
 /** @brief Delete a playlist
  *
  * Requires the 'play' right and permission to modify the playlist.
index 33f1d353e0b5c1e9379fd074517e114978d9dc92..1cb73a456010e5fd038b9ecc8fc7b6b3109e61e0 100644 (file)
@@ -522,15 +522,6 @@ int disorder_close(disorder_client *c) {
   return ret;
 }
 
-/** @brief Play a track
- * @param c Client
- * @param track Track to play (UTF-8)
- * @return 0 on success, non-0 on error
- */
-int disorder_play(disorder_client *c, const char *track) {
-  return disorder_simple(c, 0, "play", track, (char *)0);
-}
-
 /** @brief Move a track
  * @param c Client
  * @param track Track to move (UTF-8)
index c4b19e46ca82a36dfcad4c743c9c13cd9acd35c4..4453fc39adad4b680cd9087b5398fa349e7c99dd 100644 (file)
@@ -48,7 +48,6 @@ int disorder_connect_generic(struct config *conf,
                              const char *cookie);
 int disorder_close(disorder_client *c);
 int disorder_version(disorder_client *c, char **versionp);
-int disorder_play(disorder_client *c, const char *track);
 int disorder_remove(disorder_client *c, const char *track);
 int disorder_move(disorder_client *c, const char *track, int delta);
 int disorder_enable(disorder_client *c);
index ac8c0f75d55e6aae9e662a0bf1d2b4c467799cc5..2cfa644ff61ffaf0f826ff5c26d837cd95a145f0 100755 (executable)
@@ -412,6 +412,12 @@ simple("pause",
        "Requires the 'pause' right.",
        []);
 
+string("play",
+       "Play a track",
+       "Requires the 'play' right.",
+       [["track", "Track to play"]],
+       ["id", "Queue ID of new track"]);
+
 # TODO playafter
 
 # TODO playing