亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dbm.c

?? unix v7是最后一個廣泛發布的研究型UNIX版本
?? C
字號:
#include	"dbm.h"#include	<sys/types.h>#include	<sys/stat.h>dbminit(file)char *file;{	struct stat statb;	strcpy(pagbuf, file);	strcat(pagbuf, ".pag");	pagf = open(pagbuf, 2);	strcpy(pagbuf, file);	strcat(pagbuf, ".dir");	dirf = open(pagbuf, 2);	if(pagf < 0 || dirf < 0) {		printf("cannot open database %s\n", file);		return(-1);	}	fstat(dirf, &statb);	maxbno = statb.st_size*BYTESIZ-1;	return(0);}longforder(key)datum key;{	long hash;	hash = calchash(key);	for(hmask=0;; hmask=(hmask<<1)+1) {		blkno = hash & hmask;		bitno = blkno + hmask;		if(getbit() == 0)			break;	}	return(blkno);}datumfetch(key)datum key;{	register i;	datum item;	dbm_access(calchash(key));	for(i=0;; i+=2) {		item = makdatum(pagbuf, i);		if(item.dptr == NULL)			return(item);		if(cmpdatum(key, item) == 0) {			item = makdatum(pagbuf, i+1);			if(item.dptr == NULL)				printf("items not in pairs\n");			return(item);		}	}}delete(key)datum key;{	register i;	datum item;	dbm_access(calchash(key));	for(i=0;; i+=2) {		item = makdatum(pagbuf, i);		if(item.dptr == NULL)			return(-1);		if(cmpdatum(key, item) == 0) {			delitem(pagbuf, i);			delitem(pagbuf, i);			break;		}	}	lseek(pagf, blkno*PBLKSIZ, 0);	write(pagf, pagbuf, PBLKSIZ);	return(0);}store(key, dat)datum key, dat;{	register i;	datum item;	char ovfbuf[PBLKSIZ];loop:	dbm_access(calchash(key));	for(i=0;; i+=2) {		item = makdatum(pagbuf, i);		if(item.dptr == NULL)			break;		if(cmpdatum(key, item) == 0) {			delitem(pagbuf, i);			delitem(pagbuf, i);			break;		}	}	i = additem(pagbuf, key);	if(i < 0)		goto split;	if(additem(pagbuf, dat) < 0) {		delitem(pagbuf, i);		goto split;	}	lseek(pagf, blkno*PBLKSIZ, 0);	write(pagf, pagbuf, PBLKSIZ);	return;split:	if(key.dsize+dat.dsize+2*sizeof(short) >= PBLKSIZ) {		printf("entry too big\n");		return;	}	clrbuf(ovfbuf, PBLKSIZ);	for(i=0;;) {		item = makdatum(pagbuf, i);		if(item.dptr == NULL)			break;		if(calchash(item) & (hmask+1)) {			additem(ovfbuf, item);			delitem(pagbuf, i);			item = makdatum(pagbuf, i);			if(item.dptr == NULL) {				printf("split not paired\n");				break;			}			additem(ovfbuf, item);			delitem(pagbuf, i);			continue;		}		i += 2;	}	lseek(pagf, blkno*PBLKSIZ, 0);	write(pagf, pagbuf, PBLKSIZ);	lseek(pagf, (blkno+hmask+1)*PBLKSIZ, 0);	write(pagf, ovfbuf, PBLKSIZ);	setbit();	goto loop;}datumfirstkey(){	return(firsthash(0L));}datumnextkey(key)datum key;{	register i;	datum item, bitem;	long hash;	int f;	hash = calchash(key);	dbm_access(hash);	f = 1;	for(i=0;; i+=2) {		item = makdatum(pagbuf, i);		if(item.dptr == NULL)			break;		if(cmpdatum(key, item) <= 0)			continue;		if(f || cmpdatum(bitem, item) < 0) {			bitem = item;			f = 0;		}	}	if(f == 0)		return(bitem);	hash = hashinc(hash);	if(hash == 0)		return(item);	return(firsthash(hash));}datumfirsthash(hash)long hash;{	register i;	datum item, bitem;loop:	dbm_access(hash);	bitem = makdatum(pagbuf, 0);	for(i=2;; i+=2) {		item = makdatum(pagbuf, i);		if(item.dptr == NULL)			break;		if(cmpdatum(bitem, item) < 0)			bitem = item;	}	if(bitem.dptr != NULL)		return(bitem);	hash = hashinc(hash);	if(hash == 0)		return(item);	goto loop;}dbm_access(hash)long hash;{	static long oldb = -1;	for(hmask=0;; hmask=(hmask<<1)+1) {		blkno = hash & hmask;		bitno = blkno + hmask;		if(getbit() == 0)			break;	}	if(blkno != oldb) {		clrbuf(pagbuf, PBLKSIZ);		lseek(pagf, blkno*PBLKSIZ, 0);		read(pagf, pagbuf, PBLKSIZ);		chkblk(pagbuf);		oldb = blkno;	}}getbit(){	long bn;	register b, i, n;	static oldb = -1;	if(bitno > maxbno)		return(0);	n = bitno % BYTESIZ;	bn = bitno / BYTESIZ;	i = bn % DBLKSIZ;	b = bn / DBLKSIZ;	if(b != oldb) {		clrbuf(dirbuf, DBLKSIZ);		lseek(dirf, (long)b*DBLKSIZ, 0);		read(dirf, dirbuf, DBLKSIZ);		oldb = b;	}	if(dirbuf[i] & (1<<n))		return(1);	return(0);}setbit(){	long bn;	register i, n, b;	if(bitno > maxbno) {		maxbno = bitno;		getbit();	}	n = bitno % BYTESIZ;	bn = bitno / BYTESIZ;	i = bn % DBLKSIZ;	b = bn / DBLKSIZ;	dirbuf[i] |= 1<<n;	lseek(dirf, (long)b*DBLKSIZ, 0);	write(dirf, dirbuf, DBLKSIZ);}clrbuf(cp, n)register char *cp;register n;{	do		*cp++ = 0;	while(--n);}datummakdatum(buf, n)char buf[PBLKSIZ];{	register short *sp;	register t;	datum item;	sp = (short *)buf;	if(n < 0 || n >= sp[0])		goto null;	t = PBLKSIZ;	if(n > 0)		t = sp[n+1-1];	item.dptr = buf+sp[n+1];	item.dsize = t - sp[n+1];	return(item);null:	item.dptr = NULL;	item.dsize = 0;	return(item);}cmpdatum(d1, d2)datum d1, d2;{	register n;	register char *p1, *p2;	n = d1.dsize;	if(n != d2.dsize)		return(n - d2.dsize);	if(n == 0)		return(0);	p1 = d1.dptr;	p2 = d2.dptr;	do		if(*p1++ != *p2++)			return(*--p1 - *--p2);	while(--n);	return(0);}int	hitab[16] = {	61, 57, 53, 49, 45, 41, 37, 33,	29, 25, 21, 17, 13,  9,  5,  1,};long	hltab[64] = {	06100151277L,06106161736L,06452611562L,05001724107L,	02614772546L,04120731531L,04665262210L,07347467531L,	06735253126L,06042345173L,03072226605L,01464164730L,	03247435524L,07652510057L,01546775256L,05714532133L,	06173260402L,07517101630L,02431460343L,01743245566L,	00261675137L,02433103631L,03421772437L,04447707466L,	04435620103L,03757017115L,03641531772L,06767633246L,	02673230344L,00260612216L,04133454451L,00615531516L,	06137717526L,02574116560L,02304023373L,07061702261L,	05153031405L,05322056705L,07401116734L,06552375715L,	06165233473L,05311063631L,01212221723L,01052267235L,	06000615237L,01075222665L,06330216006L,04402355630L,	01451177262L,02000133436L,06025467062L,07121076461L,	03123433522L,01010635225L,01716177066L,05161746527L,	01736635071L,06243505026L,03637211610L,01756474365L,	04723077174L,03642763134L,05750130273L,03655541561L,};longhashinc(hash)long hash;{	long bit;	hash &= hmask;	bit = hmask+1;	for(;;) {		bit >>= 1;		if(bit == 0)			return(0L);		if((hash&bit) == 0)			return(hash|bit);		hash &= ~bit;	}}longcalchash(item)datum item;{	register i, j, f;	long hashl;	int hashi;	hashl = 0;	hashi = 0;	for(i=0; i<item.dsize; i++) {		f = item.dptr[i];		for(j=0; j<BYTESIZ; j+=4) {			hashi += hitab[f&017];			hashl += hltab[hashi&077];			f >>= 4;		}	}	return(hashl);}delitem(buf, n)char buf[PBLKSIZ];{	register short *sp;	register i1, i2, i3;	sp = (short *)buf;	if(n < 0 || n >= sp[0])		goto bad;	i1 = sp[n+1];	i2 = PBLKSIZ;	if(n > 0)		i2 = sp[n+1-1];	i3 = sp[sp[0]+1-1];	if(i2 > i1)	while(i1 > i3) {		i1--;		i2--;		buf[i2] = buf[i1];		buf[i1] = 0;	}	i2 -= i1;	for(i1=n+1; i1<sp[0]; i1++)		sp[i1+1-1] = sp[i1+1] + i2;	sp[0]--;	sp[sp[0]+1] = 0;	return;bad:	printf("bad delitem\n");	abort();}additem(buf, item)char buf[PBLKSIZ];datum item;{	register short *sp;	register i1, i2;	sp = (short *)buf;	i1 = PBLKSIZ;	if(sp[0] > 0)		i1 = sp[sp[0]+1-1];	i1 -= item.dsize;	i2 = (sp[0]+2) * sizeof(short);	if(i1 <= i2)		return(-1);	sp[sp[0]+1] = i1;	for(i2=0; i2<item.dsize; i2++) {		buf[i1] = item.dptr[i2];		i1++;	}	sp[0]++;	return(sp[0]-1);}chkblk(buf)char buf[PBLKSIZ];{	register short *sp;	register t, i;	sp = (short *)buf;	t = PBLKSIZ;	for(i=0; i<sp[0]; i++) {		if(sp[i+1] > t)			goto bad;		t = sp[i+1];	}	if(t < (sp[0]+1)*sizeof(short))		goto bad;	return;bad:	printf("bad block\n");	abort();	clrbuf(buf, PBLKSIZ);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产尤物一区二区| 老司机免费视频一区二区| 久久亚洲精华国产精华液| 91精品国产一区二区三区| 色综合网站在线| 一本到不卡精品视频在线观看| 日韩国产在线观看一区| 亚洲综合视频在线| 亚洲国产精品久久艾草纯爱| 中文字幕+乱码+中文字幕一区| 岛国精品一区二区| fc2成人免费人成在线观看播放| 中文乱码免费一区二区| 国产欧美日韩精品在线| 中文字幕制服丝袜成人av| 中文字幕一区二区视频| 亚洲一区在线视频观看| 亚洲成av人综合在线观看| 奇米精品一区二区三区在线观看 | 国产精品久久久久9999吃药| 久久久精品tv| 中文字幕在线一区免费| 亚洲第一久久影院| 久久草av在线| av亚洲精华国产精华精华| 日本韩国欧美国产| 日韩一区二区电影网| 国产视频一区二区在线观看| 亚洲婷婷综合色高清在线| 午夜一区二区三区在线观看| 激情综合网天天干| 99视频在线观看一区三区| 欧美日韩夫妻久久| 亚洲国产精品v| 婷婷综合另类小说色区| 国产成人丝袜美腿| 欧美性xxxxxxxx| 国产区在线观看成人精品| 亚洲精品欧美在线| 国产精品综合在线视频| 欧美性猛片aaaaaaa做受| 精品播放一区二区| 亚洲国产va精品久久久不卡综合| 欧美国产乱子伦| 日日骚欧美日韩| 91天堂素人约啪| 精品国产91九色蝌蚪| 亚洲美女免费在线| 国产99一区视频免费| 欧美日韩免费高清一区色橹橹| 一本久久综合亚洲鲁鲁五月天| 懂色av一区二区夜夜嗨| 欧美一区二区在线视频| 亚洲国产成人私人影院tom| 日本欧美在线看| 欧美天堂亚洲电影院在线播放 | 亚洲欧洲国产专区| 精彩视频一区二区| 欧美一区二区三区在线电影| 亚洲私人影院在线观看| 国产99久久久国产精品潘金 | 91黄视频在线观看| 国产精品久久午夜夜伦鲁鲁| 国产美女视频91| 欧美一区二区女人| 日日夜夜一区二区| 欧美午夜精品久久久久久超碰| 欧美伊人久久久久久久久影院 | 91国产视频在线观看| 欧美激情一区二区三区蜜桃视频| 久久久久国产一区二区三区四区| 久久精品免费在线观看| 青青草国产成人99久久| 欧美日韩精品一区二区三区蜜桃| 日韩一区二区三免费高清| 日本午夜精品一区二区三区电影 | 国产精品自拍毛片| 26uuuu精品一区二区| 国产乱人伦偷精品视频不卡| 亚洲精品在线免费观看视频| 久久99精品视频| 26uuu久久综合| 国产一区二区在线免费观看| 26uuu精品一区二区三区四区在线| 中文字幕综合网| 99久久综合国产精品| 亚洲丝袜制服诱惑| 色偷偷成人一区二区三区91 | 国产精品亚洲成人| 日本一区二区三区电影| 不卡高清视频专区| 亚洲最新在线观看| 91精品国产色综合久久ai换脸| 久久人人爽人人爽| 成人福利电影精品一区二区在线观看| 日本高清不卡视频| 午夜精品福利一区二区蜜股av | 欧美一级免费观看| 日韩精品每日更新| 久久亚洲私人国产精品va媚药| 亚洲综合视频在线| 欧美电影精品一区二区| 久久电影网站中文字幕 | 捆绑变态av一区二区三区| 欧美va在线播放| 成人av网站大全| 一区二区免费在线| 26uuu亚洲综合色| 92国产精品观看| 看电影不卡的网站| 亚洲欧美日韩电影| 日韩欧美二区三区| k8久久久一区二区三区| 蜜臀a∨国产成人精品| 国产精品无遮挡| 欧美日韩成人综合在线一区二区| 亚洲视频在线观看一区| 欧美日韩精品欧美日韩精品| 国产乱码精品1区2区3区| 亚洲三级电影网站| 久久综合色综合88| 欧美撒尿777hd撒尿| 国产精品一区2区| 亚洲成av人影院| 日韩码欧中文字| 久久精品亚洲麻豆av一区二区| 理论片日本一区| 亚洲免费av高清| 中文字幕高清一区| 日韩精品一区国产麻豆| 在线观看区一区二| av在线综合网| 国产麻豆成人精品| 男男视频亚洲欧美| 亚洲午夜在线电影| 亚洲欧洲三级电影| 中文字幕第一区二区| 精品成人在线观看| 欧美tk—视频vk| 91精品国产综合久久精品图片 | 国产一区二区不卡在线 | 亚洲精品一区二区三区精华液 | 国产精品国产三级国产三级人妇| 福利一区在线观看| 裸体健美xxxx欧美裸体表演| 亚洲一区二区三区视频在线播放| 欧美日韩亚洲高清一区二区| 色婷婷久久久亚洲一区二区三区 | 日韩情涩欧美日韩视频| 在线免费一区三区| 97精品国产97久久久久久久久久久久| 一区二区三区在线视频观看 | 欧美国产禁国产网站cc| 精品国产乱码久久| 精品av久久707| www一区二区| 国产亚洲精久久久久久| 国产偷国产偷精品高清尤物| 久久精品亚洲一区二区三区浴池 | 久久蜜桃av一区二区天堂 | 欧美视频在线一区二区三区| 在线观看成人免费视频| 欧美视频三区在线播放| 欧美精品久久久久久久多人混战| 美女视频黄 久久| 男女男精品视频| 韩国精品主播一区二区在线观看| 亚洲欧美日韩综合aⅴ视频| 亚洲欧美偷拍卡通变态| 亚洲最新在线观看| 日本中文字幕一区二区有限公司| 国产精品高潮呻吟久久| 亚洲精品成人天堂一二三| 亚洲成人av一区| 国产综合久久久久影院| 波多野结衣欧美| 欧美亚州韩日在线看免费版国语版| 欧美aaaaa成人免费观看视频| 国产精品乱码人人做人人爱| 亚洲码国产岛国毛片在线| 亚洲第一会所有码转帖| 狠狠色丁香九九婷婷综合五月| 一区二区三区久久| 蜜臀av一区二区在线免费观看 | 免费观看91视频大全| 久久99在线观看| 色综合网站在线| 欧美xxx久久| 一区二区三区四区视频精品免费 | 精品国产乱码久久久久久久| 国产精品丝袜一区| 日韩主播视频在线| 成人激情综合网站| 欧美一区二区三区免费观看视频 | 日韩一级成人av| 中文字幕在线观看不卡视频| 日本vs亚洲vs韩国一区三区二区| 亚洲一区二区三区四区在线免费观看| 国产精品污污网站在线观看| 五月开心婷婷久久|