client.c
来自「这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易」· C语言 代码 · 共 158 行
C
158 行
#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";}voidfillbrowsebot(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);}voiddoplay(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);}voidfillbrowsetop(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);}voidfillplaytext(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;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?