📄 log.c
字号:
/************************************************/
/* */
/* log.c */
/* */
/************************************************/
#include <stdio.h>
#include <string.h>
#include "filsys.h"
int user_id;
//char * username;
/* 用户登陆 */
int login ()
{
char username[USERNAMESIZ], userpsw[PWDSIZ];
struct inode * inode;
struct user tempuser[USERNUM];
int i;
/* 输入用户名 */
printf( "Login: " );
for( i = 0; i < USERNAMESIZ; i++ )
{
username[i] = getchar();
if(( username[i] == '\n' ) || ( i == USERNAMESIZ - 1 ))
{
username[i] = '\0';
break;
}
}
/* 输入密码 */
printf( "Password: " );
for( i = 0; i < PWDSIZ; i++ )
{
userpsw[i] = getch();
if( userpsw[i] == '\b' )
{
if( i != 0 )
{
putch( '\b' );
putch( ' ' );
putch( '\b' );
i -= 2;
}
else
i = -1;
}
else
if(( userpsw[i] == '\r' ) || ( i == PWDSIZ - 1 ))
{
userpsw[i] = '\0';
printf( "\n" );
break;
}
else
putch( '*' );
}
inode = iget( 1 );
fseek( fd, DATASTART + BLOCKSIZ * inode->i_addr[0], SEEK_SET );
fread( tempuser, 1, sizeof( struct user ) * USERNUM, fd );
/* 检查是否存在该用户 */
for( i = 0; i < USERNUM; i++ )
{
if( strcmp( tempuser[i].u_name, username ) == 0 )
break;
}
if( i == USERNUM ) /* 没有该用户 */
{
printf( "Sorry! No such user, please check your user name.\n" );
printf( "Please try to login again!\n" );
return 0; /* 登陆失败 */
}
/* 检查密码是否正确 */
/* 密码不正确 */
if( strcmp( tempuser[i].password, userpsw ) != 0 )
{
printf( "Sorry! password incorrect.\n" );
printf( "Please try to login again!\n" );
return 0; /* 登陆失败 */
}
/* 正常登陆 */
user_id = i;
strcpy( user[user_id].u_name, tempuser[i].u_name );
// strcpy( username, tempuser[i].u_name );
user[user_id].u_uid = tempuser[i].u_uid;
user[user_id].u_gid = tempuser[i].u_gid;
user[user_id].u_default_mode = tempuser[i].u_default_mode;
printf( "Login success!\n" );
return 1;
}
int logout()
{
int i;
/*
for (i = 0; i < USERNUM; i++)
{
if (uid == user[i].u_uid)
break;
}
if (i == USERNUM)
{
printf ("\nno such file\n");
return 0;
}
*/
for (i = 0; i < NOFILE; i++)
{
if (user[user_id].u_ofile[i] != SYSOPENFILE + 1)
{
/* iput the inode free the sys_ofile and clear the user_ofile */
// sys_no = user[user_id].u_ofile[i];
// iput (sys_ofile[sys_no].f_inode);
close( i );
// sys_ofile[user[user_id].u_ofile[i]].f_count--;
// user[user_id].u_ofile[i] = SYSOPENFILE + 1;
}
}
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -