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

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

?? dir.c

?? 這是DOS操作系統啟動的源代碼 里面是匯編語言 包括了部分的驅動程序
?? C
字號:
/****************************************************************/
/*								*/
/*			      dir.c				*/
/*								*/
/*		        DOS "dir" Command 			*/
/*								*/
/*			 November 6, 1991			*/
/*								*/
/*			Copyright (c) 1995			*/
/*			Pasquale J. Villani			*/
/*			All Rights Reserved			*/
/*								*/
/* This file is part of DOS-C.					*/
/*								*/
/* DOS-C is free software; you can redistribute it and/or	*/
/* modify it under the terms of the GNU General Public License	*/
/* as published by the Free Software Foundation; either version	*/
/* 2, or (at your option) any later version.			*/
/*								*/
/* DOS-C is distributed in the hope that it will be useful, but	*/
/* WITHOUT ANY WARRANTY; without even the implied warranty of	*/
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See	*/
/* the GNU General Public License for more details.		*/
/*								*/
/* You should have received a copy of the GNU General Public	*/
/* License along with DOS-C; see the file COPYING.  If not,	*/
/* write to the Free Software Foundation, 675 Mass Ave,		*/
/* Cambridge, MA 02139, USA.					*/
/****************************************************************/


/* $Logfile:   C:/dos-c/src/command/dir.c_v  $ */

/* $Log:   C:/dos-c/src/command/dir.c_v  $ 
 * 
 *    Rev 1.4   31 Jan 1998  8:12:26   patv
 * Put preprocessor switch for version strings and changed log strings
 * 
 *    Rev 1.3   22 Jan 1998  4:51:42   patv
 * Fixed bug in bytes free calculation.
 * 
 *    Rev 1.2   29 Aug 1996 13:07:00   patv
 * Bug fixes for v0.91b
 * 
 *    Rev 1.1   01 Sep 1995 18:04:32   patv
 * First GPL release.
 * 
 *    Rev 1.0   02 Jul 1995 10:01:40   patv
 * Initial revision.
 */
/* $EndLog$ */

#include "../../hdr/portab.h"
#include "globals.h"
#include "proto.h"

#ifdef VERSION_STRINGS
static BYTE *RcsId = "$Header:   C:/dos-c/src/command/dir.c_v   1.4   31 Jan 1998  8:12:26   patv  $";
#endif

#ifdef PROTO
COUNT chk_line(COUNT);
#else
COUNT chk_line();
#endif


#define D_ALL	D_NORMAL | D_RDONLY | D_HIDDEN | D_SYSTEM | D_DIR | D_ARCHIVE


BOOL dir(argc, argv)
COUNT argc;
BYTE *argv[];
{
	WORD count = 0, disp_line, columns = 0;
	ULONG total = 0l;
	BYTE vid[67], *ext;
	BYTE cudir[67];
	BYTE sdrive[2];
	dmatch dmp;
	COUNT at_mask, at_pat;
	UCOUNT free_clst, sec_size, clst_size, n_clst;
	BOOL wflag, pflag, lflag, bflag;
	COUNT driveno = -1, cudrvno;
	BYTE pattern[MAX_CMDLINE] = "", formatted[MAX_CMDLINE];
	BYTE path[MAX_CMDLINE] = "", sopt[MAX_CMDLINE] = "";

	/* parse for options						*/
	wflag = pflag = lflag = bflag = count = FALSE;
	dosopt("$d$p*[a:wplb]+", (BYTE FAR *)tail,
		&driveno, path, pattern, sopt, &wflag, &pflag, &lflag, &bflag);

	/* Set defaults for file name and path if not supplied.		*/
	if(strcmp(path, "") == 0)
		strcpy(path, ".");
	if(strcmp(pattern,"") == 0)
		strcpy(pattern,"*.*");

	/* Intialize the dta to put the dir info into			*/
	DosSetDta((BYTE FAR *)&dmp);

	/* Get the current drive, so we can switch back.		*/
	cudrvno = DosGetDrive();

	/* Switch to the requested directory to list			*/
	DosSetDrive(driveno < 0 ? cudrvno : driveno);

	/* Get the current directory. Note that the DOS system call	*/
	/* does not return drive or leading '\', so we need to add	*/
	/* them.							*/
	cudir[0] = '\\';
	DosPwd(DosGetDrive() + 1, (BYTE FAR *)&cudir[1]);

	/* Change to the path and then test the file name. If it is a	*/
	/* directory, switch to it, because the user wants a listing of	*/
	/* its content.							*/
	if(DosCd((BYTE FAR *)path) != SUCCESS)
	{
		error_message(INV_DIR);
		DosSetDrive(cudrvno);
		return FALSE;
	}
	if(!iswild(pattern))
	{
		if(DosFindFirst(D_DIR, (BYTE FAR *)pattern) != SUCCESS)
		{
			error_message(FILE_NOT_FOUND);
			return TRUE;
		}
		else
		{
			if(dmp.dm_attr_fnd & D_DIR)
			{
				if(DosCd((BYTE FAR *)pattern) != SUCCESS)
				{
					error_message(INV_DIR);
					DosSetDrive(cudrvno);
					return FALSE;
				}
				else
					strcpy(pattern, "*.*");
			}
		}
	}


	/* Get the new directory.					*/
	path[0] = '\\';
	DosPwd(DosGetDrive() + 1, (BYTE FAR *)&path[1]);

	/* Intialize the dta to put the dir info into			*/
	DosSetDta((BYTE FAR *)&dmp);

	/* Get the volume label				*/
	if(DosFindFirst(D_VOLID, (BYTE FAR *)"*.*") != SUCCESS)
		sprintf(vid, "has no label");
	else
	{
		for(ext = dmp.dm_name; *ext != NULL; ext++)
			if(*ext == '.')
			{
				*ext++ = NULL;
				break;
			}
		sprintf(vid, "is %s%s", dmp.dm_name, ext);
	}

	/* Display the header, if not turned off			*/
	sdrive[0] = 'A' + DosGetDrive();
	sdrive[1] = NULL;
	if(bflag)
		disp_line = 0;
	else
		disp_line = 4;
	if(!bflag)
	{
		printf("\n Volume in drive %s %s\n", sdrive, vid);
		printf(" Directory of %s:%s\n\n", sdrive, path);
	}

	/* Build the attribute mask and pattern				*/
	at_mask = *sopt == '\0' ? D_RDONLY | D_HIDDEN | D_SYSTEM : 0;
	at_pat = 0;
	for(ext = sopt; *ext != '\0'; ++ext)
	{
		if(*ext == '-')
		{
			++ext;
			switch(tolower(*ext))
			{
			case 'a':
				at_mask |= D_ARCHIVE;
				at_pat &= ~D_ARCHIVE;
				break;

			case 'd':
				at_mask |= D_DIR;
				at_pat &= ~D_DIR;
				break;

			case 'r':
				at_mask |= D_RDONLY;
				at_pat &= ~D_RDONLY;
				break;

			case 'h':
				at_mask |= D_HIDDEN;
				at_pat &= ~D_HIDDEN;
				break;

			case 's':
				at_mask |= D_SYSTEM;
				at_pat &= ~D_SYSTEM;
				break;
			}
		}
		else
		{
			switch(tolower(*ext))
			{
			case 'a':
				at_mask |= D_ARCHIVE;
				at_pat |= D_ARCHIVE;
				break;

			case 'd':
				at_mask |= D_DIR;
				at_pat |= D_DIR;
				break;

			case 'r':
				at_mask |= D_RDONLY;
				at_pat |= D_RDONLY;
				break;

			case 'h':
				at_mask |= D_HIDDEN;
				at_pat |= D_HIDDEN;
				break;

			case 's':
				at_mask |= D_SYSTEM;
				at_pat |= D_SYSTEM;
				break;
			}
		}
	}

	if(DosFindFirst(D_ALL, (BYTE FAR *)pattern) != SUCCESS)
	{
		error_message(FILE_NOT_FOUND);
		return TRUE;
	}

	if(wflag)
	{
		do
		{
			char *p;

			if((*sopt != 0) && !((dmp.dm_attr_fnd & at_mask) == at_pat))
				continue;
			if(dmp.dm_attr_fnd & D_DIR)
			{
				if(bflag && *dmp.dm_name == '.')
					continue;
				sprintf(formatted, "[%s]", dmp.dm_name);
				if(lflag)
					strlwr(formatted);
				printf("%-14s ", formatted);
				++columns;
				if(columns == 5)
				{
					if(pflag)
						disp_line = chk_line(disp_line);
					printf("\n");
					columns = 0;
				}
			}
			else
			{
				ext = "   ";
				sprintf(formatted, "%s", dmp.dm_name);
				if(lflag)
					strlwr(formatted);
				printf("%-15s",formatted);
				++columns;
				if(columns == 5)
				{
					if(pflag)
						disp_line = chk_line(disp_line);
					printf("\n");
					columns = 0;
				}
			}
		++count;
		total += dmp.dm_size;
		}
		while(DosFindNext() == SUCCESS);
	}
	else
	{
		do
		{
			WORD hour = TM_HOUR(dmp.dm_time);

			if((*sopt != 0) && !((dmp.dm_attr_fnd & at_mask) == at_pat))
				continue;
			if(dmp.dm_name[0] == '.')
				ext = "";
			else
				for(ext = dmp.dm_name; *ext != NULL; ext++)
				{
					if(*ext == '.')
					{
						*ext++ = NULL;
						break;
					}
				}
			if(lflag)
			{
				strlwr(dmp.dm_name);
				strlwr(ext);
			}
			if(dmp.dm_attr_fnd & D_DIR)
			{
				if(bflag && *dmp.dm_name == '.')
					continue;
				if(pflag)
					disp_line = chk_line(disp_line);
				printf(bflag ? "\n%s.%s" : "\n   %8s %3s  <DIR>      %-2d-%-02d-%-02d  %-2d:%-02d%s",
					dmp.dm_name, ext,
					DT_MONTH(dmp.dm_date),
					DT_DAY(dmp.dm_date),
					(DT_YEAR(dmp.dm_date) + 1980) % 100,
					hour > 12 ? hour - 12 : (hour == 0) ? 12 : hour,
					TM_MIN(dmp.dm_time),
					hour >= 12 ? "p" : "a");
			}
			else
			{
				if(pflag)
					disp_line = chk_line(disp_line);
				printf(bflag ? "\n%s.%s" : "\n   %8s %3s %-10ld  %-2d-%-02d-%-02d  %-2d:%-02d%s",
					dmp.dm_name, ext, dmp.dm_size,
					DT_MONTH(dmp.dm_date),
					DT_DAY(dmp.dm_date),
					(DT_YEAR(dmp.dm_date) + 1980) % 100,
					hour > 12 ? hour - 12 : (hour == 0) ? 12 : hour,
					TM_MIN(dmp.dm_time),
					hour >= 12 ? "p" : "a");
			}
			++count;
			total += dmp.dm_size;
		}
		while(DosFindNext() == SUCCESS);
	}

	/* /b does not print any statistics				*/
	if(bflag)
	{
		printf("\n\n");
	}
	else
	/* Now print the available free bytes (It's really clusters	*/
	/* translated to bytes.						*/
	{
		DosFree(0, (COUNT FAR *)&clst_size,(COUNT FAR *) &free_clst, (COUNT FAR *)&sec_size, (COUNT FAR *)&n_clst);
		printf("\n  %-10d file(s)   %-10ld bytes\n", count, total);
		printf(  "                       %-10lu bytes free\n\n",
			(ULONG)free_clst
			* (ULONG)sec_size
			* (ULONG)clst_size);
	}

	/* Change back to the current drive and directory, so that we	*/
	/* look like we just did a listing without all the gymnastics.	*/
	if((DosCd((BYTE FAR *)cudir)) != SUCCESS)
	{
		DosSetDrive(cudrvno);
		error_message(INV_DIR);
		return FALSE;
	}
	else
	{
		DosSetDrive(cudrvno);
		return TRUE;
	}
}

