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

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

?? fcbfns.c

?? 這是DOS操作系統啟動的源代碼 里面是匯編語言 包括了部分的驅動程序
?? C
?? 第 1 頁 / 共 3 頁
字號:
		{
			if(*lpszFcbFext != ' ')
				pszBuffer[nDrvIdx + nFnameIdx + nFextIdx] =
				 *lpszFcbFext++;
			else
				break;
		}
	}
	else
		nFextIdx = 0;
	pszBuffer[nDrvIdx + nFnameIdx + nFextIdx] = '\0';
}

/* Ascii only file name match routines                  */
static BOOL 
FcbCharMatch (COUNT s, COUNT d, COUNT mode)
{
	if(s >= 'a' && s <= 'z')
		s -= 'a' - 'A';
	if(d >= 'a' && d <= 'z')
		d -= 'a' - 'A';
	if(mode && s == '?' && (d >= 'A' && s <= 'Z'))
		return TRUE;
	return s == d;
}


static BOOL 
FcbFnameMatch (BYTE FAR *s, BYTE FAR *d, COUNT n, COUNT mode)
{
	while(n--)
	{
		if(!FcbCharMatch(*s++, *d++, mode))
			return FALSE;
	}
	return TRUE;
}


BOOL FcbOpen(lpXfcb)
xfcb FAR *lpXfcb;
{
	WORD sft_idx;
	sft FAR *sftp;
	struct dhdr FAR *dhp;
	COUNT FcbDrive;

	/* get a free system file table entry                           */
	if((sftp = FcbGetFreeSft((WORD FAR *)&sft_idx)) == (sft FAR *)-1)
		return DE_TOOMANY;

	/* Build a traditional DOS file name                            */
	lpFcb = CommonFcbInit(lpXfcb, PriPathName, &FcbDrive);

	/* check for a device                                           */
	/* if we have an extension, can't be a device                   */
	if(IsDevice(PriPathName))
	{
		for(dhp = (struct dhdr FAR *)&nul_dev; dhp != (struct dhdr FAR *)-1; dhp = dhp -> dh_next)
		{
			if(FcbFnameMatch((BYTE FAR *)PriPathName, (BYTE FAR *)dhp -> dh_name, FNAME_SIZE, FALSE))
			{
				sftp -> sft_count += 1;
				sftp -> sft_mode = O_RDWR;
				sftp -> sft_attrib = 0;
				sftp -> sft_flags =
				  (dhp -> dh_attr & ~SFT_MASK) | SFT_FDEVICE | SFT_FEOF;
				sftp -> sft_psp = cu_psp;
				fbcopy(lpFcb -> fcb_fname, sftp -> sft_name, FNAME_SIZE+FEXT_SIZE);
				sftp -> sft_dev = dhp;
				lpFcb -> fcb_sftno = sft_idx;
				lpFcb -> fcb_curec = 0;
				lpFcb -> fcb_recsiz = 0;
				lpFcb -> fcb_fsize = 0;
				lpFcb -> fcb_date = dos_getdate();
				lpFcb -> fcb_time = dos_gettime();
				lpFcb -> fcb_rndm = 0;
				return TRUE;
			}
		}
	}
	sftp -> sft_status = dos_open(PriPathName, O_RDWR);
	if(sftp -> sft_status >= 0)
	{
		lpFcb -> fcb_drive = FcbDrive;
		lpFcb -> fcb_sftno = sft_idx;
		lpFcb -> fcb_curec = 0;
		lpFcb -> fcb_recsiz = 128;
		lpFcb -> fcb_fsize = dos_getfsize(sftp -> sft_status);
		dos_getftime(sftp -> sft_status,
		 (date FAR *)&lpFcb -> fcb_date,
		 (time FAR *)&lpFcb -> fcb_time);
		lpFcb -> fcb_rndm = 0;
		sftp -> sft_count += 1;
		sftp -> sft_mode = O_RDWR;
		sftp -> sft_attrib = 0;
		sftp -> sft_flags = 0;
		sftp -> sft_psp = cu_psp;
		fbcopy((BYTE FAR *)&lpFcb -> fcb_fname, (BYTE FAR *)&sftp -> sft_name, FNAME_SIZE+FEXT_SIZE);
		return TRUE;
	}
	else
		return FALSE;
}


BOOL FcbDelete(lpXfcb)
xfcb FAR *lpXfcb;
{
	COUNT FcbDrive;

	/* Build a traditional DOS file name                            */
	CommonFcbInit(lpXfcb, PriPathName, &FcbDrive);

	/* check for a device                                           */
	/* if we have an extension, can't be a device                   */
	if(IsDevice(PriPathName))
	{
		return FALSE;
	}
	else
	{
		BYTE FAR *lpOldDta = dta;
		dmatch Dmatch;

		dta = (BYTE FAR *)&Dmatch;
		if(dos_findfirst(D_ALL, PriPathName[1] == ':' ? &PriPathName[2] : PriPathName) != SUCCESS)
		{
			dta = lpOldDta;
			return FALSE;
		}
		do
		{
			if(dos_delete(Dmatch.dm_name) != SUCCESS)
			{
				dta = lpOldDta;
				return FALSE;
			}
		}
		while(dos_findnext() == SUCCESS);
		dta = lpOldDta;
		return TRUE;
	}
}


BOOL FcbRename(lpXfcb)
xfcb FAR *lpXfcb;
{
	rfcb FAR *lpRenameFcb;
	COUNT FcbDrive;

	/* Build a traditional DOS file name                            */
	lpRenameFcb = (rfcb FAR *)CommonFcbInit(lpXfcb, PriPathName, &FcbDrive);

	/* check for a device                                           */
	/* if we have an extension, can't be a device                   */
	if(IsDevice(PriPathName))
	{
		return FALSE;
	}
	else
	{
		BYTE FAR *lpOldDta = dta;
		dmatch Dmatch;

		dta = (BYTE FAR *)&Dmatch;
		if(dos_findfirst(D_ALL, PriPathName[1] == ':' ? &PriPathName[2] : PriPathName) != SUCCESS)
		{
			dta = lpOldDta;
			return FALSE;
		}


		do
		{
			fcb LocalFcb;
			BYTE *pToName, *pszFrom;
			BYTE FAR *pFromPattern;
			COUNT nIndex;

			/* First, expand the find match into fcb style  */
			/* file name entry                              */
			/* Fill with blanks first                       */
			for(pToName = LocalFcb.fcb_fname, nIndex = 0;
			 nIndex < FNAME_SIZE; nIndex++)
			{
				*pToName++ = ' ';
			}
			for(pToName = LocalFcb.fcb_fext, nIndex = 0;
			 nIndex < FEXT_SIZE; nIndex++)
			{
				*pToName++ = ' ';
			}

			/* next move in the file name while overwriting */
			/* the filler blanks                            */
			pszFrom = Dmatch.dm_name;
			pToName = LocalFcb.fcb_fname;
			for(nIndex = 0; nIndex < FNAME_SIZE; nIndex++)
			{
				if(*pszFrom != 0 && *pszFrom != '.')
					*pToName++ = *pszFrom++;
				else if(*pszFrom == '.')
				{
					++pszFrom;
					break;
				}
				else
					break;
			}

			if(*pszFrom != '\0')
			{
				pToName = LocalFcb.fcb_fext;
				for(nIndex = 0; nIndex < FEXT_SIZE; nIndex++)
				{
					if(*pszFrom != '\0')
						*pToName++ = *pszFrom++;
					else
						break;
				}
			}

			/* Overlay the pattern, skipping '?'            */
			/* I'm cheating because this assumes that the   */
			/* struct alignments are on byte boundaries     */
			pToName = LocalFcb.fcb_fname;
			for(pFromPattern = lpRenameFcb -> renNewName,
			 nIndex = 0; nIndex < FNAME_SIZE + FEXT_SIZE; nIndex++)
			{
				if(*pFromPattern != '?')
					*pToName++ = *pFromPattern++;
				else
					++pFromPattern;
			}

			/* now to build a dos name again                */
			LocalFcb.fcb_drive = 0;
			FcbNameInit((fcb FAR *)&LocalFcb, PriPathName, &FcbDrive);

			if(dos_rename(Dmatch.dm_name,
			 PriPathName[1] == ':' ? &PriPathName[2] : PriPathName) != SUCCESS)
			{
				dta = lpOldDta;
				return FALSE;
			}
		}
		while(dos_findnext() == SUCCESS);
		dta = lpOldDta;
		return TRUE;
	}
}


void MoveDirInfo(lpDmatch, lpDir)
dmatch FAR *lpDmatch;
struct dirent FAR *lpDir;
{
	BYTE FAR *lpToName, FAR *lpszFrom;
	COUNT nIndex;

	/* First, expand the find match into dir style  */
	/* file name entry                              */
	/* Fill with blanks first                       */
	for(lpToName = lpDir -> dir_name, nIndex = 0;
	 nIndex < FNAME_SIZE; nIndex++)
	{
		*lpToName++ = ' ';
	}
	for(lpToName = lpDir -> dir_ext, nIndex = 0;
	 nIndex < FEXT_SIZE; nIndex++)
	{
		*lpToName++ = ' ';
	}

	/* next move in the file name while overwriting */
	/* the filler blanks                            */
	lpszFrom = lpDmatch -> dm_name;
	lpToName = lpDir -> dir_name;
	for(nIndex = 0; nIndex < FNAME_SIZE; nIndex++)
	{
		if(*lpszFrom != 0 && *lpszFrom != '.')
			*lpToName++ = *lpszFrom++;
		else
			break;
	}
	    
	if(*lpszFrom != '\0')
	{
		if(*lpszFrom == '.')
			++lpszFrom;
		lpToName = lpDir -> dir_ext;
		for(nIndex = 0; nIndex < FEXT_SIZE; nIndex++)
		{
			if(*lpszFrom != '\0')
				*lpToName++ = *lpszFrom++;
			else
				break;
		}
	}
	for(nIndex = 0; nIndex < 10; nIndex++)
		lpDir -> dir_reserved[nIndex] = 0;
	lpDir -> dir_attrib = lpDmatch ->dm_attr_fnd;
	lpDir -> dir_time = lpDmatch ->dm_time;
	lpDir -> dir_date = lpDmatch ->dm_date;
	lpDir -> dir_start = lpDmatch ->dm_cluster;
	lpDir -> dir_size = lpDmatch ->dm_size;
}


BOOL FcbClose(lpXfcb)
xfcb FAR *lpXfcb;
{
	sft FAR *s;

	/* Convert to fcb if necessary                                  */
	lpFcb = ExtFcbToFcb(lpXfcb);

	/* Get the SFT block that contains the SFT      */
	if((s = FcbGetSft(lpFcb -> fcb_sftno)) == (sft FAR *)-1)
		return FALSE;

	/* If this is not opened another error          */
	if(s -> sft_count == 0)
		return FALSE;

	/* now just drop the count if a device, else    */
	/* call file system handler                     */
	if(s -> sft_flags & SFT_FDEVICE)
	{
		s -> sft_count -= 1;
		return TRUE;
	}
	else
	{
		s -> sft_count -= 1;
		if(s -> sft_count > 0)
			return SUCCESS;
		else
		{
			/* change time and set file size                */
			dos_setftime(s -> sft_status,
			 (date FAR *)&lpFcb -> fcb_date,
			 (time FAR *)&lpFcb -> fcb_time);
			dos_setfsize(s -> sft_status,
			 lpFcb -> fcb_fsize);
			return dos_close(s -> sft_status) == SUCCESS;
		}
	}
}


BOOL FcbFindFirst(lpXfcb)
xfcb FAR *lpXfcb;
{
	BYTE FAR *lpOldDta;
	BYTE FAR *lpDir;
	COUNT nIdx, FcbDrive;
	psp FAR *lpPsp = MK_FP(cu_psp,0);

	/* First, move the dta to a local and change it around to match */
	/* our functions.                                               */
	lpDir = (BYTE FAR *)dta;
	dta = (BYTE FAR *)&Dmatch;
	
	/* Next initialze local variables by moving them from the fcb   */
	lpFcb = CommonFcbInit(lpXfcb, PriPathName, &FcbDrive);
	if(lpXfcb -> xfcb_flag == 0xff)
	{
		wAttr = lpXfcb -> xfcb_attrib;
		fbcopy(lpXfcb, lpDir, 7);
		lpDir += 7;
	}
	else
		wAttr = D_ALL;

	*lpDir++ = PriPathName[0] - 'A';
	if(dos_findfirst(wAttr, PriPathName) != SUCCESS)       
	{
		dta = lpPsp -> ps_dta;
		return FALSE;
	}

	MoveDirInfo((dmatch FAR *)&Dmatch, (struct dirent FAR *)lpDir);
	lpFcb -> fcb_dirclst = Dmatch.dm_cluster;
	lpFcb -> fcb_diroff = Dmatch.dm_entry;
	dta = lpPsp -> ps_dta;
	return TRUE;
}


BOOL FcbFindNext(lpXfcb)
xfcb FAR *lpXfcb;
{
	BYTE FAR *lpOldDta;
	BYTE FAR *lpDir;
	COUNT nIdx, FcbDrive;
	psp FAR *lpPsp = MK_FP(cu_psp,0);

	/* First, move the dta to a local and change it around to match */
	/* our functions.                                               */
	lpDir = (BYTE FAR *)dta;
	dta = (BYTE FAR *)&Dmatch;

	/* Next initialze local variables by moving them from the fcb   */
	lpFcb = CommonFcbInit(lpXfcb, PriPathName, &FcbDrive);
	if((xfcb FAR *)lpFcb != lpXfcb)
	{
		wAttr = lpXfcb -> xfcb_attrib;
		fbcopy(lpXfcb, lpDir, 7);
		lpDir += 7;
	}
	else
		wAttr = D_ALL;

	/* Reconstrct the dirmatch structure from the fcb               */
	*lpDir++ = FcbDrive;
	Dmatch.dm_drive = FcbDrive? FcbDrive - 1 : default_drive;

	fbcopy(lpFcb -> fcb_fname, (BYTE FAR *)Dmatch.dm_name_pat, FNAME_SIZE+FEXT_SIZE);
	upMem((BYTE FAR *)Dmatch.dm_name_pat, FNAME_SIZE+FEXT_SIZE);
	Dmatch.dm_attr_srch = wAttr;
	Dmatch.dm_entry = lpFcb -> fcb_diroff;
	Dmatch.dm_cluster = lpFcb -> fcb_dirclst;

	if(dos_findnext() != SUCCESS)
	{
		dta = lpPsp -> ps_dta;
		return FALSE;
	}

	MoveDirInfo((dmatch FAR *)&Dmatch, (struct dirent FAR *)lpDir);
	lpFcb -> fcb_dirclst = Dmatch.dm_cluster;
	lpFcb -> fcb_diroff = Dmatch.dm_entry;
	dta = lpPsp -> ps_dta;
	return TRUE;
}
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国精产品一区一区三区mba桃花 | 欧美另类变人与禽xxxxx| 欧美区视频在线观看| 欧美sm极限捆绑bd| 日韩美女精品在线| 黄色精品一二区| 91视频精品在这里| 69p69国产精品| 国产欧美1区2区3区| 亚洲第四色夜色| 99re8在线精品视频免费播放| 欧美一级欧美三级在线观看 | 99亚偷拍自图区亚洲| 日韩手机在线导航| 亚洲成av人综合在线观看| 99久久婷婷国产综合精品| 久久久天堂av| 六月丁香婷婷久久| 欧美精品 国产精品| 夜夜爽夜夜爽精品视频| zzijzzij亚洲日本少妇熟睡| 欧美v日韩v国产v| 日本不卡一二三| 在线观看91av| 亚洲人成小说网站色在线| 老司机免费视频一区二区三区| 欧美日韩一区不卡| 亚洲国产裸拍裸体视频在线观看乱了 | 日本特黄久久久高潮| 成人sese在线| 欧美三级电影在线看| 国产精品久久久久久久久免费樱桃 | 国产成人综合视频| 欧美成人三级在线| 另类小说视频一区二区| 精品国产乱码久久久久久免费 | 欧美久久久久免费| 日精品一区二区| 欧美一级生活片| 欧美a级一区二区| 日韩欧美专区在线| 国产乱码精品1区2区3区| 久久综合视频网| 顶级嫩模精品视频在线看| 日本一区二区三级电影在线观看 | 久久一日本道色综合| 久久99久久99精品免视看婷婷| 日韩一级黄色片| 韩国精品一区二区| 国产精品久久久久精k8| 99免费精品视频| 亚洲国产精品一区二区久久| 欧美男人的天堂一二区| 久久成人综合网| 亚洲国产高清在线观看视频| 99免费精品在线观看| 偷拍自拍另类欧美| 日韩美女主播在线视频一区二区三区 | 国产剧情一区在线| 国产欧美日韩三区| 色欧美片视频在线观看在线视频| 亚洲成人av福利| 欧美变态口味重另类| 成人av电影在线观看| 亚洲已满18点击进入久久| 91精品国产综合久久国产大片| 国产精品一区三区| 亚洲一区免费视频| 精品电影一区二区三区| av综合在线播放| 奇米色一区二区三区四区| 中文字幕高清一区| 欧美精品第一页| 成人性色生活片| 日韩vs国产vs欧美| 中文字幕制服丝袜一区二区三区 | 五月天亚洲婷婷| 国产午夜精品久久| 欧美日韩亚洲综合在线 | 色狠狠综合天天综合综合| 秋霞午夜av一区二区三区| 亚洲国产精品成人综合| 欧美日韩精品电影| 成人午夜免费视频| 日韩va亚洲va欧美va久久| 亚洲色图.com| 久久综合久久99| 欧美一区二区三区四区高清| 97se亚洲国产综合自在线不卡| 国产自产高清不卡| 日本三级韩国三级欧美三级| 亚洲精品成人悠悠色影视| 国产欧美一区二区在线观看| 日韩一级免费一区| 欧美日韩成人一区二区| 99re视频精品| www.av亚洲| 国产一区欧美一区| 久久不见久久见免费视频7| 亚洲午夜影视影院在线观看| 成人欧美一区二区三区小说| 精品99999| 日韩一区二区三区免费观看| 欧美日韩在线一区二区| 欧美一区二区三区四区五区 | 国产综合久久久久久鬼色 | 91福利在线导航| 99热99精品| 99久久免费精品| 91在线免费播放| 北条麻妃国产九九精品视频| 成人免费高清在线| 成人午夜又粗又硬又大| 成人免费毛片片v| 成人激情免费视频| 成人福利视频网站| a4yy欧美一区二区三区| 91亚洲国产成人精品一区二区三| 成人久久久精品乱码一区二区三区| 国产一区91精品张津瑜| 国产黄色成人av| 国产99久久久精品| 成人夜色视频网站在线观看| 成人黄页毛片网站| 99精品在线观看视频| 色婷婷国产精品久久包臀 | 视频一区二区三区在线| 午夜精品福利久久久| 免费观看一级特黄欧美大片| 久久99国内精品| 韩国av一区二区三区四区| 高清不卡一区二区| 91网上在线视频| 欧美人狂配大交3d怪物一区| 日韩欧美专区在线| 欧美国产激情二区三区| 国产精品国产三级国产专播品爱网| 国产精品不卡视频| 婷婷开心激情综合| 国产一区二区精品久久91| 91在线观看美女| 日韩视频一区在线观看| 国产欧美精品一区aⅴ影院 | 国产视频亚洲色图| 亚洲少妇最新在线视频| 日韩精品欧美精品| 粉嫩av一区二区三区| 99国产精品视频免费观看| 欧美老女人第四色| 国产精品久久久久aaaa樱花 | 欧美日本国产一区| 久久久久国产精品厨房| 亚洲精品国产一区二区三区四区在线| 亚洲美女在线一区| 精品一区二区日韩| 成人激情动漫在线观看| 久久99精品久久久久婷婷| 美女脱光内衣内裤视频久久网站| 亚洲 欧美综合在线网络| 欧美aaa在线| 99精品国产视频| 91麻豆精品91久久久久同性| 久久久青草青青国产亚洲免观| 亚洲欧洲日本在线| 日韩主播视频在线| 日日夜夜一区二区| 成人免费视频国产在线观看| 色综合色综合色综合色综合色综合| 欧美日韩久久久一区| 国产精品国产三级国产aⅴ中文| 亚洲一区二区三区四区在线观看| 天天av天天翘天天综合网| 蜜桃精品视频在线| 欧美亚洲另类激情小说| 欧美变态口味重另类| 亚洲天堂福利av| 国产老妇另类xxxxx| 色先锋久久av资源部| 欧美成人a视频| 国产精品久久午夜夜伦鲁鲁| 精品一区二区免费| 欧美性受xxxx| 国产日本欧洲亚洲| 婷婷丁香激情综合| 成人一道本在线| 日韩一区二区三区视频| 综合欧美一区二区三区| 国产99久久久精品| 日韩午夜激情av| 亚洲一区二区在线观看视频| 久久精品国产一区二区三区免费看| 本田岬高潮一区二区三区| 日韩精品一区二区三区在线播放 | 欧美xxx久久| 亚洲一级在线观看| 成人av网站在线| 国产亚洲综合性久久久影院| 亚洲一级二级三级在线免费观看| 成人精品视频网站| 久久色.com|