亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? namei.c

?? elinux jffs初始版本 具體了解JFFS的文件系統!
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* *  linux/fs/affs/namei.c * *  (c) 1996  Hans-Joachim Widmaier - Rewritten * *  (C) 1993  Ray Burr - Modified for Amiga FFS filesystem. * *  (C) 1991  Linus Torvalds - minix filesystem */#include <linux/sched.h>#include <linux/affs_fs.h>#include <linux/kernel.h>#include <linux/string.h>#include <linux/stat.h>#include <linux/fcntl.h>#include <linux/locks.h>#include <linux/amigaffs.h>#include <asm/segment.h>#include <linux/errno.h>/* Simple toupper() for DOS\1 */static inline unsigned intaffs_toupper(unsigned int ch){	return ch >= 'a' && ch <= 'z' ? ch -= ('a' - 'A') : ch;}/* International toupper() for DOS\3 */static inline unsigned intaffs_intl_toupper(unsigned int ch){	return (ch >= 'a' && ch <= 'z') || (ch >= 0xE0		&& ch <= 0xFE && ch != 0xF7) ?		ch - ('a' - 'A') : ch;}/* * NOTE! unlike strncmp, affs_match returns 1 for success, 0 for failure. */static intaffs_match(const char *name, int len, const char *compare, int dlen, int intl){	if (!compare)		return 0;	if (len > 30)		len = 30;	if (dlen > 30)		dlen = 30;	/* "" means "." ---> so paths like "/usr/lib//libc.a" work */	if (!len && dlen == 1 && compare[0] == '.')		return 1;	if (dlen != len)		return 0;	if (intl) {		while (dlen--) {			if (affs_intl_toupper(*name & 0xFF) != affs_intl_toupper(*compare & 0xFF))				return 0;			name++;			compare++;		}	} else {		while (dlen--) {			if (affs_toupper(*name & 0xFF) != affs_toupper(*compare & 0xFF))				return 0;			name++;			compare++;		}	}	return 1;}intaffs_hash_name(const char *name, int len, int intl, int hashsize){	unsigned int i, x;	if (len > 30)		len = 30;	x = len;	for (i = 0; i < len; i++)		if (intl)			x = (x * 13 + affs_intl_toupper(name[i] & 0xFF)) & 0x7ff;		else			x = (x * 13 + affs_toupper(name[i] & 0xFF)) & 0x7ff;	return x % hashsize;}static struct buffer_head *affs_find_entry(struct inode *dir, const char *name, int namelen,		unsigned long *ino){	struct buffer_head *bh;	int	 intl;	int	 key;	pr_debug("AFFS: find_entry(%.*s)=\n",namelen,name);	intl = AFFS_I2FSTYPE(dir);	bh   = affs_bread(dir->i_dev,dir->i_ino,AFFS_I2BSIZE(dir));	if (!bh)		return NULL;	if (affs_match(name,namelen,".",1,intl)) {		*ino = dir->i_ino;		return bh;	}	if (affs_match(name,namelen,"..",2,intl)) {		*ino = affs_parent_ino(dir);		return bh;	}	key = AFFS_GET_HASHENTRY(bh->b_data,affs_hash_name(name,namelen,intl,AFFS_I2HSIZE(dir)));	for (;;) {		char *cname;		int cnamelen;		affs_brelse(bh);		if (key == 0) {			bh = NULL;			break;		}		bh = affs_bread(dir->i_dev,key,AFFS_I2BSIZE(dir));		if (!bh)			break;		cnamelen = affs_get_file_name(AFFS_I2BSIZE(dir),bh->b_data,&cname);		if (affs_match(name,namelen,cname,cnamelen,intl))			break;		key = htonl(FILE_END(bh->b_data,dir)->hash_chain);	}	*ino = key;	return bh;}intaffs_lookup(struct inode *dir, const char *name, int len, struct inode **result){	int res;	unsigned long ino;	struct buffer_head *bh;	pr_debug("AFFS: lookup(%.*s)\n",len,name);	*result = NULL;	if (!dir)		return -ENOENT;	res = -ENOENT;	if (S_ISDIR(dir->i_mode)) {		if ((bh = affs_find_entry(dir,name,len,&ino))) {			if (FILE_END(bh->b_data,dir)->original)				ino = htonl(FILE_END(bh->b_data,dir)->original);			affs_brelse(bh);			if ((*result = iget(dir->i_sb,ino))) 				res = 0;			else				res = -EACCES;		}	}	iput(dir);	return res;}intaffs_unlink(struct inode *dir, const char *name, int len){	int			 retval;	struct buffer_head	*bh;	unsigned long		 ino;	struct inode		*inode;	pr_debug("AFFS: unlink(dir=%ld,\"%.*s\")\n",dir->i_ino,len,name);	bh      = NULL;	inode   = NULL;	retval  = -ENOENT;	if (!(bh = affs_find_entry(dir,name,len,&ino))) {		goto unlink_done;	}	if (!(inode = iget(dir->i_sb,ino))) {		goto unlink_done;	}	if (S_ISDIR(inode->i_mode)) {		retval = -EPERM;		goto unlink_done;	}	if ((retval = affs_fix_hash_pred(dir,affs_hash_name(name,len,AFFS_I2FSTYPE(dir),					 AFFS_I2HSIZE(dir)) + 6,ino,					 FILE_END(bh->b_data,dir)->hash_chain)))		goto unlink_done;	if ((retval = affs_fixup(bh,inode)))		goto unlink_done;	inode->i_nlink=0;	inode->i_dirt=1;	inode->i_ctime = dir->i_ctime = dir->i_mtime = CURRENT_TIME;	dir->i_version = ++event;	dir->i_dirt=1;unlink_done:	affs_brelse(bh);	iput(inode);	iput(dir);	return retval;}intaffs_create(struct inode *dir, const char *name, int len, int mode, struct inode **result){	struct inode	*inode;	int		 error;		pr_debug("AFFS: create(%lu,\"%.*s\",0%o)\n",dir->i_ino,len,name,mode);	*result = NULL;	if (!dir || !dir->i_sb) {		iput(dir);		return -EINVAL;	}	inode = affs_new_inode(dir);	if (!inode) {		iput (dir);		return -ENOSPC;	}	inode->i_mode = mode;	if (dir->i_sb->u.affs_sb.s_flags & SF_OFS)		inode->i_op = &affs_file_inode_operations_ofs;	else		inode->i_op = &affs_file_inode_operations;	error = affs_add_entry(dir,NULL,inode,name,len,ST_FILE);	if (error) {		iput(dir);		inode->i_nlink = 0;		inode->i_dirt  = 1;		iput(inode);		return -ENOSPC;	}	inode->u.affs_i.i_protect = mode_to_prot(inode->i_mode);	iput(dir);	*result = inode;	return 0;}intaffs_mkdir(struct inode *dir, const char *name, int len, int mode){	struct inode		*inode;	struct buffer_head	*bh;	unsigned long		 i;	int			 error;		pr_debug("AFFS: mkdir(%lu,\"%.*s\",0%o)\n",dir->i_ino,len,name,mode);	if (!dir || !dir->i_sb) {		iput(dir);		return -EINVAL;	}	bh = affs_find_entry(dir,name,len,&i);	if (bh) {		affs_brelse(bh);		iput(dir);		return -EEXIST;	}	inode = affs_new_inode(dir);	if (!inode) {		iput (dir);		return -ENOSPC;	}	inode->i_op = &affs_dir_inode_operations;	error       = affs_add_entry(dir,NULL,inode,name,len,ST_USERDIR);	if (error) {		iput(dir);		inode->i_nlink = 0;		inode->i_dirt  = 1;		iput(inode);		return error;	}	inode->i_mode = S_IFDIR | (mode & 0777 & ~current->fs->umask);	inode->u.affs_i.i_protect = mode_to_prot(inode->i_mode);	iput(dir);	iput(inode);	return 0;}static intempty_dir(struct buffer_head *bh, int hashsize){	while (--hashsize >= 0) {		if (((struct dir_front *)bh->b_data)->hashtable[hashsize])			return 0;	}	return 1;}intaffs_rmdir(struct inode *dir, const char *name, int len){	int			 retval;	unsigned long		 ino;	struct inode		*inode;	struct buffer_head	*bh;	pr_debug("AFFS: rmdir(dir=%lu,\"%.*s\")\n",dir->i_ino,len,name);	inode  = NULL;	retval = -ENOENT;	if (!(bh = affs_find_entry(dir,name,len,&ino))) {		goto rmdir_done;	}	if (!(inode = iget(dir->i_sb,ino))) {		goto rmdir_done;	}	retval = -EPERM;        if (!fsuser() && current->fsuid != inode->i_uid &&            current->fsuid != dir->i_uid)		goto rmdir_done;	if (inode->i_dev != dir->i_dev)		goto rmdir_done;	if (inode == dir)	/* we may not delete ".", but "../dir" is ok */		goto rmdir_done;	if (!S_ISDIR(inode->i_mode)) {		retval = -ENOTDIR;		goto rmdir_done;	}	if (!empty_dir(bh,AFFS_I2HSIZE(inode))) {		retval = -ENOTEMPTY;		goto rmdir_done;	}	if (inode->i_count > 1) {		retval = -EBUSY;		goto rmdir_done;	}	if ((retval = affs_fix_hash_pred(dir,affs_hash_name(name,len,AFFS_I2FSTYPE(dir),					 AFFS_I2HSIZE(dir)) + 6,ino,					 FILE_END(bh->b_data,dir)->hash_chain)))		goto rmdir_done;	if ((retval = affs_fixup(bh,inode)))		goto rmdir_done;	inode->i_nlink=0;	inode->i_dirt=1;	inode->i_ctime = dir->i_ctime = dir->i_mtime = CURRENT_TIME;	dir->i_version = ++event;	dir->i_dirt=1;rmdir_done:	iput(dir);	iput(inode);	affs_brelse(bh);	return retval;}intaffs_symlink(struct inode *dir, const char *name, int len, const char *symname)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美大尺度电影在线| 99久久精品国产毛片| 风间由美性色一区二区三区| 91蝌蚪porny| 欧美精品三级在线观看| 久久久久国产精品厨房| 99国产精品久久| 欧美日韩国产系列| 久久精品在线免费观看| 一区二区三区蜜桃网| 看片的网站亚洲| www.日韩大片| 日韩精品中文字幕一区| 亚洲日本欧美天堂| 老司机免费视频一区二区三区| 91亚洲国产成人精品一区二三| 欧美一区二区视频在线观看2022| 国产精品美女久久久久aⅴ国产馆| 亚洲国产aⅴ天堂久久| 国产福利一区二区三区| 欧美巨大另类极品videosbest| 国产偷v国产偷v亚洲高清| 午夜精品视频一区| 成人动漫一区二区在线| 日韩欧美在线网站| 亚洲一区视频在线| eeuss鲁片一区二区三区| 日韩视频免费观看高清完整版| 亚洲精品免费在线| 国产高清视频一区| 91精品国产91综合久久蜜臀| 一区二区三区在线视频免费| 国产黄色91视频| 欧美一级欧美一级在线播放| 亚洲综合色网站| 波波电影院一区二区三区| 日韩欧美在线影院| 午夜a成v人精品| 99久久99久久免费精品蜜臀| 久久综合中文字幕| 免费不卡在线视频| 欧美丝袜自拍制服另类| 最新国产成人在线观看| 国产高清精品在线| 欧美精品一区二区三区视频| 香蕉成人啪国产精品视频综合网| 91麻豆精品秘密| 国产精品三级av| 国产一区在线不卡| 精品国产百合女同互慰| 麻豆精品一区二区| 欧美精品高清视频| 亚洲电影一级片| 欧美做爰猛烈大尺度电影无法无天| 国产精品视频在线看| 国产精品夜夜嗨| 久久免费偷拍视频| 美女一区二区在线观看| 欧美一区二区三区日韩视频| 婷婷丁香激情综合| 777色狠狠一区二区三区| 亚洲一区二区精品视频| 欧美三级蜜桃2在线观看| 亚洲国产日韩a在线播放性色| 欧洲精品中文字幕| 亚洲成人自拍网| 91精品在线麻豆| 日本美女一区二区| 日韩欧美国产wwwww| 久久av资源网| 久久久99精品久久| 粉嫩av一区二区三区粉嫩| 国产精品免费观看视频| 99久久精品国产网站| 亚洲欧美激情一区二区| 欧洲一区在线电影| 香蕉加勒比综合久久| 日韩一级大片在线| 狠狠色伊人亚洲综合成人| 久久综合九色综合欧美就去吻| 国产精品一区免费视频| 欧美国产一区视频在线观看| 91亚洲精华国产精华精华液| 亚洲最新视频在线播放| 538在线一区二区精品国产| 九一久久久久久| 国产精品三级在线观看| 色综合婷婷久久| 亚洲v中文字幕| 精品国产污污免费网站入口 | 91丨porny丨户外露出| 亚洲欧美在线高清| 日本高清不卡视频| 日本不卡高清视频| 久久亚区不卡日本| 99久久99久久久精品齐齐| 亚洲综合图片区| 精品免费99久久| 成人不卡免费av| 亚洲午夜免费福利视频| 欧美成人伊人久久综合网| 成人禁用看黄a在线| 一区二区不卡在线播放 | 麻豆成人av在线| 久久精品一区二区三区四区| 91视频你懂的| 日韩av不卡一区二区| 欧美高清一级片在线观看| 色综合久久99| 麻豆精品新av中文字幕| 成人欧美一区二区三区在线播放| 欧美日韩二区三区| 国产乱对白刺激视频不卡| 亚洲一区在线看| 久久综合久色欧美综合狠狠| 在线看一区二区| 国产一区二区女| 亚洲一区日韩精品中文字幕| 精品欧美一区二区在线观看| 97精品久久久午夜一区二区三区| 午夜精品福利一区二区蜜股av| 国产免费成人在线视频| 欧美日韩国产另类一区| 国产寡妇亲子伦一区二区| 亚洲午夜久久久久久久久电影院| 久久综合九色综合97婷婷| 欧美视频一区在线| 成人一区二区三区中文字幕| 日韩精品五月天| 1024亚洲合集| 久久女同性恋中文字幕| 欧美色电影在线| 99re8在线精品视频免费播放| 奇米亚洲午夜久久精品| 一区二区三区小说| 国产日产欧美精品一区二区三区| 欧美剧情片在线观看| 色综合天天天天做夜夜夜夜做| 久久99最新地址| 亚洲成人av在线电影| 国产精品久久久久精k8| 久久综合九色综合97婷婷女人| 欧美日韩成人综合天天影院| 99久久精品国产麻豆演员表| 黑人巨大精品欧美黑白配亚洲| 亚洲午夜精品17c| ...xxx性欧美| 欧美国产精品中文字幕| 精品三级av在线| 91精品在线观看入口| 欧美亚男人的天堂| 91麻豆精品一区二区三区| 懂色中文一区二区在线播放| 精久久久久久久久久久| 青青草成人在线观看| 亚洲成人av电影在线| 一区二区三区成人| 亚洲色图欧美激情| 国产精品久久看| 国产视频一区在线播放| 精品国产乱码久久| 欧美一级二级三级乱码| 欧美久久婷婷综合色| 欧美视频中文字幕| 欧美在线播放高清精品| 日本道精品一区二区三区| 91在线你懂得| 色综合久久久网| 91天堂素人约啪| 99久久精品免费精品国产| 成人黄色在线看| 成人黄色免费短视频| 成人午夜视频在线| av资源站一区| 99麻豆久久久国产精品免费| av午夜精品一区二区三区| 成人av综合一区| aaa国产一区| 91丨porny丨蝌蚪视频| 色综合久久天天综合网| 日本道精品一区二区三区 | 亚洲午夜久久久久中文字幕久| 一区二区欧美国产| 亚洲愉拍自拍另类高清精品| 一区二区三区 在线观看视频| 亚洲一区精品在线| 婷婷激情综合网| 另类欧美日韩国产在线| 国产剧情一区在线| 不卡视频一二三| 色屁屁一区二区| 欧美日韩亚洲综合一区二区三区| 欧美精品日韩精品| 欧美大白屁股肥臀xxxxxx| 久久精品日产第一区二区三区高清版 | 亚洲色图欧美偷拍| 亚洲一区二区中文在线| 日韩精品福利网| 国产一区二区三区四区五区入口| 国产91丝袜在线播放0|