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

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

?? parsenfsfh.c

?? 3 網(wǎng)卡驅(qū)動相關(guān)實例 這是和網(wǎng)卡NT KMD驅(qū)動程序有關(guān)的一些資料和例子。
?? C
字號:
/*
 * parsenfsfh.c - portable parser for NFS file handles
 *			uses all sorts of heuristics
 *
 * Jeffrey C. Mogul
 * Digital Equipment Corporation
 * Western Research Laboratory
 */

#ifndef lint
static const char rcsid[] =
    "@(#) $Header: parsenfsfh.c,v 1.14 97/06/15 13:20:27 leres Exp $ (LBL)";
#endif

#include <sys/types.h>
#ifndef WIN32
#include <sys/time.h>
#else
#include <winsock.h>
#define u_int32_t unsigned int
#endif

#include <ctype.h>
#ifdef HAVE_MEMORY_H
#include <memory.h>
#endif
#include <stdio.h>

#include <string.h>

#include "interface.h"
#include "nfsfh.h"

/*
 * This routine attempts to parse a file handle (in network byte order),
 * using heuristics to guess what kind of format it is in.  See the
 * file "fhandle_layouts" for a detailed description of the various
 * patterns we know about.
 *
 * The file handle is parsed into our internal representation of a
 * file-system id, and an internal representation of an inode-number.
 */

#define	FHT_UNKNOWN	0
#define	FHT_AUSPEX	1
#define	FHT_DECOSF	2
#define	FHT_IRIX4	3
#define	FHT_IRIX5	4
#define	FHT_SUNOS3	5
#define	FHT_SUNOS4	6
#define	FHT_ULTRIX	7
#define	FHT_VMSUCX	8
#define	FHT_SUNOS5	9
#define	FHT_AIX32	10
#define	FHT_HPUX9	11

#ifdef	ultrix
/* Nasty hack to keep the Ultrix C compiler from emitting bogus warnings */
#define	XFF(x)	((u_int32_t)(x))
#else
#define	XFF(x)	(x)
#endif

#define	make_uint32(msb,b,c,lsb)\
	(XFF(lsb) + (XFF(c)<<8) + (XFF(b)<<16) + (XFF(msb)<<24))

#define	make_uint24(msb,b, lsb)\
	(XFF(lsb) + (XFF(b)<<8) + (XFF(msb)<<16))

#define	make_uint16(msb,lsb)\
	(XFF(lsb) + (XFF(msb)<<8))

#ifdef	__alpha
	/* or other 64-bit systems */
#define	make_uint48(msb,b,c,d,e,lsb)\
	((lsb) + ((e)<<8) + ((d)<<16) + ((c)<<24) + ((b)<<32) + ((msb)<<40))
#else
	/* on 32-bit systems ignore high-order bits */
#define	make_uint48(msb,b,c,d,e,lsb)\
	((lsb) + ((e)<<8) + ((d)<<16) + ((c)<<24))
#endif

static int is_UCX(unsigned char *);

