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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? filecache.c++

?? fax相關(guān)的東西
?? C++
字號:
/*	$Id: FileCache.c++,v 1.2 1999/06/13 07:41:12 robert Exp $ *//* * Copyright (c) 1995-1996 Sam Leffler * Copyright (c) 1995-1996 Silicon Graphics, Inc. * HylaFAX is a trademark of Silicon Graphics * * Permission to use, copy, modify, distribute, and sell this software and  * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notices and this permission notice appear in * all copies of the software and related documentation, and (ii) the names of * Sam Leffler and Silicon Graphics may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of Sam Leffler and Silicon Graphics. *  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   *  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  * OF THIS SOFTWARE. */#include "FileCache.h"#include "Sys.h"u_int FileCache::master = 0;		// master serial numberFileCache* FileCache::cache[4096];	// cache of stat results#define	CACHESIZE	(sizeof (cache) / sizeof (cache[0]))					// statisticsu_int FileCache::lookups = 0;		// total # lookupsu_int FileCache::hits = 0;		// # lookups that hit in the cacheu_int FileCache::probes = 0;		// total # probes during lookupsu_int FileCache::displaced = 0;		// # entries reusedu_int FileCache::flushed = 0;		// # entries flushedvoidFileCache::printStats(FILE* fd){    fprintf(fd, "    File cache: %u lookups, %u hits (%.1f%%), %.1f avg probes\r\n"	, lookups	, hits#define	NZ(v)	((v) == 0 ? 1 : (v))	, (100.*hits)/NZ(lookups)	, float(lookups+probes)/float(NZ(lookups))    );    u_int n = 0;    u_int space = 0;    for (u_int i = 0; i < CACHESIZE; i++) {	const FileCache* fi = cache[i];	if (fi) {	    n++;	    space += sizeof (*fi) + fi->name.length();	}    }    fprintf(fd, "        %u entries (%.1f KB), %u entries displaced, %u entries flushed\r\n"	, n	, space / 1024.	, displaced	, flushed    );}FileCache::FileCache() {}FileCache::~FileCache() {}voidFileCache::reset(void){    for (u_int i = 0; i < CACHESIZE; i++)	delete cache[i];    memset(cache, 0, sizeof (cache));    master = 0;					// doesn't matter???}u_intFileCache::hash(const char* pathname){    u_int h = 0;    while (*pathname)	h ^= *pathname++;    return (h % CACHESIZE);}boolFileCache::lookup(const char* pathname, struct stat& sb, bool addToCache){    lookups++;    u_int h = hash(pathname);    u_int maxprobes = 5;    FileCache* fi = cache[h];    FileCache* oldest = fi;    while (fi && --maxprobes) {	probes++;	if (fi->name == pathname) {	    fi->serial = master++;	    sb = fi->sb;	    hits++;	    return (true);	}	if (fi->serial < oldest->serial)	    oldest = fi;	h = (u_int)(h*h) % CACHESIZE;	fi = cache[h];    }    /*     * Pathname not found in the cache.     */    if (Sys::stat(pathname, sb) < 0)	return (false);    if (addToCache && pathname[0] != '.') {	if (fi) {	    fi = oldest;	    displaced++;	} else	    fi = cache[h] = new FileCache;	fi->name = pathname;	fi->serial = master++;	fi->sb = sb;    }    return (true);}/* * Update the file mode for any in-cache entry. */boolFileCache::chmod(const char* pathname, mode_t mode){    if (Sys::chmod(pathname, mode) < 0)	return (false);    lookups++;    u_int h = hash(pathname);    u_int maxprobes = 5;    FileCache* fi = cache[h];    while (fi && --maxprobes) {	probes++;	if (fi->name == pathname) {	    hits++;	    fi->sb.st_mode = (fi->sb.st_mode&~0777) | (mode&0777);	    break;	}	h = (u_int)(h*h) % CACHESIZE;	fi = cache[h];    }    return (true);}/* * Update the file ownership for any in-cache entry. */boolFileCache::chown(const char* pathname, uid_t uid, gid_t gid){    /*     * For BSD-based systems chown is only permitted     * by the super-user.  We could optimize this work     * to not swap the effective uid on System V-based     * systems but it's not worth it since the majority     * the calls to chown a file will be done only for     * BSD-based systems (to deal with the filesystem     * semantics forcing us to manually set the gid on     * newly created files.     */    uid_t ouid = geteuid();    (void) seteuid(0);    bool ok = (Sys::chown(pathname, uid, gid) >= 0);    (void) seteuid(ouid);    if (ok) {	lookups++;	u_int h = hash(pathname);	u_int maxprobes = 5;	FileCache* fi = cache[h];	while (fi && --maxprobes) {	    probes++;	    if (fi->name == pathname) {		hits++;		fi->sb.st_uid = uid;		fi->sb.st_gid = gid;		break;	    }	    h = (u_int)(h*h) % CACHESIZE;	    fi = cache[h];	}    }    return (ok);}/* * Like lookup, but if found in the cache, re-do the stat. */boolFileCache::update(const char* pathname, struct stat& sb, bool addToCache){    lookups++;    u_int h = hash(pathname);    u_int maxprobes = 5;    FileCache* fi = cache[h];    FileCache* oldest = fi;    while (fi && --maxprobes) {	probes++;	if (fi->name == pathname) {	    if (Sys::stat(pathname, sb) >= 0) {		hits++;		fi->serial = master++;		fi->sb = sb;		return (true);	    } else {		flushed++;		cache[h] = NULL;		delete fi;		return (false);	    }	}	if (fi->serial < oldest->serial)	    oldest = fi;	h = (u_int)(h*h) % CACHESIZE;	fi = cache[h];    }    /*     * Pathname not found in the cache.     */    if (Sys::stat(pathname, sb) < 0)	return (false);    if (addToCache && pathname[0] != '.') {	if (fi) {	    fi = oldest;	    displaced++;	} else	    fi = cache[h] = new FileCache;	fi->name = pathname;	fi->serial = master++;	fi->sb = sb;    }    return (true);}voidFileCache::flush(const char* pathname){    u_int h = hash(pathname);    u_int maxprobes = 5;    FileCache* fi = cache[h];    while (fi && --maxprobes) {	if (fi->name == pathname) {	    flushed++;	    cache[h] = NULL;	    delete fi;	    break;	}	h = (u_int)(h*h) % CACHESIZE;	fi = cache[h];    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色94色欧美sute亚洲13| 激情综合网最新| 91成人网在线| 一区二区三区精品在线| 欧美曰成人黄网| 首页国产欧美日韩丝袜| 日韩精品中文字幕在线一区| 精品无码三级在线观看视频| 久久美女艺术照精彩视频福利播放| 国产成人99久久亚洲综合精品| 国产精品视频观看| 在线免费观看成人短视频| 亚洲高清在线精品| 精品日韩欧美在线| 成人小视频免费在线观看| 亚洲精品久久7777| 欧美私人免费视频| 国内成人免费视频| 18欧美乱大交hd1984| 欧美三级日韩三级| 久草中文综合在线| 成人免费在线播放视频| 欧美一级一区二区| 国产成人在线色| 国产精品理论片在线观看| 日本高清不卡在线观看| 日韩激情一二三区| 国产精品女主播在线观看| 波多野结衣中文字幕一区二区三区 | 欧美在线啊v一区| 美女高潮久久久| 国产精品视频一二三区| 欧美日韩一级片在线观看| 欧美aa在线视频| 日本一区二区在线不卡| 欧美日韩精品一区二区在线播放| 国产一区二区在线看| 亚洲综合久久久| 欧美人牲a欧美精品| 精品播放一区二区| 性做久久久久久久免费看| 国产大陆a不卡| 国产精品久久久久久久久快鸭 | 专区另类欧美日韩| 一区二区三区精品久久久| 99国产精品久久久久| 亚洲精品免费电影| 91免费观看在线| xf在线a精品一区二区视频网站| 久久99久国产精品黄毛片色诱| 91美女片黄在线观看| 日韩欧美国产综合一区| 婷婷开心激情综合| 日韩一区二区免费视频| 亚洲综合丝袜美腿| 日韩欧美国产系列| 麻豆免费精品视频| 欧美精品一区在线观看| 美女精品一区二区| 国产欧美一区二区在线观看| 欧美日韩卡一卡二| 九九在线精品视频| 中文字幕一区二区在线观看| 777奇米四色成人影色区| 亚洲午夜精品网| 国产亚洲欧美色| 国产在线精品免费av| 欧美日本精品一区二区三区| 午夜成人免费电影| 国产精品欧美一区喷水| 91麻豆福利精品推荐| 婷婷久久综合九色综合伊人色| 欧美无砖专区一中文字| 调教+趴+乳夹+国产+精品| 欧美挠脚心视频网站| 亚洲va欧美va国产va天堂影院| 欧美精品tushy高清| 久色婷婷小香蕉久久| 亚洲男人都懂的| 91精品国产综合久久久久久漫画| 亚洲一区二区三区在线播放| 国产欧美一区二区精品性色| 在线观看不卡一区| 成人午夜视频在线观看| 麻豆国产一区二区| 亚洲免费观看高清完整版在线观看 | 欧美精品色综合| 欧美成人一区二区三区片免费| 日本午夜一本久久久综合| 欧美日韩在线三级| 欧洲av在线精品| 欧美日韩亚洲综合在线 | 国产乱码精品一区二区三区五月婷| 美女在线视频一区| 九一九一国产精品| 国产高清亚洲一区| 99免费精品视频| 色悠久久久久综合欧美99| 色吧成人激情小说| 欧美一区二区在线播放| 精品久久人人做人人爱| 久久久精品国产免费观看同学| 久久久久国产精品免费免费搜索| 国产亚洲成av人在线观看导航| 国产欧美1区2区3区| 亚洲黄色性网站| 亚洲成a人片在线观看中文| 丝瓜av网站精品一区二区| 国产在线视频一区二区| 99久久伊人精品| 欧美精品色一区二区三区| ww久久中文字幕| 中文字幕在线不卡| 日韩黄色免费电影| 成人综合在线视频| 欧美三级日韩三级| 久久蜜臀中文字幕| 亚洲国产欧美在线| 国产精品中文欧美| 欧美日韩中文一区| 国产三级久久久| 五月婷婷激情综合| 国产麻豆成人传媒免费观看| 色婷婷av一区二区三区之一色屋| 欧美一级午夜免费电影| 《视频一区视频二区| 日韩av午夜在线观看| 高清视频一区二区| 91精品国产欧美一区二区18 | 首页亚洲欧美制服丝腿| 成人动漫在线一区| 欧美一区二区性放荡片| 亚洲视频小说图片| 韩国午夜理伦三级不卡影院| 欧美三级视频在线| 国产精品久久久久aaaa樱花 | 亚洲影视资源网| 成人开心网精品视频| 91精品福利在线一区二区三区 | 亚洲精品亚洲人成人网在线播放| 日本欧美久久久久免费播放网| 99精品视频在线免费观看| 日韩精品一区在线观看| 一级做a爱片久久| 成人av电影在线| 久久久99免费| 蜜桃在线一区二区三区| 在线中文字幕一区二区| 中文字幕第一区第二区| 精品一区二区精品| 欧美美女网站色| 亚洲影院理伦片| 色偷偷久久一区二区三区| 亚洲国产精品成人综合色在线婷婷| 美女网站视频久久| 久久久91精品国产一区二区精品 | 99vv1com这只有精品| 国产欧美一区二区三区网站| 久久99精品国产麻豆不卡| 欧美三区在线观看| 亚洲与欧洲av电影| 欧美午夜片在线观看| 一区二区三区日韩欧美| 色一情一伦一子一伦一区| 国产精品久久二区二区| 成人av网址在线| 国产精品免费aⅴ片在线观看| 国产精品亚洲第一| 亚洲国产精品成人综合 | 一区二区三国产精华液| 久久99精品久久久久久久久久久久| 欧美日韩中文另类| 国产69精品久久777的优势| 欧美午夜精品免费| 一区二区激情视频| 欧美午夜电影一区| 午夜欧美大尺度福利影院在线看| 欧洲中文字幕精品| 亚洲国产欧美一区二区三区丁香婷| 一本大道久久a久久精二百| 亚洲欧美日韩人成在线播放| 91久久精品一区二区二区| 一区二区三区色| 欧美一区二区三区播放老司机| 美女视频黄频大全不卡视频在线播放| 欧美日韩国产片| 欧美精品v日韩精品v韩国精品v| 亚洲第一精品在线| 日韩一区二区不卡| 日韩电影在线看| 精品国产髙清在线看国产毛片| 精品一区二区三区不卡 | 国产日韩欧美综合在线| 波多野结衣亚洲| 亚洲黄色免费电影| 欧美一区二区在线免费观看| 激情小说欧美图片| 中文字幕一区二区三区蜜月| 欧美亚洲一区二区在线观看| 久久国产日韩欧美精品|