⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filecontent.c

📁 这是个重量级的东西
💻 C
字号:
/*
	filecontent.c copyright by robin @2004.7.4
*/

#include "..\typedef\type.h"
#include "..\file\file.h"
#include "..\txlib\txlib.h"
#include "..\vmm\vmm.h"

#include "txstdio.h"
#include "memory.h"
#include "string.h"

#define printf kprintf

extern char strHelp[];
int DumpMemoryA(void * buffer,DWORD dwLeng);
#define printf kprintf

void FileContentUsage()
{
	printf("Usage : fc [/filename],[/o:offset],[/l:length],[/help]\n");
}


int FileContent(int argc,char ** argv)
{
	int i = 0;

	// 文件缓冲
	char * buf = 0;

	DWORD dwReadCnt = 0;
	DWORD dwLeng	= 0;
	DWORD dwOffset	= 0;
	DWORD dwHelpFlag= 0;
	FILE * f = 0;
	char * file = 0;
	
	for( i = 1 ; i < argc ; i++)
	{
		if(argv[i][0] == '-' || argv[i][0] == '/')
		{
			if(argv[i][1] == 'o' || argv[i][1] == 'O')
			{
				if(IsDigital(&(argv[i][3]))){
					dwOffset = atoi10(&(argv[i][3]));
				}
				else if(IsHex(&(argv[i][3]))){
					dwOffset = atoi16(&(argv[i][3]));
				}
				else{
					printf("file offset invalid,please check it out!");
					return 0;
				}
			}
			else if(argv[i][1] == 'l' || argv[i][1] == 'L')
			{
				if(IsDigital(&(argv[i][3]))){
					dwLeng = atoi10(&(argv[i][3]));
				}
				else if(IsHex(&(argv[i][3]))){
					dwLeng = atoi16(&(argv[i][3]));
				}
				else{
					printf("fc leng invalid,please check it out!");
					return 0;
				}
			}
			else if(argv[i][1] == 'h' || argv[i][1] == 'H')
			{
				upcase(argv[i]);
				if(strcmp(&(argv[i][1]),strHelp) == 0) dwHelpFlag = 1;
				else {
					printf("some fc parameter invalid,check it out!");
					return 0;
				}
			}
		}
		else{
			file = argv[i];
		}
	}

	if(argc == 1){
		FileContentUsage();
		return 0;
	}
	printf("file : %s \noffset : %d\nlength : %d",file,dwOffset,dwLeng);
	//if(dwLeng > 512) dwLeng = 512;

	
	f = FileOpen(file,0);
	if(f == 0){
		printf("can not open %s!\n",file);
		return 0;
	}
	buf = kmalloc(dwLeng);
	FileSeek(f,dwOffset,3);
	dwReadCnt = FileRead(f,buf,dwLeng);
	dwLeng = 512;

	if(dwReadCnt < 512)
		DumpMemoryA(buf,dwReadCnt);
	else
		DumpMemoryA(buf + (dwReadCnt - 512),512);
	

	kfree(buf);
	FileClose(f);
	printf("read byte : %d\n",dwReadCnt);
	return 1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -