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

📄 ndbaux.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include <u.h>#include <libc.h>#include <bio.h>#include <ctype.h>#include <ndb.h>#include "ndbhf.h"/* *  parse a single tuple */char*_ndbparsetuple(char *cp, Ndbtuple **tp){	char *p;	int len;	Ndbtuple *t;	/* a '#' starts a comment lasting till new line */	EATWHITE(cp);	if(*cp == '#' || *cp == '\n')		return 0;	t = ndbnew(nil, nil);	setmalloctag(t, getcallerpc(&cp));	*tp = t;	/* parse attribute */	p = cp;	while(*cp != '=' && !ISWHITE(*cp) && *cp != '\n')		cp++;	len = cp - p;	if(len >= Ndbalen)		len = Ndbalen-1;	strncpy(t->attr, p, len);	/* parse value */	EATWHITE(cp);	if(*cp == '='){		cp++;		if(*cp == '"'){			p = ++cp;			while(*cp != '\n' && *cp != '"')				cp++;			len = cp - p;			if(*cp == '"')				cp++;		} else if(*cp == '#'){			len = 0;		} else {			p = cp;			while(!ISWHITE(*cp) && *cp != '\n')				cp++;			len = cp - p;		}		ndbsetval(t, p, len);	}	return cp;}/* *  parse all tuples in a line.  we assume that the  *  line ends in a '\n'. * *  the tuples are linked as a list using ->entry and *  as a ring using ->line. */Ndbtuple*_ndbparseline(char *cp){	Ndbtuple *t;	Ndbtuple *first, *last;	first = last = 0;	while(*cp != '#' && *cp != '\n'){		t = 0;		cp = _ndbparsetuple(cp, &t);		if(cp == 0)			break;		if(first){			last->line = t;			last->entry = t;		} else			first = t;		last = t;		t->line = 0;		t->entry = 0;		setmalloctag(t, getcallerpc(&cp));	}	if(first)		last->line = first;	ndbsetmalloctag(first, getcallerpc(&cp));	return first;}

⌨️ 快捷键说明

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