void
Parse_fh(fh, fsidp, inop, osnamep, fsnamep, ourself)
register caddr_t *fh;
my_fsid *fsidp;
ino_t *inop;
char **osnamep;		/* if non-NULL, return OS name here */
char **fsnamep;		/* if non-NULL, return server fs name here (for VMS) */
int ourself;		/* true if file handle was generated on this host */
{
	register unsigned char *fhp = (unsigned char *)fh;
	u_int32_t temp;
	int fhtype = FHT_UNKNOWN;

	if (ourself) {
	    /* File handle generated on this host, no need for guessing */
#if	defined(IRIX40)
	    fhtype = FHT_IRIX4;
#endif
#if	defined(IRIX50)
	    fhtype = FHT_IRIX5;
#endif
#if	defined(IRIX51)
	    fhtype = FHT_IRIX5;
#endif
#if	defined(SUNOS4)
	    fhtype = FHT_SUNOS4;
#endif
#if	defined(SUNOS5)
	    fhtype = FHT_SUNOS5;
#endif
#if	defined(ultrix)
	    fhtype = FHT_ULTRIX;
#endif
#if	defined(__osf__)
	    fhtype = FHT_DECOSF;
#endif
	}
	/*
	 * This is basically a big decision tree
	 */
	else if ((fhp[0] == 0) && (fhp[1] == 0)) {
	    /* bytes[0,1] == (0,0); rules out Ultrix, IRIX5, SUNOS5 */
	    /* probably rules out HP-UX, AIX unless they allow major=0 */
	    if ((fhp[2] == 0) && (fhp[3] == 0)) {
		/* bytes[2,3] == (0,0); must be Auspex */
		/* XXX or could be Ultrix+MASSBUS "hp" disk? */
		fhtype = FHT_AUSPEX;
	    }
	    else {
		/*
		 * bytes[2,3] != (0,0); rules out Auspex, could be
		 * DECOSF, SUNOS4, or IRIX4
		 */
		if ((fhp[4] != 0) && (fhp[5] == 0) &&
			(fhp[8] == 12) && (fhp[9] == 0)) {
		    /* seems to be DECOSF, with minor == 0 */
		    fhtype = FHT_DECOSF;
		}
		else {
		    /* could be SUNOS4 or IRIX4 */
		    /* XXX the test of fhp[5] == 8 could be wrong */
		    if ((fhp[4] == 0) && (fhp[5] == 8) && (fhp[6] == 0) &&
			(fhp[7] == 0)) {
			/* looks like a length, not a file system typecode */
			fhtype = FHT_IRIX4;
		    }
		    else {
			/* by elimination */
			fhtype = FHT_SUNOS4;
		    }
		}
	    }
	}
	else {
	    /*
	     * bytes[0,1] != (0,0); rules out Auspex, IRIX4, SUNOS4
	     * could be IRIX5, DECOSF, UCX, Ultrix, SUNOS5
	     * could be AIX, HP-UX
	     */
	    if ((fhp[2] == 0) && (fhp[3] == 0)) {
		/*
		 * bytes[2,3] == (0,0); rules out OSF, probably not UCX
		 * (unless the exported device name is just one letter!),
		 * could be Ultrix, IRIX5, AIX, or SUNOS5
		 * might be HP-UX (depends on their values for minor devs)
		 */
		/*XXX we probably only need to test of these two bytes */
		if ((fhp[21] == 0) && (fhp[23] == 0)) {
		    fhtype = FHT_ULTRIX;
		}
		else {
		    /* Could be SUNOS5/IRIX5, maybe AIX */
		    /* XXX no obvious difference between SUNOS5 and IRIX5 */
		    if (fhp[9] == 10)
			fhtype = FHT_SUNOS5;
		    /* XXX what about AIX? */
		}
	    }
	    else {
		/*
		 * bytes[2,3] != (0,0); rules out Ultrix, could be
		 * DECOSF, SUNOS5, IRIX5, AIX, HP-UX, or UCX
		 */
		if ((fhp[8] == 12) && (fhp[9] == 0)) {
		    fhtype = FHT_DECOSF;
		}
		else if ((fhp[8] == 0) && (fhp[9] == 10)) {
		    /* could be SUNOS5/IRIX5, AIX, HP-UX */
		    if ((fhp[7] == 0) && (fhp[6] == 0) &&
			(fhp[5] == 0) && (fhp[4] == 0)) {
			/* XXX is this always true of HP-UX? */
			fhtype = FHT_HPUX9;
		    }
		    else if (fhp[7] == 2) {
			/* This would be MNT_NFS on AIX, which is impossible */
			fhtype = FHT_SUNOS5;	/* or maybe IRIX5 */
		    }
		    else {
			/*
			 * XXX Could be SUNOS5/IRIX5 or AIX.  I don't
			 * XXX see any way to disambiguate these, so
			 * XXX I'm going with the more likely guess.
			 * XXX Sorry, Big Blue.
			 */
			fhtype = FHT_SUNOS5;	/* or maybe IRIX5 */
		    }
	        }
		else {
		    if (is_UCX(fhp)) {
			fhtype = FHT_VMSUCX;
		    }
		    else {
			fhtype = FHT_UNKNOWN;
		    }
		}
	    }
	}

	/* XXX still needs to handle SUNOS3 */

	switch (fhtype) {
	case FHT_AUSPEX:
	    fsidp->Fsid_dev.Minor = fhp[7];
	    fsidp->Fsid_dev.Major = fhp[6];
	    fsidp->fsid_code = 0;

	    temp = make_uint32(fhp[12], fhp[13], fhp[14], fhp[15]);
	    *inop = temp;

	    if (osnamep)
		*osnamep = "Auspex";
	    break;

	case FHT_DECOSF:
	    fsidp->fsid_code = make_uint32(fhp[7], fhp[6], fhp[5], fhp[4]);
			/* XXX could ignore 3 high-order bytes */

	    temp = make_uint32(fhp[3], fhp[2], fhp[1], fhp[0]);
	    fsidp->Fsid_dev.Minor = temp & 0xFFFFF;
	    fsidp->Fsid_dev.Major = (temp>>20) & 0xFFF;

	    temp = make_uint32(fhp[15], fhp[14], fhp[13], fhp[12]);
	    *inop = temp;
	    if (osnamep)
		*osnamep = "OSF";
	    break;

	case FHT_IRIX4:
	    fsidp->Fsid_dev.Minor = fhp[3];
	    fsidp->Fsid_dev.Major = fhp[2];
	    fsidp->fsid_code = 0;

	    temp = make_uint32(fhp[8], fhp[9], fhp[10], fhp[11]);
	    *inop = temp;

	    if (osnamep)
		*osnamep = "IRIX4";
	    break;

	case FHT_IRIX5:
	    fsidp->Fsid_dev.Minor = make_uint16(fhp[2], fhp[3]);
	    fsidp->Fsid_dev.Major = make_uint16(fhp[0], fhp[1]);
	    fsidp->fsid_code = make_uint32(fhp[4], fhp[5], fhp[6], fhp[7]);

	    temp = make_uint32(fhp[12], fhp[13], fhp[14], fhp[15]);
	    *inop = temp;

	    if (osnamep)
		*osnamep = "IRIX5";
	    break;

	case FHT_SUNOS3:
	    if (osnamep)
		*osnamep = "SUNOS3";
	    break;

	case FHT_SUNOS4:
	    fsidp->Fsid_dev.Minor = fhp[3];
	    fsidp->Fsid_dev.Major = fhp[2];
	    fsidp->fsid_code = make_uint32(fhp[4], fhp[5], fhp[6], fhp[7]);

	    temp = make_uint32(fhp[12], fhp[13], fhp[14], fhp[15]);
	    *inop = temp;

	    if (osnamep)
		*osnamep = "SUNOS4";
	    break;

	case FHT_SUNOS5:
	    temp = make_uint16(fhp[0], fhp[1]);
	    fsidp->Fsid_dev.Major = (temp>>2) &  0x3FFF;
	    temp = make_uint24(fhp[1], fhp[2], fhp[3]);
	    fsidp->Fsid_dev.Minor = temp & 0x3FFFF;
	    fsidp->fsid_code = make_uint32(fhp[4], fhp[5], fhp[6], fhp[7]);

	    temp = make_uint32(fhp[12], fhp[13], fhp[14], fhp[15]);
	    *inop = temp;

	    if (osnamep)
		*osnamep = "SUNOS5";
	    break;

	case FHT_ULTRIX:
	    fsidp->fsid_code = 0;
	    fsidp->Fsid_dev.Minor = fhp[0];
	    fsidp->Fsid_dev.Major = fhp[1];

	    temp = make_uint32(fhp[7], fhp[6], fhp[5], fhp[4]);
	    *inop = temp;
	    if (osnamep)
		*osnamep = "Ultrix";
	    break;

	case FHT_VMSUCX:
	    /* No numeric file system ID, so hash on the device-name */
	    if (sizeof(*fsidp) >= 14) {
		if (sizeof(*fsidp) > 14)
		    memset((char *)fsidp, 0, sizeof(*fsidp));
		/* just use the whole thing */
		memcpy((char *)fsidp, (char *)fh, 14);
	    }
	    else {
		u_int32_t tempa[4];	/* at least 16 bytes, maybe more */

		memset((char *)tempa, 0, sizeof(tempa));
		memcpy((char *)tempa, (char *)fh, 14); /* ensure alignment */
		fsidp->Fsid_dev.Minor = tempa[0] + (tempa[1]<<1);
		fsidp->Fsid_dev.Major = tempa[2] + (tempa[3]<<1);
		fsidp->fsid_code = 0;
	    }

	    /* VMS file ID is: (RVN, FidHi, FidLo) */
	    *inop = make_uint32(fhp[26], fhp[27], fhp[23], fhp[22]);

	    /* Caller must save (and null-terminate?) this value */
	    if (fsnamep)
		*fsnamep = (char *)&(fhp[1]);

	    if (osnamep)
		*osnamep = "VMS";
	    break;

	case FHT_AIX32:
	    fsidp->Fsid_dev.Minor = make_uint16(fhp[2], fhp[3]);
	    fsidp->Fsid_dev.Major = make_uint16(fhp[0], fhp[1]);
	    fsidp->fsid_code = make_uint32(fhp[4], fhp[5], fhp[6], fhp[7]);

	    temp = make_uint32(fhp[12], fhp[13], fhp[14], fhp[15]);
	    *inop = temp;

	    if (osnamep)
		*osnamep = "AIX32";
	    break;

	case FHT_HPUX9:
	    fsidp->Fsid_dev.Major = fhp[0];
	    temp = make_uint24(fhp[1], fhp[2], fhp[3]);
	    fsidp->Fsid_dev.Minor = temp;
	    fsidp->fsid_code = make_uint32(fhp[4], fhp[5], fhp[6], fhp[7]);

	    temp = make_uint32(fhp[12], fhp[13], fhp[14], fhp[15]);
	    *inop = temp;

	    if (osnamep)
		*osnamep = "HPUX9";
	    break;

	case FHT_UNKNOWN:
#ifdef DEBUG
	    {
		/* XXX debugging */
		int i;
		for (i = 0; i < 32; i++)
			(void)fprintf(stderr, "%x.", fhp[i]);
		(void)fprintf(stderr, "\n");
	    }
#endif
	    /* XXX for now, give "bogus" values to aid debugging */
	    fsidp->fsid_code = 0;
	    fsidp->Fsid_dev.Minor = 257;
	    fsidp->Fsid_dev.Major = 257;
	    *inop = 1;

	    /* display will show this string instead of (257,257) */
	    if (fsnamep)
		*fsnamep = "Unknown";

	    if (osnamep)
		*osnamep = "Unknown";
	    break;

	}
}

/*
 * Is this a VMS UCX file handle?
 *	Check for:
 *	(1) leading code byte	[XXX not yet]
 *	(2) followed by string of printing chars & spaces
 *	(3) followed by string of nulls
 */
static int
is_UCX(fhp)
unsigned char *fhp;
{
	register int i;
	int seen_null = 0;

	for (i = 1; i < 14; i++) {
	    if (isprint(fhp[i])) {
		if (seen_null)
		   return(0);
		else
		   continue;
	    }
	    else if (fhp[i] == 0) {
		seen_null = 1;
		continue;
	    }
	    else
		return(0);
	}

	return(1);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲免费资源在线播放| 另类小说图片综合网| 一区二区久久久久| 亚洲国产乱码最新视频| 亚洲欧美日韩电影| 亚洲国产精品久久久久婷婷884 | 五月婷婷综合网| 日本怡春院一区二区| 国产福利一区在线观看| 91色|porny| 精品国产一区二区在线观看| 国产日韩欧美激情| 秋霞成人午夜伦在线观看| 国产乱淫av一区二区三区| 91丨九色porny丨蝌蚪| 日韩午夜激情视频| 亚洲欧美一区二区三区久本道91| 午夜欧美视频在线观看 | 日韩欧美一区电影| 亚洲猫色日本管| 国产精品12区| 日韩精品中文字幕一区| 亚洲国产一二三| 91亚洲资源网| 国产欧美日韩不卡免费| 蜜桃精品视频在线观看| 91久久精品一区二区三区| 国产欧美一区二区精品忘忧草| 午夜伊人狠狠久久| 欧美午夜精品免费| 亚洲视频综合在线| 99久久精品免费看国产免费软件| 国产亚洲一区二区在线观看| 免费人成黄页网站在线一区二区| 欧洲色大大久久| 亚洲自拍偷拍网站| 欧美伊人精品成人久久综合97| 自拍偷自拍亚洲精品播放| 不卡的av电影| 一区二区在线观看视频 | 亚洲黄一区二区三区| 9人人澡人人爽人人精品| 亚洲精品一二三区| 在线免费观看视频一区| 亚洲第一激情av| 538在线一区二区精品国产| 韩国视频一区二区| 国产精品毛片无遮挡高清| 在线观看日韩高清av| 丝瓜av网站精品一区二区| 精品国产乱子伦一区| 成人h版在线观看| 亚洲一二三四区| 精品国产乱码久久久久久夜甘婷婷| 久久99久久99精品免视看婷婷| 国产日韩欧美一区二区三区综合| 色综合久久久网| 久久99精品国产麻豆婷婷| 成人免费小视频| 日韩免费视频一区二区| 色综合欧美在线视频区| 免费成人在线网站| 香蕉av福利精品导航| 亚洲国产成人自拍| 欧美大片日本大片免费观看| www.欧美精品一二区| 国内外成人在线| 美国欧美日韩国产在线播放| 亚洲日本乱码在线观看| 欧美高清在线视频| 精品日韩欧美在线| 欧美一区二区三区啪啪| 在线视频一区二区免费| www.av精品| 成人免费视频播放| 国产精品影视在线| 国产乱码精品一区二区三区五月婷 | 亚洲精品一区二区三区香蕉| 欧美日韩中字一区| 欧美午夜宅男影院| 欧美日韩国产小视频在线观看| 99视频热这里只有精品免费| 国产成a人亚洲精| www.色综合.com| 色综合 综合色| 欧美精品色一区二区三区| 欧美日高清视频| 日韩一区二区麻豆国产| 91精品国产色综合久久不卡蜜臀| 欧美性猛片aaaaaaa做受| 欧美网站一区二区| 日韩视频一区二区| 欧美激情一区二区在线| 亚洲综合丁香婷婷六月香| 日韩精品亚洲一区二区三区免费| 国产综合色在线| 色一区在线观看| 日韩一区二区三区在线观看| 国产精品久久免费看| 亚洲精品美腿丝袜| 久久精品国产一区二区三| av动漫一区二区| 日韩欧美一二三| 一区二区三区欧美| 狠狠色丁香婷婷综合久久片| 欧美综合视频在线观看| 久久精品一区二区三区不卡牛牛| 亚洲美女屁股眼交3| 国产九九视频一区二区三区| 91成人免费在线视频| 欧美激情一区二区三区| 蜜臀99久久精品久久久久久软件| proumb性欧美在线观看| 久久久高清一区二区三区| 蜜臀av在线播放一区二区三区| 91污在线观看| 国产精品国产三级国产aⅴ入口 | 国产欧美综合色| 狠狠色丁香九九婷婷综合五月| 欧美日韩国产高清一区二区三区| 亚洲欧美怡红院| 92国产精品观看| 国产精品久久久久影院亚瑟 | 亚洲精品中文在线| 色综合一个色综合亚洲| 亚洲人成伊人成综合网小说| 国产69精品久久99不卡| 国产亚洲欧洲一区高清在线观看| 激情综合色综合久久| 精品国产三级电影在线观看| 久久精品国产亚洲a| 久久久青草青青国产亚洲免观| 国产精品自在在线| 中文字幕一区二区三区四区不卡| 丁香桃色午夜亚洲一区二区三区| 国产三级精品视频| 91在线观看一区二区| 一区二区三区久久久| 欧美精品日日鲁夜夜添| 黄页视频在线91| 亚洲男人的天堂在线aⅴ视频| 色菇凉天天综合网| 精品在线免费观看| 国产精品国产三级国产aⅴ入口| 欧美在线小视频| 国产一区免费电影| 亚洲三级在线观看| 欧美v日韩v国产v| 成人永久aaa| 美国三级日本三级久久99| 亚洲视频综合在线| wwwwww.欧美系列| 欧美日韩精品一区二区| 国产在线日韩欧美| 午夜精品福利一区二区三区蜜桃| 欧美精品一区二区三区蜜桃 | 极品销魂美女一区二区三区| 亚洲欧美日韩成人高清在线一区| 欧美一级xxx| 欧美日韩在线观看一区二区 | 国产精品久久久久一区 | 欧美aⅴ一区二区三区视频| 国产欧美va欧美不卡在线| 精品久久久久久久久久久久久久久久久| 成人小视频在线观看| 国产精品99久久久久久似苏梦涵| 五月婷婷久久综合| 亚洲小说春色综合另类电影| 国产精品国产三级国产aⅴ中文 | 97精品国产97久久久久久久久久久久 | 麻豆国产精品777777在线| 亚洲高清在线视频| 亚洲一区二区在线免费看| 中文字幕一区二区三区四区不卡| 久久久www成人免费毛片麻豆| 久久综合狠狠综合久久激情 | 国产精品77777| 国产精品1024| 在线观看日韩一区| 91.麻豆视频| 久久久精品tv| 玉米视频成人免费看| 午夜精品久久一牛影视| 日本美女一区二区三区视频| 久久精品国产99国产| 国内国产精品久久| 99国产麻豆精品| 91福利国产精品| 日韩欧美电影在线| 欧美韩国日本不卡| 亚洲一区免费观看| 久久精品99久久久| 色婷婷综合久久久中文一区二区| 欧美日韩在线播放| 久久久www成人免费无遮挡大片| 日韩一区欧美小说| 国产在线观看一区二区| 日本乱人伦一区| 久久久精品人体av艺术| 日欧美一区二区|