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

📄 main.c

📁 设计并实现一个多用户多级目录结构的文件系统
💻 C
字号:
/************************************************/
/*												*/
/*					main.c						*/
/*												*/
/************************************************/

#include <stdio.h>
#include "filsys.h"

struct hinode hinode[NHINO];				/* 查找内存i节点的hash表 */
struct filsys filsys;						/* 超级块数据结构 */
struct inode * cur_path_inode;
struct user user[USERNUM];		
struct file sys_ofile[SYSOPENFILE];	
struct direct cur_direct[NOFILE];			/* 路径 */	
unsigned short cur_dir_id;					/* 当前目录指针 */
char cur_path_name[DIRSIZ];
FILE *fd;

main()
{
	char reg_or_log;				int ff;char buf[50],buf2[50],buf3[50];
	
	cur_dir_id = 0;
	printf( "\n-----Welcome to this system!!!-----\n" );
	printf( "initializing...\n" );
	fd = fopen( "filesystem.dat", "r+b" );

	if( fd != NULL )						/* 文件已经存在,不用格式化 */
	{
		printf( "installing...\n" );
		init();								/* 读取磁盘数据 */
	}
	else									/* 文件已经存在,要进行格式化 */
	{
		if( format() == 0 )					/* 格式化 */
			return;							/* 格式化不成功 */
		printf( "installing...\n" );
		init();								/* 读取磁盘数据 */
	}

AGAIN:
	printf( "\nDo you want to register or login? (R/L)  " );
	while( 1 )
	{
		reg_or_log = getch();
		/* 注册新用户 */
		if(( reg_or_log == 'r' ) || ( reg_or_log == 'R' ))
		{
			printf( "%c\n", reg_or_log );
			reg();	
			goto AGAIN;
		}
		/* 登陆已有用户 */
		else if(( reg_or_log == 'l' ) || ( reg_or_log == 'L' ))
		{
			printf( "%c\n", reg_or_log );
			if( login() == 0)					/* 登陆不成功 */
				goto AGAIN;
			break;
		}
	}
	strcpy( cur_direct[cur_dir_id].d_name, "/" );
	cur_direct[cur_dir_id].d_ino = ROOTDIR;

	/*strcpy( buf, "My name is Deng Guanhe, What is your name?" );
	if(( ff = creat( "good", 3 )) == -1 )
		printf( "Can't creat file\n" );
	else
	{
		write( ff, buf, sizeof( buf ));
		close( ff );
		if( ff = open( "good", O_RDONLY ) == -1 )
			printf( "Can't open file\n" );
		else
		{
			read( ff, buf2, sizeof( buf ));
			close( ff );
		}
	}
	if(( ff = open( "good", O_RDONLY )) == -1 )
			printf( "Can't open file\n" );
		else
		{
			read( ff, buf3, sizeof( buf ));
			close( ff );
		}*/


	strcpy( cur_path_name, "/" );
	while(1)
	{
		if( cmdexp() == 1 )
			break;
	}

	halt();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -