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

📄 access.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include "lib.h"#include <string.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>#include <errno.h>#include <stdlib.h>#include "sys9.h"#include "dir.h"intaccess(const char *name, int mode){	int fd, n;	Dir *db;	struct stat st;	static char omode[] = {		0,		3,		1,		2,		0,		2,		2,		2	};	char tname[1024];	if(mode == 0){		db = _dirstat(name);		if(db == nil){			_syserrno();			return -1;		}		free(db);		return 0;	}	fd = open(name, omode[mode&7]);	if(fd >= 0){		close(fd);		return 0;	}	else if(stat(name, &st)==0 && S_ISDIR(st.st_mode)){		if(mode & (R_OK|X_OK)){			fd = open(name, O_RDONLY);			if(fd < 0)				return -1;			close(fd);		}		if(mode & W_OK){			strncpy(tname, name, sizeof(tname)-9);			strcat(tname, "/_AcChAcK");			fd = creat(tname, 0666);			if(fd < 0)				return -1;			close(fd);			_REMOVE(tname);		}		return 0;	}	return -1;}

⌨️ 快捷键说明

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