示例#1
0
文件: rrfs.py 项目: 99plus2/CS323
def checkRemote(pid,flags,type):
	Systap.setSyscallNum(pid, Systap.ST_SYS_GETPID)
	error = None
	if type == Systap.ST_SYS_OPEN:
		if flags & Systap.ST_O_WRONLY or flags & Systap.ST_O_RDWR or flags & Systap.ST_O_TRUNC or flags & Systap.ST_O_APPEND or flags & Systap.ST_O_CREAT or flags & Systap.ST_O_EXCL:
			error = Systap.ST_EROFS
	return error
示例#2
0
文件: rrfs.py 项目: 99plus2/CS323
def checkLocal(pid,path,flags,type):
	Systap.setSyscallNum(pid, Systap.ST_SYS_GETPID)
	error = flag = None
	if type == Systap.ST_SYS_OPEN:
		if flags & Systap.ST_O_RDWR:
			error = Systap.ST_EACCES
		elif flags & Systap.ST_O_EXCL and os.path.exists(path):
			error = Systap.ST_EEXIST
		elif not flags & Systap.ST_O_CREAT and not os.path.exists(path):
			error = Systap.ST_ENOENT
	if error == None:
		if flags & Systap.ST_O_APPEND:
			if flags & Systap.ST_O_TRUNC: flag = "w"
			else: flag = "a"
		elif flags & Systap.ST_O_WRONLY and (flags & Systap.ST_O_TRUNC or flags & Systap.ST_O_CREAT): flag = "w"
		elif flags & Systap.ST_O_WRONLY: flag = "w"
		else: flag = "r"
	return (error,flag)