access.c

来自「基于UNIX6的文件系统模拟程序」· C语言 代码 · 共 44 行

C
44
字号
#include <stdio.h>#include "filesys.h"unsigned int access(user_id,inode,mode)unsigned int user_id;struct inode *inode;unsigned short mode;{	switch(mode%8)	{	case READ:		if(inode->di_mode&ODIREAD) return 1;			if((inode->di_mode & GDIREAD)&&			(user[user_id].u_gid == inode->di_gid))  return 1;		if((inode->di_mode&UDIREAD)&&			(user[user_id].u_uid == inode->di_uid))  return 1;		return 0;	case WRITE:		if(inode->di_mode&ODIWRITE) return 1;			if((inode->di_mode & GDIWRITE)&&			(user[user_id].u_gid == inode->di_gid))  return 1;		if((inode->di_mode&UDIWRITE)&&			(user[user_id].u_uid == inode->di_uid))  return 1;		return 0;	case EXICUTE:		if(inode->di_mode&ODIEXICUTE) return 1;			if((inode->di_mode & GDIEXICUTE)&&			(user[user_id].u_gid == inode->di_gid))  return 1;		if((inode->di_mode&UDIEXICUTE)&&			(user[user_id].u_uid == inode->di_uid))  return 1;		return 0;
	case FAPPEND:
		if(inode->di_mode&ODIEXICUTE) return 1;	
		if((inode->di_mode & GDIEXICUTE)&&
			(user[user_id].u_gid == inode->di_gid))  return 1;
		if((inode->di_mode&UDIEXICUTE)&&
			(user[user_id].u_uid == inode->di_uid))  return 1;
		return 0;	default:		return 0;	}}

⌨️ 快捷键说明

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