ndbgetipaddr.c

来自「这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易」· C语言 代码 · 共 50 行

C
50
字号
#include <u.h>#include <libc.h>#include <bio.h>#include <ndb.h>#include <ip.h>/* return list of ip addresses for a name */Ndbtuple*ndbgetipaddr(Ndb *db, char *val){	char *attr, *p;	Ndbtuple *it, *first, *last, *next;	Ndbs s;	/* already an IP address? */	attr = ipattr(val);	if(strcmp(attr, "ip") == 0){		it = ndbnew("ip", val);		ndbsetmalloctag(it, getcallerpc(&db));		return it;	}	/* look it up */	p = ndbgetvalue(db, &s, attr, val, "ip", &it);	if(p == nil)		return nil;	free(p);	/* remove the non-ip entries */	first = last = nil;	for(; it; it = next){		next = it->entry;		if(strcmp(it->attr, "ip") == 0){			if(first == nil)				first = it;			else				last->entry = it;			it->entry = nil;			it->line = first;			last = it;		} else {			it->entry = nil;			ndbfree(it);		}	}	ndbsetmalloctag(first, getcallerpc(&db));	return first;}

⌨️ 快捷键说明

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