📄 fs.c
字号:
#include "fs.h"
static s_int logged=0;
struct passwd g_user;
/*用户登陆函数*/
s_int login()
{
char uname[30];
file *fp;
s_int gc,uc;
//clrscr();
printf("Welcome to UNIX OS!\n");
printf("user login:"); scanf("%s",uname);
while((fp=open("/passwd",FREAD|FWRITE))==NULL)
{
fp=create("/passwd");
if(fp==NULL)panic("login: passwd file create error.\n");
g_user.gid=0; /* group count */
g_user.uid=0; /* user count */
write(fp,sizeof(struct passwd),&g_user);
close(fp);
}
read(fp, sizeof(struct passwd), &g_user);
gc=g_user.gid;
uc=g_user.uid;
while(read(fp, sizeof(struct passwd), &g_user)==0)
{
if(!strcmp(uname,g_user.name))
{
logged=1;
break;
}
}
if(logged!=1)
{
strcpy(g_user.name,uname);
g_user.gid=gc+1;
g_user.uid=uc+1;
write(fp,sizeof(struct passwd),&g_user);
seek(fp,0,SEEK_SET);
write(fp,sizeof(struct passwd),&g_user);
}
close(fp);
chdir("/"); /* enter root directory */
printf("User [%s] logged.\n",uname);
return 0;
}
/*退出*/
s_int logout()
{
printf("Bye!\n");
logged=0;
return 0;
}
/*文件系统格式化函数*/
s_int format()
{
hd_format();
return 0;
}
/*安装文件系统函数*/
s_int install()
{
printf("Initializing...\n");
hd_init();
printf("System Loaded.\n");
/*system("pause");*/
return 0;
}
/*退出文件系统函数*/
s_int halt()
{
if(logged)logout();
iwrite_back();
bwrite_back();
hd_leave();
printf("System halt.\n");
/*#ifdef DEBUG_MODE
system("pause");
#endif*/
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -