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

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

?? namei.c

?? 適合linux的新手使用,很經典,簡單,方便.
?? C
?? 第 1 頁 / 共 2 頁
字號:
	}	inr = de->inode;	dev = dir->i_dev;	brelse(bh);	iput(dir);	if (flag & O_EXCL)		return -EEXIST;	if (!(inode=iget(dev,inr)))		return -EACCES;	if ((S_ISDIR(inode->i_mode) && (flag & O_ACCMODE)) ||	    !permission(inode,ACC_MODE(flag))) {		iput(inode);		return -EPERM;	}	inode->i_atime = CURRENT_TIME;	if (flag & O_TRUNC)		truncate(inode);	*res_inode = inode;	return 0;}int sys_mknod(const char * filename, int mode, int dev){	const char * basename;	int namelen;	struct m_inode * dir, * inode;	struct buffer_head * bh;	struct dir_entry * de;		if (!suser())		return -EPERM;	if (!(dir = dir_namei(filename,&namelen,&basename)))		return -ENOENT;	if (!namelen) {		iput(dir);		return -ENOENT;	}	if (!permission(dir,MAY_WRITE)) {		iput(dir);		return -EPERM;	}	bh = find_entry(&dir,basename,namelen,&de);	if (bh) {		brelse(bh);		iput(dir);		return -EEXIST;	}	inode = new_inode(dir->i_dev);	if (!inode) {		iput(dir);		return -ENOSPC;	}	inode->i_mode = mode;	if (S_ISBLK(mode) || S_ISCHR(mode))		inode->i_zone[0] = dev;	inode->i_mtime = inode->i_atime = CURRENT_TIME;	inode->i_dirt = 1;	bh = add_entry(dir,basename,namelen,&de);	if (!bh) {		iput(dir);		inode->i_nlinks=0;		iput(inode);		return -ENOSPC;	}	de->inode = inode->i_num;	bh->b_dirt = 1;	iput(dir);	iput(inode);	brelse(bh);	return 0;}int sys_mkdir(const char * pathname, int mode){	const char * basename;	int namelen;	struct m_inode * dir, * inode;	struct buffer_head * bh, *dir_block;	struct dir_entry * de;	if (!suser())		return -EPERM;	if (!(dir = dir_namei(pathname,&namelen,&basename)))		return -ENOENT;	if (!namelen) {		iput(dir);		return -ENOENT;	}	if (!permission(dir,MAY_WRITE)) {		iput(dir);		return -EPERM;	}	bh = find_entry(&dir,basename,namelen,&de);	if (bh) {		brelse(bh);		iput(dir);		return -EEXIST;	}	inode = new_inode(dir->i_dev);	if (!inode) {		iput(dir);		return -ENOSPC;	}	inode->i_size = 32;	inode->i_dirt = 1;	inode->i_mtime = inode->i_atime = CURRENT_TIME;	if (!(inode->i_zone[0]=new_block(inode->i_dev))) {		iput(dir);		inode->i_nlinks--;		iput(inode);		return -ENOSPC;	}	inode->i_dirt = 1;	if (!(dir_block=bread(inode->i_dev,inode->i_zone[0]))) {		iput(dir);		free_block(inode->i_dev,inode->i_zone[0]);		inode->i_nlinks--;		iput(inode);		return -ERROR;	}	de = (struct dir_entry *) dir_block->b_data;	de->inode=inode->i_num;	strcpy(de->name,".");	de++;	de->inode = dir->i_num;	strcpy(de->name,"..");	inode->i_nlinks = 2;	dir_block->b_dirt = 1;	brelse(dir_block);	inode->i_mode = I_DIRECTORY | (mode & 0777 & ~current->umask);	inode->i_dirt = 1;	bh = add_entry(dir,basename,namelen,&de);	if (!bh) {		iput(dir);		free_block(inode->i_dev,inode->i_zone[0]);		inode->i_nlinks=0;		iput(inode);		return -ENOSPC;	}	de->inode = inode->i_num;	bh->b_dirt = 1;	dir->i_nlinks++;	dir->i_dirt = 1;	iput(dir);	iput(inode);	brelse(bh);	return 0;}/* * routine to check that the specified directory is empty (for rmdir) */static int empty_dir(struct m_inode * inode){	int nr,block;	int len;	struct buffer_head * bh;	struct dir_entry * de;	len = inode->i_size / sizeof (struct dir_entry);	if (len<2 || !inode->i_zone[0] ||	    !(bh=bread(inode->i_dev,inode->i_zone[0]))) {	    	printk("warning - bad directory on dev %04x\n",inode->i_dev);		return 0;	}	de = (struct dir_entry *) bh->b_data;	if (de[0].inode != inode->i_num || !de[1].inode || 	    strcmp(".",de[0].name) || strcmp("..",de[1].name)) {	    	printk("warning - bad directory on dev %04x\n",inode->i_dev);		return 0;	}	nr = 2;	de += 2;	while (nr<len) {		if ((void *) de >= (void *) (bh->b_data+BLOCK_SIZE)) {			brelse(bh);			block=bmap(inode,nr/DIR_ENTRIES_PER_BLOCK);			if (!block) {				nr += DIR_ENTRIES_PER_BLOCK;				continue;			}			if (!(bh=bread(inode->i_dev,block)))				return 0;			de = (struct dir_entry *) bh->b_data;		}		if (de->inode) {			brelse(bh);			return 0;		}		de++;		nr++;	}	brelse(bh);	return 1;}int sys_rmdir(const char * name){	const char * basename;	int namelen;	struct m_inode * dir, * inode;	struct buffer_head * bh;	struct dir_entry * de;	if (!suser())		return -EPERM;	if (!(dir = dir_namei(name,&namelen,&basename)))		return -ENOENT;	if (!namelen) {		iput(dir);		return -ENOENT;	}	if (!permission(dir,MAY_WRITE)) {		iput(dir);		return -EPERM;	}	bh = find_entry(&dir,basename,namelen,&de);	if (!bh) {		iput(dir);		return -ENOENT;	}	if (!(inode = iget(dir->i_dev, de->inode))) {		iput(dir);		brelse(bh);		return -EPERM;	}	if ((dir->i_mode & S_ISVTX) && current->euid &&	    inode->i_uid != current->euid) {		iput(dir);		iput(inode);		brelse(bh);		return -EPERM;	}	if (inode->i_dev != dir->i_dev || inode->i_count>1) {		iput(dir);		iput(inode);		brelse(bh);		return -EPERM;	}	if (inode == dir) {	/* we may not delete ".", but "../dir" is ok */		iput(inode);		iput(dir);		brelse(bh);		return -EPERM;	}	if (!S_ISDIR(inode->i_mode)) {		iput(inode);		iput(dir);		brelse(bh);		return -ENOTDIR;	}	if (!empty_dir(inode)) {		iput(inode);		iput(dir);		brelse(bh);		return -ENOTEMPTY;	}	if (inode->i_nlinks != 2)		printk("empty directory has nlink!=2 (%d)",inode->i_nlinks);	de->inode = 0;	bh->b_dirt = 1;	brelse(bh);	inode->i_nlinks=0;	inode->i_dirt=1;	dir->i_nlinks--;	dir->i_ctime = dir->i_mtime = CURRENT_TIME;	dir->i_dirt=1;	iput(dir);	iput(inode);	return 0;}int sys_unlink(const char * name){	const char * basename;	int namelen;	struct m_inode * dir, * inode;	struct buffer_head * bh;	struct dir_entry * de;	if (!(dir = dir_namei(name,&namelen,&basename)))		return -ENOENT;	if (!namelen) {		iput(dir);		return -ENOENT;	}	if (!permission(dir,MAY_WRITE)) {		iput(dir);		return -EPERM;	}	bh = find_entry(&dir,basename,namelen,&de);	if (!bh) {		iput(dir);		return -ENOENT;	}	if (!(inode = iget(dir->i_dev, de->inode))) {		iput(dir);		brelse(bh);		return -ENOENT;	}	if ((dir->i_mode & S_ISVTX) && !suser() &&	    current->euid != inode->i_uid &&	    current->euid != dir->i_uid) {		iput(dir);		iput(inode);		brelse(bh);		return -EPERM;	}	if (S_ISDIR(inode->i_mode)) {		iput(inode);		iput(dir);		brelse(bh);		return -EPERM;	}	if (!inode->i_nlinks) {		printk("Deleting nonexistent file (%04x:%d), %d\n",			inode->i_dev,inode->i_num,inode->i_nlinks);		inode->i_nlinks=1;	}	de->inode = 0;	bh->b_dirt = 1;	brelse(bh);	inode->i_nlinks--;	inode->i_dirt = 1;	inode->i_ctime = CURRENT_TIME;	iput(inode);	iput(dir);	return 0;}int sys_link(const char * oldname, const char * newname){	struct dir_entry * de;	struct m_inode * oldinode, * dir;	struct buffer_head * bh;	const char * basename;	int namelen;	oldinode=namei(oldname);	if (!oldinode)		return -ENOENT;	if (S_ISDIR(oldinode->i_mode)) {		iput(oldinode);		return -EPERM;	}	dir = dir_namei(newname,&namelen,&basename);	if (!dir) {		iput(oldinode);		return -EACCES;	}	if (!namelen) {		iput(oldinode);		iput(dir);		return -EPERM;	}	if (dir->i_dev != oldinode->i_dev) {		iput(dir);		iput(oldinode);		return -EXDEV;	}	if (!permission(dir,MAY_WRITE)) {		iput(dir);		iput(oldinode);		return -EACCES;	}	bh = find_entry(&dir,basename,namelen,&de);	if (bh) {		brelse(bh);		iput(dir);		iput(oldinode);		return -EEXIST;	}	bh = add_entry(dir,basename,namelen,&de);	if (!bh) {		iput(dir);		iput(oldinode);		return -ENOSPC;	}	de->inode = oldinode->i_num;	bh->b_dirt = 1;	brelse(bh);	iput(dir);	oldinode->i_nlinks++;	oldinode->i_ctime = CURRENT_TIME;	oldinode->i_dirt = 1;	iput(oldinode);	return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕在线不卡视频| 捆绑调教美女网站视频一区| 午夜精品久久久久久久| 国产在线精品免费av| 日本久久电影网| 国产亚洲欧美日韩日本| 免费成人在线观看| 91国产免费观看| 国产精品卡一卡二卡三| 久久99精品久久久久久动态图 | 91豆麻精品91久久久久久| 欧美一级久久久久久久大片| 日韩一区欧美一区| 国产精品一区二区果冻传媒| 欧美日韩高清一区二区三区| 亚洲欧洲av一区二区三区久久| 日韩av电影天堂| 欧美熟乱第一页| 亚洲欧美一区二区三区国产精品| 国产麻豆日韩欧美久久| 91精品国产福利在线观看| 一区二区三区在线观看欧美| 99精品视频一区| 中文字幕第一区第二区| 激情六月婷婷综合| 精品国产免费视频| 久久av中文字幕片| 欧美老年两性高潮| 亚洲国产乱码最新视频| 91传媒视频在线播放| 亚洲综合丝袜美腿| 欧美亚洲国产一区二区三区| 亚洲精品乱码久久久久久日本蜜臀| 国产91露脸合集magnet| 国产欧美精品一区二区色综合 | 久久夜色精品国产噜噜av| 精品一区精品二区高清| 欧美成人精精品一区二区频| 久久激情五月激情| www日韩大片| 高清免费成人av| 国产精品久久久久aaaa樱花| caoporn国产精品| 亚洲人成网站色在线观看| 一本一本大道香蕉久在线精品 | 亚洲欧美综合网| 91麻豆免费看片| 亚洲国产美女搞黄色| 欧美人成免费网站| 麻豆国产精品一区二区三区 | 国产乱人伦精品一区二区在线观看| 日韩精品中午字幕| 成人久久久精品乱码一区二区三区| 国产三级一区二区| 91成人国产精品| 秋霞午夜鲁丝一区二区老狼| 久久亚洲精品国产精品紫薇| av在线不卡网| 午夜精彩视频在线观看不卡| 欧美大片一区二区| 成人毛片老司机大片| 亚洲一区二区在线播放相泽| 日韩视频在线一区二区| 成人在线视频首页| 婷婷成人综合网| 国产精品国产三级国产| 欧美日韩精品欧美日韩精品一综合| 久久精品国产精品青草| 18涩涩午夜精品.www| 欧美日本国产一区| 99久久精品国产一区| 蜜臀va亚洲va欧美va天堂| 中文字幕五月欧美| 91精品国产麻豆国产自产在线| 国产成人亚洲综合色影视| 亚洲最新在线观看| 国产精品素人一区二区| 欧美一级片在线看| 91成人在线精品| 国产成人精品网址| 日本麻豆一区二区三区视频| 国产精品色哟哟网站| 欧美电影免费观看高清完整版| 色视频一区二区| 国产成人自拍高清视频在线免费播放| 洋洋av久久久久久久一区| 国产欧美一区二区精品性色超碰| 欧美美女bb生活片| 91丨九色丨蝌蚪丨老版| 国产成人av电影免费在线观看| 日韩精品电影一区亚洲| 一区二区三区日本| 国产精品亲子伦对白| 精品国产污网站| 91精品国产福利| 欧美人与禽zozo性伦| 色94色欧美sute亚洲线路二| 波多野结衣在线aⅴ中文字幕不卡| 欧美aaa在线| 丝袜美腿亚洲综合| 亚洲国产精品一区二区www在线 | 91偷拍与自偷拍精品| 国产盗摄视频一区二区三区| 美女在线视频一区| 美女网站在线免费欧美精品| 日韩精品亚洲一区| 日韩精品一二三| 五月天亚洲婷婷| 日韩不卡一区二区三区| 日韩激情一区二区| 蜜桃免费网站一区二区三区| 免费成人在线影院| 蜜桃视频免费观看一区| 日韩精品久久理论片| 奇米综合一区二区三区精品视频 | 亚洲美女免费视频| 亚洲精品成人精品456| 洋洋av久久久久久久一区| 一卡二卡三卡日韩欧美| 亚洲国产乱码最新视频| 日韩精品乱码av一区二区| 日韩高清国产一区在线| 奇米精品一区二区三区在线观看一 | 成人av午夜影院| 99久久婷婷国产精品综合| 99精品视频在线观看免费| 色婷婷精品大视频在线蜜桃视频| 97se亚洲国产综合自在线观| 在线观看亚洲精品视频| 91精品视频网| 久久久久国产成人精品亚洲午夜| 国产精品丝袜一区| 亚洲精品国久久99热| 亚洲一区二区三区免费视频| 日韩精品91亚洲二区在线观看| 久久精品国产一区二区| 国产一区二区三区免费在线观看| 国产大陆亚洲精品国产| 91在线播放网址| 欧美日韩国产一级| 精品黑人一区二区三区久久 | 亚洲自拍偷拍av| 青青草国产成人av片免费| 国产激情91久久精品导航| 91色视频在线| 欧美mv和日韩mv的网站| 国产精品女主播av| 日韩电影一二三区| 成人午夜在线视频| 91精品国产综合久久香蕉的特点| 精品乱人伦小说| 一区二区三区 在线观看视频| 老司机一区二区| 在线视频综合导航| 精品国产乱码久久久久久1区2区| 亚洲欧美日韩一区二区| 麻豆精品久久精品色综合| 99国产精品视频免费观看| 日韩一区二区免费在线电影| 国产精品美女久久久久av爽李琼| 日韩福利视频网| 色婷婷久久久久swag精品| 久久人人97超碰com| 午夜精品影院在线观看| 波多野结衣亚洲一区| 日韩欧美一级特黄在线播放| 亚洲男同性视频| 成人午夜大片免费观看| 日韩一区二区免费高清| 亚洲美腿欧美偷拍| 成人久久视频在线观看| 日韩欧美一区二区免费| 夜夜嗨av一区二区三区网页| 国产成人综合亚洲91猫咪| 日韩欧美高清一区| 亚欧色一区w666天堂| 97久久精品人人爽人人爽蜜臀| 337p粉嫩大胆噜噜噜噜噜91av| 午夜精品视频一区| 一本到一区二区三区| 1区2区3区欧美| 成人中文字幕电影| 久久精品亚洲一区二区三区浴池| 美腿丝袜一区二区三区| 91精品国产色综合久久久蜜香臀| 亚洲欧美激情视频在线观看一区二区三区| 国产精品一二三四| 精品久久久久香蕉网| 麻豆国产精品一区二区三区| 51精品秘密在线观看| 亚洲国产精品自拍| 欧美日韩国产美| 无码av免费一区二区三区试看| 色诱亚洲精品久久久久久| 亚洲人成亚洲人成在线观看图片| av在线播放不卡| 亚洲天堂成人在线观看| 91欧美一区二区| 亚洲精品成人悠悠色影视| 欧美在线影院一区二区|