Subversion Repositories planix.SVN

Rev

Rev 2 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#include <u.h>
#include <libc.h>
#include <thread.h>
#include <bio.h>
#include "client.h"
#include "playlist.h"
#include "../debug.h"

char *srvmount = "/mnt/juke";

char*
getroot(void)
{
        return "root";
}

void
fillbrowsebot(char *onum)
{
        char *name, *p, *q;
        Biobuf *b, *d;
        int c;

        name = smprint("%s/%s/children", srvmount, onum);
        b = Bopen(name, OREAD);
        if(b == nil)
                sysfatal("getchildren: %s: %r", name);
        free(name);
        while(p = Brdline(b, '\n')){
                c = strtol(p, &q, 0);
                assert(*q == '\n');
                *q = 0;
                name = smprint("%s/%d/type", srvmount, c);
                d = Bopen(name, OREAD);
                if(d == nil)
                        sysfatal("getchildren: %s: %r", name);
                free(name);
                q = Brdstr(d, '\n', 1);
                if(q == nil){
                        abort();
                }
                Bterm(d);
                if(strcmp(q, "performance") == 0)
                        continue;
                name = smprint("%s/%d/digest", srvmount, c);
                d = Bopen(name, OREAD);
                if(d == nil)
                        sysfatal("getchildren: %s: %r", name);
                free(name);
                q = Brdstr(d, '\n', 1);
                if(q == nil){
                        Bterm(d);
                        continue;
                }
                addchild(strdup(p), q);
                Bterm(d);
        }
        Bterm(b);
}

void
doplay(char *onum){
        char *name, *p, *q;
        Biobuf *b;
        int m;

        name = smprint("%s/%s/files", srvmount, onum);
        b = Bopen(name, OREAD);
        if(b == nil)
abort();//              sysfatal("doplay: %s: %r", name);
        while(p = Brdline(b, '\n')){
                m = Blinelen(b);
                assert(p[m-1] == '\n');
                p[m-1] = '\0';
                q = strchr(p, ' ');
                if(q == nil)
                        sysfatal("doplay: %s: format", name);
                *q++ = '\0';
                sendplaylist(strdup(q), strdup(p));
        }
        free(name);
        Bterm(b);
}

void
fillbrowsetop(char *onum)
{
        char *name, *p;
        Biobuf *b;
        int m;

        name = smprint("%s/%s/parentage", srvmount, onum);
        b = Bopen(name, OREAD);
        if(b == nil)
abort();//              sysfatal("gettopwin: %s: %r", name);
        free(name);
        while(p = Brdline(b, '\n')){
                m = Blinelen(b);
                assert(p[m-1] == '\n');
                p[m-1] = '\0';
                addparent(p);
        }
        Bterm(b);
}

void
fillplaytext(char *onum)
{
        char *name, *p;
        Biobuf *b;
        int m;

        name = smprint("%s/%s/parentage", srvmount, onum);
        b = Bopen(name, OREAD);
        if(b == nil)
                sysfatal("fillplaytext: %s: %r", name);
        free(name);
        while(p = Brdline(b, '\n')){
                m = Blinelen(b);
                assert(p[m-1] == '\n');
                p[m-1] = '\0';
                addplaytext(p);
        }
        Bterm(b);
}

char *
getoneliner(char *onum)
{
        char *name, *p;
        Biobuf *b;

        name = smprint("%s/%s/miniparentage", srvmount, onum);
        b = Bopen(name, OREAD);
        if(b == nil)
                sysfatal("gettopwin: %s: %r", name);
        free(name);
        p = Brdstr(b, '\n', 1);
        Bterm(b);
        return p;
}

char *
getparent(char *onum)
{
        char *name, *p;
        Biobuf *b;

        name = smprint("%s/%s/parent", srvmount, onum);
        b = Bopen(name, OREAD);
        if(b == nil)
abort();//              sysfatal("gettopwin: %s: %r", name);
        free(name);
        p = Brdstr(b, '\n', 1);
        Bterm(b);
        return p;
}