📄 file.c~
字号:
#define MAIN#include "structure.h"//function create()u16 create(u8 *path,u8 *name){ u16 block,parent_inode_num,inode_num,offset; struct ext2_inode parent_inode; tag='1'; if((strlen(path))){ if(!(parent_inode_num=get_dir(path))) { printf("invalid pathname!\n"); return 0; } } else parent_inode_num=current_dir; if(!(strlen(name))){ printf("miss parameter!\n"); return 0; } load_inode_entry(&parent_inode,parent_inode_num); if((block=search_name(&parent_inode,name,&offset))) { printf("file already exist\n"); return 0; } if(!(inode_num=create_dir_entry(&parent_inode,name))){ printf("cannot create file\n"); return 0; } return 1;}//function delete()u16 delete(u8 *path,u8 *name){ u16 oldi,block,parent_inode_num,offset; struct ext2_inode parent_inode,inode; u8 buffer[512]; if((strlen(path))){ if(!(parent_inode_num=get_dir(path))) { printf("invalid pathname!\n"); return 0; } } else parent_inode_num=current_dir; if(!(strlen(name))){ printf("miss parameter\n"); return 0; } load_inode_entry(&parent_inode,parent_inode_num); if(!(block=search_name(&parent_inode,name,&offset))){ printf("The file is not existing!\n"); return 0; } load_block_entry(buffer,block); oldi=buffer[offset]+buffer[offset+1]*0x100; load_inode_entry(&inode,oldi); free_blocks(&inode); free_inode(oldi); buffer[offset]=buffer[offset+1]=0; update_block_entry(buffer,block); return 1;}//function open()u16* open(u8 *path,u8 *name){ u16 block,i; u16 inode_num,parent_inode_num; u16 offset; u8 buffer[512]; struct ext2_inode parent_inode; if((strlen(path))){ if(!(parent_inode_num=get_dir(path))) { printf("wrong pathname!\n"); return 0; } } else parent_inode_num=current_dir; if(!(strlen(name))){ printf("miss parameter\n"); return 0; } load_inode_entry(&parent_inode,parent_inode_num); if(!(block=search_name(&parent_inode,name,&offset))) { printf("cannot open file\n"); return 0; } load_block_entry(buffer,block); inode_num=buffer[offset]+buffer[offset+1]; for(i=0;i<MAX_OPEN_FILE;i++){ if(file_open_table[i]==0||file_open_table[i]==inode_num){ file_open_table[i]=inode_num; return file_open_table+i*sizeof(u16); } } return NULL;}//function close()void close(u16 *fd){ *fd=0; }//function read()u16 read(u16 *fd){ u16 inode_num; struct ext2_inode inode; if(!fd) { printf("You must open file before operation!\n"); return 0; } inode_num=*fd; load_inode_entry(&inode,inode_num); print(&inode); return 1;}//function write()u16 write(u16 *fd,u8 *string,u8 *string2 ){ u16 inode_num; u16 start=0; strcat(string,string2); u16 end=strlen(string); struct ext2_inode inode; if(!fd) { printf("You must open file before operation!\n"); return 0; } inode_num=*fd; load_inode_entry(&inode,inode_num); free_blocks(&inode); store(&inode,string,&start,&end); update_inode_entry(&inode,inode_num); return 1;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -