📄 block.c~
字号:
#include"structure.h"int load_block_entry(u8 *buffer, u16 block_num){ u32 block_addr; block_addr=DATA_BLOCK+block_num*512; fseek(FS,block_addr,SEEK_SET); fread(buffer,sizeof(u8),512,FS); return 1;}int update_block_entry(u8 *buffer,u16 block_num){ u32 block_addr; block_addr=DATA_BLOCK+block_num*512; fseek(FS,block_addr,SEEK_SET); fwrite(buffer,sizeof(u8),512,FS); fclose(FS); FS=fopen("FS","r+"); return 1;}int pow(int x,int y){ int i; int ret=1; for (i=0; i<y;i++) ret=ret*x; return ret;}u16 new_block(){ u16 ret; u8 i,j; u8 a,b; u8 buffer[512]; fseek(FS,BLOCK_BITMAP,SEEK_SET); fread(buffer,sizeof(u8),512,FS); b=0; for(i=0;i<512;i++){ a=b^buffer[i]; if(a!=0xff) break; } if(i==512) ret=0; else{ for(j=0;j<8;j++){ a=pow(2,(7-j)); b=a|buffer[i]; if(b!=buffer[i]) break; } buffer[i]=b; fseek(FS,BLOCK_BITMAP,SEEK_SET); fwrite(buffer,sizeof(u8),512,FS); fclose(FS); FS=fopen("FS","r+"); ret=i*8+j; } return ret;}void free_block(u16 inode_num){ u8 i,j,temp; u8 buffer[512]; fseek(FS,BLOCK_BITMAP,SEEK_SET); fread(buffer,sizeof(u8),512,FS); i=inode_num/8; j=inode_num%8; temp=pow(2,(7-j)); buffer[i]=temp^buffer[i]; fseek(FS,BLOCK_BITMAP,SEEK_SET); fwrite(buffer,sizeof(u8),512,FS); fclose(FS); FS=fopen("FS","r+");}u16 test_block(u16 block){ u8 i,j,a,b; u8 buffer[512]; fseek(FS,BLOCK_BITMAP,SEEK_SET); fread(buffer,sizeof(u8),512,FS); i=block/8; j=block%8; a=pow(2,(7-j)); b=a|buffer[i]; if(b!=buffer[i]) return 0; return 1;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -