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

📄 readaddrs.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include <u.h>#include <libc.h>#include "dat.h"void*emalloc(int size){	void *a;	a = mallocz(size, 1);	if(a == nil)		sysfatal("%r");	return a;}char*estrdup(char *s){	s = strdup(s);	if(s == nil)		sysfatal("%r");	return s;}/* * like tokenize but obey "" quoting */inttokenize822(char *str, char **args, int max){	int na;	int intok = 0, inquote = 0;	if(max <= 0)		return 0;		for(na=0; ;str++)		switch(*str) {		case ' ':		case '\t':			if(inquote)				goto Default;			/* fall through */		case '\n':			*str = 0;			if(!intok)				continue;			intok = 0;			if(na < max)				continue;			/* fall through */		case 0:			return na;		case '"':			inquote ^= 1;			/* fall through */		Default:		default:			if(intok)				continue;			args[na++] = str;			intok = 1;		}}Addr*readaddrs(char *file, Addr *a){	int fd;	int i, n;	char buf[8*1024];	char *f[128];	Addr **l;	Addr *first;	/* add to end */	first = a;	for(l = &first; *l != nil; l = &(*l)->next)		;	/* read in the addresses */	fd = open(file, OREAD);	if(fd < 0)		return first;	n = read(fd, buf, sizeof(buf)-1);	close(fd);	if(n <= 0)		return first;	buf[n] = 0;	n = tokenize822(buf, f, nelem(f));	for(i = 0; i < n; i++){		*l = a = emalloc(sizeof *a);		l = &a->next;		a->val = estrdup(f[i]);	}	return first;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -