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

📄 install.c

📁 操作系统课程设计
💻 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 + -