📄 filecontent.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 + -