chiark / gitweb /
synchronize with disorder.dev
authorRichard Kettlewell <rjk@greenend.org.uk>
Fri, 23 Nov 2007 14:22:30 +0000 (14:22 +0000)
committerRichard Kettlewell <rjk@greenend.org.uk>
Fri, 23 Nov 2007 14:22:30 +0000 (14:22 +0000)
1  2 
server/server.c

diff --combined server/server.c
index 64502c0330d7588e4afcd27b242abefcfd9c23c7,3ffede638ee2306d7798566cb75a1f14e3ca44fd..c8b4a622d0238e6d5d255d088209d86e28b1677d
@@@ -63,7 -63,6 +63,7 @@@
  #include "eventlog.h"
  #include "defs.h"
  #include "cache.h"
 +#include "unicode.h"
  
  #ifndef NONCE_SIZE
  # define NONCE_SIZE 16
@@@ -806,19 -805,6 +806,6 @@@ static int c_log(struct conn *c
    return 0;
  }
  
- static void post_move_cleanup(void) {
-   struct queue_entry *q;
-   /* If we have caused any random tracks to not be at the end then we make them
-    * no longer be random. */
-   for(q = qhead.next; q != &qhead; q = q->next)
-     if(q->state == playing_random && q->next != &qhead)
-       q->state = playing_unplayed;
-   /* That might mean we need to add a new random track. */
-   add_random_track();
-   queue_write();
- }
  static int c_move(struct conn *c,
                  char **vec,
                  int attribute((unused)) nvec) {
      return 1;
    }
    n = queue_move(q, atoi(vec[1]), c->who);
-   post_move_cleanup();
    sink_printf(ev_writer_sink(c->w), "252 %d\n", n);
    /* If we've moved to the head of the queue then prepare the track. */
    if(q == qhead.next)
@@@ -874,7 -859,6 +860,6 @@@ static int c_moveafter(struct conn *c
        return 1;
      }
    queue_moveafter(q, nvec, qs, c->who);
-   post_move_cleanup();
    sink_printf(ev_writer_sink(c->w), "250 Moved tracks\n");
    /* If we've moved to the head of the queue then prepare the track. */
    if(q == qhead.next)
@@@ -922,10 -906,6 +907,10 @@@ static int c_tags(struct conn *c
  static int c_set_global(struct conn *c,
                        char **vec,
                        int attribute((unused)) nvec) {
 +  if(vec[0][0] == '_') {
 +    sink_writes(ev_writer_sink(c->w), "550 cannot set internal global preferences\n");
 +    return 1;
 +  }
    trackdb_set_global(vec[0], vec[1], c->who);
    sink_printf(ev_writer_sink(c->w), "250 OK\n");
    return 1;
@@@ -1045,11 -1025,6 +1030,11 @@@ static int command(struct conn *c, cha
    int nvec, n;
  
    D(("server command %s", line));
 +  /* We force everything into NFC as early as possible */
 +  if(!(line = utf8_compose_canon(line, strlen(line), 0))) {
 +    sink_writes(ev_writer_sink(c->w), "500 cannot normalize command\n");
 +    return 1;
 +  }
    if(!(vec = split(line, &nvec, SPLIT_QUOTES, command_error, c))) {
      sink_writes(ev_writer_sink(c->w), "500 cannot parse command\n");
      return 1;