static COUNT chk_line(disp_line)
COUNT disp_line;
{
	BYTE line[MAX_CMDLINE];

	if(disp_line == 23)
	{
		printf("\nStrike a key when ready . . .");
		DosRead(STDIN, line, MAX_CMDLINE);
		return 0;
	}
	return ++disp_line;
}




?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品一区二区| 2020国产精品自拍| 精品国产乱子伦一区| 成人免费小视频| 国产综合久久久久久久久久久久| 成人h动漫精品| www亚洲一区| 肉色丝袜一区二区| 一本到三区不卡视频| 日本一区二区三区高清不卡| 午夜欧美电影在线观看| 91色九色蝌蚪| 国产精品欧美精品| 国产精品自产自拍| 精品久久久久久久久久久久久久久久久 | 中文字幕亚洲视频| 久久精品国产在热久久| 欧美日韩一区二区三区不卡| 亚洲天堂精品在线观看| 91成人在线观看喷潮| 久久久午夜精品理论片中文字幕| 日韩国产一区二| 欧美日韩精品电影| 亚洲激情av在线| 91丨porny丨户外露出| 国产精品欧美综合在线| 国产91在线看| 国产精品无遮挡| 国产精品66部| 国产清纯白嫩初高生在线观看91| 九九精品一区二区| 精品国产一区二区三区忘忧草| 蜜桃久久精品一区二区| 欧美一级视频精品观看| 奇米影视在线99精品| 欧美肥妇bbw| 美女网站在线免费欧美精品| 宅男噜噜噜66一区二区66| 日韩一区精品字幕| 日韩视频免费观看高清完整版在线观看| 午夜精品aaa| 欧美一级专区免费大片| 麻豆国产91在线播放| 日韩午夜激情av| 国产二区国产一区在线观看| 欧美韩日一区二区三区四区| 成人av网址在线| 亚洲欧美日韩中文字幕一区二区三区| 色偷偷88欧美精品久久久| 亚洲精品视频在线观看免费| 欧美日韩在线直播| 久久精品国产精品青草| 久久久久久久电影| 99精品视频在线免费观看| 亚洲成av人**亚洲成av**| 欧美videos大乳护士334| 国产91在线看| 五月综合激情网| 久久嫩草精品久久久久| 91在线精品一区二区| 丝袜美腿亚洲色图| 久久蜜桃香蕉精品一区二区三区| 91在线免费看| 老色鬼精品视频在线观看播放| 欧美国产视频在线| 欧美色精品天天在线观看视频| 麻豆专区一区二区三区四区五区| 国产欧美精品在线观看| 欧美日韩大陆在线| 成人h动漫精品| 另类小说综合欧美亚洲| 一区二区三区日韩欧美精品| 精品国产第一区二区三区观看体验 | 欧美最新大片在线看| 国产剧情av麻豆香蕉精品| 一区二区三区四区激情| 久久久久99精品一区| 欧美日韩在线播放一区| 成人精品在线视频观看| 麻豆91小视频| 一区二区欧美国产| 日本一区二区动态图| 日韩三级在线观看| 欧美色手机在线观看| 成人黄色片在线观看| 久色婷婷小香蕉久久| 一个色综合av| 日韩美女精品在线| 久久久久亚洲蜜桃| 日韩一卡二卡三卡| 欧美色电影在线| 91浏览器打开| 成人黄色777网| 国产乱淫av一区二区三区| 亚洲国产cao| 一区二区三区四区不卡视频| 亚洲国产成人私人影院tom | 老司机一区二区| 亚洲午夜激情av| 亚洲欧洲综合另类| 国产欧美1区2区3区| 久久精品一区二区| 精品久久久影院| 337p日本欧洲亚洲大胆精品 | 欧美三级乱人伦电影| 99久久精品国产导航| 91在线观看高清| 99这里只有精品| 99久久精品国产麻豆演员表| 不卡av在线免费观看| 99在线精品观看| 97精品国产97久久久久久久久久久久| 国产成人在线免费观看| 丁香五精品蜜臀久久久久99网站 | 久久久影视传媒| 久久综合久久综合九色| 日韩精品最新网址| 2023国产一二三区日本精品2022| 日韩三级免费观看| 久久男人中文字幕资源站| 26uuu亚洲综合色| 国产精品欧美一级免费| 亚洲欧美日韩国产一区二区三区| 综合分类小说区另类春色亚洲小说欧美 | 日韩综合一区二区| 日本成人在线网站| 激情图片小说一区| 成人午夜又粗又硬又大| 91丨porny丨中文| 欧美网站大全在线观看| 91精品国产综合久久精品图片| 91麻豆精品国产91久久久资源速度| 91精品久久久久久久99蜜桃| 亚洲精品一区二区三区四区高清| 2020国产精品久久精品美国| 国产精品天干天干在线综合| 一区二区三区在线视频观看| 日韩激情av在线| 国产成人一级电影| 在线日韩国产精品| 欧美一级夜夜爽| 国产精品毛片大码女人| 一区二区三区高清不卡| 久久精品免费观看| 成人av资源下载| 4438x成人网最大色成网站| 26uuu久久天堂性欧美| 一区二区三区中文字幕精品精品| 日韩精品电影一区亚洲| 国产一区二区三区久久悠悠色av| 不卡av电影在线播放| 欧美日韩激情一区二区| 久久精品欧美一区二区三区麻豆| 日韩理论片一区二区| 免费久久精品视频| 97久久精品人人做人人爽50路| 日韩女优电影在线观看| 亚洲日本青草视频在线怡红院| 免费在线观看视频一区| 色婷婷久久一区二区三区麻豆| 日韩亚洲欧美高清| 中文字幕亚洲不卡| 韩国三级电影一区二区| 欧美性大战xxxxx久久久| 久久久久久久一区| 视频一区二区三区中文字幕| 成人91在线观看| 欧美成人福利视频| 天天操天天综合网| 99久久久精品| 久久美女艺术照精彩视频福利播放 | 国产成人综合在线| 欧美不卡视频一区| 午夜精品福利在线| 色久优优欧美色久优优| 国产网站一区二区三区| 久久国产尿小便嘘嘘尿| 精品视频全国免费看| 亚洲色图在线看| 国产69精品久久99不卡| 精品国产乱码久久久久久久| 亚洲制服丝袜一区| 色综合天天狠狠| 国产精品国产三级国产a| 国产美女久久久久| 精品国精品国产尤物美女| 视频在线观看91| 欧美猛男男办公室激情| 亚洲精品中文在线影院| 91在线视频网址| 国产精品少妇自拍| 成人精品免费网站| 欧美激情在线观看视频免费| 国产伦精一区二区三区| 欧美精品一区二区蜜臀亚洲| 国产一区二区不卡老阿姨| 久久精品亚洲麻豆av一区二区 | 免费看黄色91| 欧美一区二区三区四区在线观看 | fc2成人免费人成在线观看播放 |