📄 install.c
字号:
/*install.c*/
#include <stdio.h>
#include <string.h>
#include "filesys.h"
install()
{
int i,j;
/*0.open the file column */
fd = fopen("filesystem", "r+b"); //~~~~~edited
if(fd==NULL)
{
printf("\nfilesys can not be loaded\n");
exit(0);
}
/* 1. read the filsys from the superblock */
fseek(fd, BLOCKSIZ, SEEK_SET);
fread(&filsys, 1, sizeof(struct filsys), fd);
if(flag)
{
fseek(fd,BLOCKTABLE,SEEK_SET);
fread(buff,1,BLOCKSIZ,fd);
}
/* 2. initialize the mode hash chain */
for(i=0; i<NHINO; i++)
{ hinode[i].i_forw=NULL;
}
/* 3. initjalize the sys-ofile */
for(i=0; i<SYSOPENFILE; i++)
{
sys_ofile[i].f_count=0;
sys_ofile[i].f_inode=NULL;
}
/*4. initialize the user */
for(i=0; i<USERNUM; i++)
{
user[i].u_uid=0;
user[i].u_gid=0;
for(j=0;j<NOFILE;j++)
{
user[i].u_ofile[j]=SYSOPENFILE+ 1;
}
}
/* 5. read the main directory to initialize the dir */
cur_path_inode=iget(1);
strcpy(cpath,"\\");
dir.size=cur_path_inode->di_size/(DIRSIZ+2);
for(i=0; i<DIRNUM; i++)
{
strcpy(dir.direct[i].d_name," ");
dir.direct[i].d_ino=0;
}
for(i= 0; i<dir.size/(BLOCKSIZ/(DIRSIZ+2));i++)
{
fseek(fd,DATASTART+BLOCKSIZ * cur_path_inode ->di_addr[i],SEEK_SET);
fread(&dir.direct[(BLOCKSIZ/(DIRSIZ+2)) * i],1, BLOCKSIZ,fd);
}
fseek(fd, DATASTART+BLOCKSIZ * cur_path_inode->di_addr[i],SEEK_SET);
fread(&dir.direct[(BLOCKSIZ)/(DIRSIZ+2) * i], 1,cur_path_inode->di_size % BLOCKSIZ, fd);
fseek(fd,DATASTART+2*BLOCKSIZ, SEEK_SET); //~~~~edited 读入密码文件
fread(pwd, 1, BLOCKSIZ,fd); //~~~~edited
printf("OK\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -