X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/d296136c3e5fe4ef01ccfc2c86950f1b85b916a7..6df8b1b7fd68545938b2443f34efad87de13c08e:/server/server-queue.c diff --git a/server/server-queue.c b/server/server-queue.c index 38af055..2efd94a 100644 --- a/server/server-queue.c +++ b/server/server-queue.c @@ -15,6 +15,9 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ +/** @file server/server-queue.c + * @brief Server-specific track queue support + */ #include "disorder-server.h" /* the head of the queue is played next, so normally we add to the tail */ @@ -65,7 +68,7 @@ static void queue_do_read(struct queue_entry *head, const char *path) { char *buffer; FILE *fp; struct queue_entry *q; - int version = 0; + int ver = 0; if(!(fp = fopen(path, "r"))) { if(errno == ENOENT) @@ -76,17 +79,28 @@ static void queue_do_read(struct queue_entry *head, const char *path) { while(!inputline(path, fp, &buffer, '\n')) { if(buffer[0] == '#') { /* Version indicator */ - version = atoi(buffer + 1); + ver = atoi(buffer + 1); continue; } q = xmalloc(sizeof *q); queue_unmarshall(q, buffer, queue_read_error, (void *)path); - if(version < 1) { + if(ver < 1) { /* Fix up origin field as best we can; will be wrong in some cases but * hopefully not too horribly so. */ q->origin = q->submitter ? origin_picked : origin_random; - if(q->state == playing_isscratch) + /* Eliminated obsolete states, since they are assumed elsewhere not to be + * set. */ + switch(q->state) { + case playing_isscratch: q->origin = origin_scratch; + q->state = playing_unplayed; + break; + case playing_random: + q->state = playing_unplayed; + break; + default: + break; + } } if(head == &qhead && (!q->track