⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -