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

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

?? tfstest.c

?? 可移到ucos上的文件系統
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* tfstest.c:
 *
 *	This file is included with the common monitor code, but it is not
 *	actually part of the monitor.  It is included here because it is
 *	an integral part of the monitor's stability... TFS test suite.
 *	It can be built on any platform the monitor supports by making this
 *	file a simple application that runs out of TFS.
 *
 * General notice:
 * This code is part of a boot-monitor package developed as a generic base
 * platform for embedded system designs.  As such, it is likely to be
 * distributed to various projects beyond the control of the original
 * author.  Please notify the author of any enhancements made or bugs found
 * so that all may benefit from the changes.  In addition, notification back
 * to the author will allow the new user to pick up changes that may have
 * been made by other users after this version of the code was distributed.
 *
 * Author:	Ed Sutter
 * email:	esutter@lucent.com		(home: lesutter@worldnet.att.net)
 * phone:	908-582-2351			(home: 908-889-5161)
 */

#include "tfs.h"

typedef unsigned long ulong;
typedef unsigned short ushort;
typedef unsigned char uchar;

#define TMPFILE "newfile"
#define TRUNCATE_SIZE	5


#define die()			errexit(__LINE__);
#define tfsdie(errno)	errtfs(__LINE__,errno);

int	verbose;
char	buffer1[512];
char	buffer2[512];

/* data1 & new_data1:
 * These arrays are used to create files and test file operations.
 * Do NOT modify these arrays, their content is used to verify files
 * that are created and modified.
 */

char *data1 =
"abcdefghij\nBBBBBBBBBB\nCCCCCCCCCC\n1234567890\nEEEEEEEEEE\n";

char *new_data1 =
"abceefghij\nBBBBBBBBBB\nCCCCCCCCCC\n1234567890\nEEEEEEEEEE\n";

/* errexit() and errtfs():
 *	Functions used (via macros above) to report error conditions detected
 *	by the tests below.
 */
void
errexit(int line)
{
	mon_printf("ERROR line %d\n",line);
	mon_appexit(-1);
}

void
errtfs(int line, int tfserrno)
{
	mon_printf("TFSERROR_%d (line %d): %s\n",(int)tfserrno,
		line,(char *)mon_tfsctrl(TFS_ERRMSG,tfserrno,0));
	mon_appexit(-1);
}

/* 
 *	getlinetest():
 *	The incoming filename is assumed to have been previously created with
 *	the data pointed to by the incoming data pointer.  
 *	Lines are read from the file via tfsgetline() and the buffer is filled
 *	with what should be the same data as is pulled in by tfsgetline().
 */
void
getlinetest(char *file, char *data)
{
	int	llen, tfd, err;

	tfd = mon_tfsopen(file,TFS_RDONLY,0);
	if (tfd < 0)
		tfsdie(tfd);

	/* Retrieve a line from the file: */
	err = mon_tfsgetline(tfd,buffer1,sizeof(buffer1));
	if (err < 0)
		tfsdie(err);

	/* Retrieve the same line from the data: */
	for(llen=0;*data;llen++,data++) {
		buffer2[llen] = *data;
		if (*data == '\n')
			break;
	}
	buffer2[llen+1] = 0;	

	/* They should match... */
	if (memcmp(buffer1,buffer2,llen))
		die();

	/* Again... */

	/* Retrieve a line from the file: */
	err = mon_tfsgetline(tfd,buffer1,sizeof(buffer1));
	if (err < 0)
		tfsdie(err);

	/* Retrieve the same line from the data: */
	for(llen=0;*data;llen++,data++) {
		buffer2[llen] = *data;
		if (*data == '\n')
			break;
	}
	buffer2[llen+1] = 0;	

	/* They should match... */
	if (memcmp(buffer1,buffer2,llen))
		die();


	/* One more line... */

	/* Retrieve a line from the file: */
	err = mon_tfsgetline(tfd,buffer1,sizeof(buffer1));
	if (err < 0)
		tfsdie(err);

	/* Retrieve the same line from the data: */
	for(llen=0;*data;llen++,data++) {
		buffer2[llen] = *data;
		if (*data == '\n')
			break;
	}
	buffer2[llen+1] = 0;	

	/* They should match... */
	if (memcmp(buffer1,buffer2,llen))
		die();

	mon_tfsclose(tfd,0);
}

/*
 *	cmp():
 *	File Compare...
 *	Use the standard TFS facilities to compare two different incoming files.
 *	Return 0 if files match, else -1.
 */
int
cmp(char *f1, char *f2)
{
	TFILE	finfo1, *tfp1;
	TFILE	finfo2, *tfp2;
	int		fd1, fd2, size, ret;
	char	*buf1, *buf2;

	/* Check sizes first: */
	tfp1 = &finfo1;
	if (mon_tfsfstat(f1,tfp1) == -1)
		die();
	tfp2 = &finfo2;
	if (mon_tfsfstat(f2,tfp2) == -1)
		die();
	if (tfp1->filsize != tfp2->filsize)
		return(-1);

	/* Copy f1 to buffer: */
	buf1 = mon_malloc(TFS_SIZE(tfp1));
	if (!buf1)
		die();
	fd1 = mon_tfsopen(f1,TFS_RDONLY,0);
	if (fd1 < 0)
		tfsdie(fd1);
	size = mon_tfsread(fd1,buf1,TFS_SIZE(tfp1));
	if (size != TFS_SIZE(tfp1))
		tfsdie(size);
	ret = mon_tfsclose(fd1,0);
	if (ret != TFS_OKAY)
		tfsdie(ret);

	/* Copy f2 to buffer: */
	buf2 = mon_malloc(TFS_SIZE(tfp2));
	if (!buf2)
		die();
	fd2 = mon_tfsopen(f2,TFS_RDONLY,0);
	if (fd2 < 0)
		tfsdie(fd2);
	size = mon_tfsread(fd2,buf2,TFS_SIZE(tfp2));
	if (size != TFS_SIZE(tfp2))
		tfsdie(size);
	ret = mon_tfsclose(fd2,0);
	if (ret != TFS_OKAY)
		tfsdie(ret);

	/* Compare the buffers: */
	if (memcmp(buf1,buf2,TFS_SIZE(tfp2)))
		ret = -1;
	else
		ret = 0;

	mon_free(buf1);
	mon_free(buf2);
	return(ret);
}

/*
 *	cp():
 *	File Copy...
 *	Use standard TFS facilities to copy one file to another.
 *	If successful, return the size of the copy; else die.
 */
int
cp(char *to, char *from)
{
	TFILE	finfo, *tfp;
	long	flags;
	int		ffd, tfd, size, ret;
	char	line[80], *buffer;

	/* Open the source file: */
	ffd = mon_tfsopen(from,TFS_RDONLY,0);
	if (ffd < 0)
		tfsdie(ffd);

	/* Retrieve stats of the source file: */
	tfp = &finfo;
	if (mon_tfsfstat(from,tfp) == -1)
		die();

	/* The buffer used to open the destination file must be as large as
	 * the source file ...
	 */
	buffer = mon_malloc(TFS_SIZE(tfp));
	if (!buffer)
		die();

	/* Open the destination file for creation with the same flags
	 * as the source file:
	 */
	tfd = mon_tfsopen(to,TFS_CREATE | finfo.flags,buffer);
	if (tfd < 0)
		tfsdie(tfd);

	/* Read the entire source file into buffer, then write the entire
	 * buffer to the destination file...
	 */
	size = mon_tfsread(ffd,buffer,TFS_SIZE(tfp));
	if (size < 0)  
		tfsdie(size);
	ret = mon_tfswrite(tfd,buffer,TFS_SIZE(tfp));
	if (ret != TFS_OKAY)
		tfsdie(ret);

	mon_tfsclose(ffd,0);
	mon_tfsclose(tfd,finfo.info);
	mon_free(buffer);
	return(TFS_SIZE(tfp));
}

/*
 *	inusetest():
 *	Open a file, then try to remove it or add a file with the same name.
 *	This should fail...
 */
int
inusetest(char *fname)
{
	int	tfd, err;

	/* Open a file, then try to run tfsadd() on it or try to remove it... */
	tfd = mon_tfsopen(fname,TFS_RDONLY,0);
	if (tfd < 0)
		tfsdie(tfd);

	err = mon_tfsunlink(fname);
	if (err != TFSERR_FILEINUSE)
		tfsdie(err);
	err = mon_tfsadd(fname,0,0,buffer1,10);
	if (err != TFSERR_FILEINUSE)
		tfsdie(err);

	mon_tfsclose(tfd,0);
	return(0);
}

/* seektest():
 *	Run some tests on tfsseek().
 *	Verify that the character in the file specified at the incoming offset
 *	is as expected.  Seek to beyond the end of file and verify error, etc...
 */
int
seektest(char *fname, int offset, char value)
{
	char	c, buf1[16], buf2[16];
	TFILE	*tfp;
	int		tfd, end, err;

	/* Open the source file: */
	tfd = mon_tfsopen(fname,TFS_RDONLY,0);
	if (tfd < 0)
		tfsdie(tfd);

	if (mon_tfsseek(tfd,offset,TFS_BEGIN) != TFS_OKAY)
		tfsdie(tfd);
	
	if (mon_tfsread(tfd,&c,1) != 1)
		tfsdie(tfd);

	if (c != value)
		die();

	tfp = mon_tfsstat(fname);
	if (!tfp)
		die();
	end = TFS_SIZE(tfp);

	/* 
	 * Seek to various limits in the file and verify proper return
	 * value...
	 */
	err = mon_tfsseek(tfd,0,TFS_BEGIN);
	if (err != TFS_OKAY)
		tfsdie(err);
	err = mon_tfsseek(tfd,end,TFS_CURRENT);
	if (err != TFS_OKAY)
		tfsdie(err);
	err = mon_tfsseek(tfd,1,TFS_CURRENT);
	if (err != TFSERR_EOF)
		tfsdie(err);
	err = mon_tfsseek(tfd,end,TFS_BEGIN);
	if (err != TFS_OKAY)
		tfsdie(err);
	err = mon_tfsseek(tfd,end+1,TFS_BEGIN);
	if (err != TFSERR_EOF)
		tfsdie(err);

	err = mon_tfsseek(tfd,0,TFS_BEGIN);
	if (err != TFS_OKAY)
		tfsdie(err);
	err = mon_tfsseek(tfd,-1,TFS_CURRENT);
	if (err != TFSERR_EOF)
		tfsdie(err);

	err = mon_tfsseek(tfd,end,TFS_BEGIN);
	if (err != TFS_OKAY)
		tfsdie(err);
	err = mon_tfsseek(tfd,-1,TFS_CURRENT);
	if (err != TFS_OKAY)
		tfsdie(err);
	err = mon_tfsseek(tfd,2,TFS_CURRENT);
	if (err != TFSERR_EOF)
		tfsdie(err);

	/* Seek to beginning, read 10, seek to beginning again read 10 again.
	 * Verify that both reads have same data.
	 */
	err = mon_tfsseek(tfd,0,TFS_BEGIN);
	if (err != TFS_OKAY)
		tfsdie(err);
	err = mon_tfsread(tfd,buf1,10);
	if (err != 10)
		tfsdie(err);
	err = mon_tfsseek(tfd,0,TFS_BEGIN);
	if (err != TFS_OKAY)
		tfsdie(err);
	err = mon_tfsread(tfd,buf2,10);
	if (err != 10)
		tfsdie(err);
	if (memcmp(buf1,buf2,10))
		die();

	/*
	 * Seek to end, then verify that read() returns EOF and tfs_eof()
	 * returns true.
	 */
	err = mon_tfsseek(tfd,end,TFS_BEGIN);
	if (err != TFS_OKAY)
		tfsdie(err);
	err = mon_tfsread(tfd,buf1,1);
	if (err != TFSERR_EOF)
		tfsdie(err);
	if (mon_tfseof(tfd) != 1)
		die();

	mon_tfsclose(tfd,0);
	return(0);
}

/* writetest():
 *  Open the specified file in APPEND (modify) mode.  Seek into the file
 *	and read 1 byte.  Increment that byte by one and then write it back
 *	to the same location from which it was read.  Then, close the file.
 *	Build a new file that is what "should" be the content of the file we
 *	just modified and compare the two files.  They better match.
 */
int
writetest(char *fname, char *newdata)
{
	TFILE *tfp;
	char c;
	int	size, tfd, err;

	/* Open the source file: */
	tfp = mon_tfsstat(fname);
	if (!tfp)
		die();
	size = TFS_SIZE(tfp);
	tfd = mon_tfsopen(fname,TFS_APPEND,buffer1);
	if (tfd < 0)
		tfsdie(tfd);
	err = mon_tfsseek(tfd,3,TFS_BEGIN);
	if (err != TFS_OKAY)
		tfsdie(err);
	err = mon_tfsread(tfd,&c,1);
	if (err != 1)
		tfsdie(err);
	c++;
	err = mon_tfsseek(tfd,-1,TFS_CURRENT);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲色图视频网站| 成人av在线资源网站| 亚洲国产你懂的| 亚洲激情一二三区| **欧美大码日韩| 综合自拍亚洲综合图不卡区| 国产精品传媒入口麻豆| 国产精品久久久久久久久免费丝袜| 国产偷国产偷亚洲高清人白洁| 久久久99免费| 国产精品免费视频观看| 亚洲天堂福利av| 亚洲综合在线第一页| 五月婷婷另类国产| 日韩**一区毛片| 狠狠色丁香久久婷婷综合_中 | 日韩影视精彩在线| 日韩av在线发布| 国产在线精品一区在线观看麻豆| 国产伦理精品不卡| 99国产精品国产精品久久| 日本道精品一区二区三区| 欧美亚一区二区| 日韩三级精品电影久久久| 久久嫩草精品久久久精品一| 日本一区二区动态图| 亚洲男人天堂av| 日韩精品福利网| 狠狠色2019综合网| 91在线看国产| 3atv一区二区三区| 久久精品日产第一区二区三区高清版 | 91在线视频免费91| 欧美乱妇一区二区三区不卡视频| 日韩欧美高清一区| 国产精品久久久久影院老司 | 99麻豆久久久国产精品免费优播| 色偷偷成人一区二区三区91| 欧美理论片在线| 久久久激情视频| 亚洲影院久久精品| 国内精品在线播放| 色婷婷av一区二区三区大白胸| 91精品婷婷国产综合久久 | 婷婷一区二区三区| 国产乱码精品一区二区三区忘忧草| 99精品1区2区| 日韩精品专区在线影院重磅| 国产精品国产三级国产专播品爱网| 亚洲福利视频一区二区| 国产精品亚洲专一区二区三区| 在线一区二区观看| 亚洲精品在线观| 亚洲一区二区影院| 国产曰批免费观看久久久| 色妹子一区二区| 精品国产第一区二区三区观看体验| 亚洲欧美激情一区二区| 麻豆传媒一区二区三区| 色噜噜狠狠色综合欧洲selulu| 日韩欧美一级二级三级 | 99综合电影在线视频| 欧美一区二区三区播放老司机| 中文字幕色av一区二区三区| 美国毛片一区二区| 在线精品视频一区二区| 国产欧美综合色| 男女视频一区二区| 欧美中文字幕一区| 亚洲欧洲日韩在线| 国内欧美视频一区二区| 91麻豆精品国产91久久久久久| 99国产精品久久久久久久久久| 91精品一区二区三区久久久久久 | 精久久久久久久久久久| 欧美亚洲国产一区二区三区| 中文文精品字幕一区二区| 免费看精品久久片| 欧美色大人视频| 亚洲美女视频一区| 成人福利视频在线看| 久久亚洲欧美国产精品乐播| 男人的j进女人的j一区| 欧美日韩视频在线第一区| 亚洲欧美另类在线| av午夜精品一区二区三区| 久久欧美中文字幕| 精品一区二区三区久久| 欧美一区二区三区免费视频| 午夜私人影院久久久久| 欧美亚洲另类激情小说| 亚洲欧美激情小说另类| 91尤物视频在线观看| 国产精品色一区二区三区| 国产精品亚洲第一区在线暖暖韩国| 欧美一区二区三区人| 日本亚洲视频在线| 91精品国产综合久久久久久| 日日欢夜夜爽一区| 欧美男生操女生| 亚洲成人自拍偷拍| 欧美精品少妇一区二区三区| 亚洲一级在线观看| 欧美日韩黄视频| 偷拍自拍另类欧美| 91精品国产91久久久久久最新毛片| 亚洲国产精品久久久久婷婷884| 在线观看国产日韩| 亚洲成人资源网| 51午夜精品国产| 久久99国产精品免费| 亚洲精品一区二区三区福利| 国产一区二区精品久久99| 久久久99免费| 91首页免费视频| 一区二区欧美精品| 91.麻豆视频| 蜜桃久久av一区| 国产亚洲欧美色| 波多野结衣欧美| 一区二区三区在线观看动漫| 欧美日韩综合色| 九九在线精品视频| 国产精品少妇自拍| 欧洲精品一区二区| 日本美女一区二区三区| 久久久久久夜精品精品免费| 99久久精品一区二区| 亚洲第一久久影院| 亚洲精品一线二线三线无人区| 国产91露脸合集magnet| 亚洲乱码中文字幕| 欧美一级一级性生活免费录像| 国产精品资源网| 亚洲精品第一国产综合野| 宅男在线国产精品| 成人综合婷婷国产精品久久 | 欧美国产成人在线| 一本大道av一区二区在线播放| 亚洲成人av免费| 久久久噜噜噜久久人人看| 色婷婷综合久久久中文字幕| 日韩国产精品大片| 国产精品乱码人人做人人爱| 欧美三级午夜理伦三级中视频| 精品一区二区日韩| 亚洲女人****多毛耸耸8| 欧美一区二区播放| 91香蕉视频黄| 激情综合色综合久久| 亚洲另类一区二区| 精品黑人一区二区三区久久| 一本大道av一区二区在线播放 | 色综合一区二区三区| 人人超碰91尤物精品国产| 国产精品色哟哟网站| 日韩欧美一卡二卡| 色国产精品一区在线观看| 精品一区二区免费视频| 亚洲在线一区二区三区| 欧美激情一二三区| 欧美电影一区二区| proumb性欧美在线观看| 久久精品久久99精品久久| 亚洲美女一区二区三区| 久久精品视频在线免费观看| 欧美日韩免费一区二区三区 | 91精品免费在线| 91无套直看片红桃| 韩国v欧美v亚洲v日本v| 亚洲高清视频的网址| 国产精品久久久久久久午夜片| 日韩欧美一级片| 欧美性色黄大片| 91香蕉视频污在线| 久久精品视频免费| 日韩一区二区免费在线电影| 欧美在线观看一区| av在线不卡观看免费观看| 国产综合一区二区| 免费成人在线播放| 亚洲成人免费av| 尤物视频一区二区| 最新日韩av在线| 国产欧美一区二区精品忘忧草| 欧美一区二区三区视频免费播放| 色妞www精品视频| 91一区二区三区在线观看| 国产精品88888| 国产一区二区调教| 精品一区二区日韩| 久久99热99| 美女mm1313爽爽久久久蜜臀| 五月天精品一区二区三区| 洋洋成人永久网站入口| 亚洲精品乱码久久久久久久久 | 亚洲美女偷拍久久| 18欧美乱大交hd1984| 国产精品午夜久久| 国产欧美日韩一区二区三区在线观看|