From: Richard Kettlewell Date: Fri, 23 Nov 2007 14:22:30 +0000 (+0000) Subject: synchronize with disorder.dev X-Git-Tag: debian-1_5_99dev9~1^2~2 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/commitdiff_plain/4ecbdbd99dea3236c3c6d5ea5401a08c56de5d3c?hp=-c synchronize with disorder.dev --- 4ecbdbd99dea3236c3c6d5ea5401a08c56de5d3c diff --combined server/server.c index 64502c0,3ffede6..c8b4a62 --- a/server/server.c +++ b/server/server.c @@@ -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) { @@@ -837,7 -823,6 +824,6 @@@ 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;