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

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

?? proc.c

?? elinux jffs初始版本 具體了解JFFS的文件系統!
?? C
?? 第 1 頁 / 共 3 頁
字號:
	smb_setup_header_exclusive(server, SMBread, 5, 0);	buf = server->packet;	WSET(buf, smb_vwv0, finfo->fileid);	WSET(buf, smb_vwv1, count);	DSET(buf, smb_vwv2, offset);	WSET(buf, smb_vwv4, 0);	if ((error = smb_request_ok(server, SMBread, 5, -1)) < 0)	{		smb_unlock_server(server);		return error;	}	returned_count = WVAL(server->packet, smb_vwv0);	smb_decode_data(SMB_BUF(server->packet), data, &data_len, fs);	smb_unlock_server(server);	if (returned_count != data_len)	{		printk("smb_proc_read: Warning, returned_count != data_len\n");		printk("smb_proc_read: ret_c=%d, data_len=%d\n",		       returned_count, data_len);	}	return data_len;}intsmb_proc_write(struct smb_server *server, struct smb_dirent *finfo,	       off_t offset, int count, const char *data){	int res = 0;	char *buf;	byte *p;	p = smb_setup_header_exclusive(server, SMBwrite, 5, count + 3);	buf = server->packet;	WSET(buf, smb_vwv0, finfo->fileid);	WSET(buf, smb_vwv1, count);	DSET(buf, smb_vwv2, offset);	WSET(buf, smb_vwv4, 0);	*p++ = 1;	WSET(p, 0, count);	memcpy_fromfs(p + 2, data, count);	if ((res = smb_request_ok(server, SMBwrite, 1, 0)) >= 0)	{		res = WVAL(server->packet, smb_vwv0);	}	smb_unlock_server(server);	return res;}intsmb_proc_create(struct inode *dir, const char *name, int len,		word attr, time_t ctime){	int error;	char *p;	struct smb_server *server = SMB_SERVER(dir);	char *buf;	__u16 fileid;	smb_lock_server(server);      retry:	buf = server->packet;	p = smb_setup_header(server, SMBcreate, 3, 0);	WSET(buf, smb_vwv0, attr);	DSET(buf, smb_vwv1, utc2local(ctime));	*p++ = 4;	p = smb_encode_path(server, p, SMB_INOP(dir), name, len);	smb_setup_bcc(server, p);	if ((error = smb_request_ok(server, SMBcreate, 1, 0)) < 0)	{		if (smb_retry(server))		{			goto retry;		}		smb_unlock_server(server);		return error;	}	fileid = WVAL(server->packet, smb_vwv0);	smb_unlock_server(server);	smb_proc_close(server, fileid, CURRENT_TIME);	return 0;}intsmb_proc_mv(struct inode *odir, const char *oname, const int olen,	    struct inode *ndir, const char *nname, const int nlen){	char *p;	struct smb_server *server = SMB_SERVER(odir);	int result;	smb_lock_server(server);      retry:	p = smb_setup_header(server, SMBmv, 1, 0);	WSET(server->packet, smb_vwv0, aSYSTEM | aHIDDEN);	*p++ = 4;	p = smb_encode_path(server, p, SMB_INOP(odir), oname, olen);	*p++ = 4;	p = smb_encode_path(server, p, SMB_INOP(ndir), nname, nlen);	smb_setup_bcc(server, p);	if ((result = smb_request_ok(server, SMBmv, 0, 0)) < 0)	{		if (smb_retry(server))		{			goto retry;		}	}	smb_unlock_server(server);	return result;}intsmb_proc_mkdir(struct inode *dir, const char *name, const int len){	char *p;	int result;	struct smb_server *server = SMB_SERVER(dir);	smb_lock_server(server);      retry:	p = smb_setup_header(server, SMBmkdir, 0, 0);	*p++ = 4;	p = smb_encode_path(server, p, SMB_INOP(dir), name, len);	smb_setup_bcc(server, p);	if ((result = smb_request_ok(server, SMBmkdir, 0, 0)) < 0)	{		if (smb_retry(server))		{			goto retry;		}	}	smb_unlock_server(server);	return result;}intsmb_proc_rmdir(struct inode *dir, const char *name, const int len){	char *p;	int result;	struct smb_server *server = SMB_SERVER(dir);	smb_lock_server(server);      retry:	p = smb_setup_header(server, SMBrmdir, 0, 0);	*p++ = 4;	p = smb_encode_path(server, p, SMB_INOP(dir), name, len);	smb_setup_bcc(server, p);	if ((result = smb_request_ok(server, SMBrmdir, 0, 0)) < 0)	{		if (smb_retry(server))		{			goto retry;		}	}	smb_unlock_server(server);	return result;}intsmb_proc_unlink(struct inode *dir, const char *name, const int len){	char *p;	struct smb_server *server = SMB_SERVER(dir);	int result;	smb_lock_server(server);      retry:	p = smb_setup_header(server, SMBunlink, 1, 0);	WSET(server->packet, smb_vwv0, aSYSTEM | aHIDDEN);	*p++ = 4;	p = smb_encode_path(server, p, SMB_INOP(dir), name, len);	smb_setup_bcc(server, p);	if ((result = smb_request_ok(server, SMBunlink, 0, 0)) < 0)	{		if (smb_retry(server))		{			goto retry;		}	}	smb_unlock_server(server);	return result;}intsmb_proc_trunc(struct smb_server *server, word fid, dword length){	char *p;	char *buf;	int result;	smb_lock_server(server);      retry:	buf = server->packet;	p = smb_setup_header(server, SMBwrite, 5, 0);	WSET(buf, smb_vwv0, fid);	WSET(buf, smb_vwv1, 0);	DSET(buf, smb_vwv2, length);	WSET(buf, smb_vwv4, 0);	p = smb_encode_ascii(p, "", 0);	smb_setup_bcc(server, p);	if ((result = smb_request_ok(server, SMBwrite, 1, 0)) < 0)	{		if (smb_retry(server))		{			goto retry;		}	}	smb_unlock_server(server);	return result;}static voidsmb_init_dirent(struct smb_server *server, struct smb_dirent *entry){	memset(entry, 0, sizeof(struct smb_dirent));	entry->f_nlink = 1;	entry->f_uid = server->m.uid;	entry->f_gid = server->m.gid;	entry->f_blksize = 512;}static voidsmb_finish_dirent(struct smb_server *server, struct smb_dirent *entry){	if ((entry->attr & aDIR) != 0)	{		entry->f_mode = server->m.dir_mode;		entry->f_size = 512;	} else	{		entry->f_mode = server->m.file_mode;	}	if (entry->attr & aRONLY)		entry->f_mode &= ~0222;	if ((entry->f_blksize != 0) && (entry->f_size != 0))	{		entry->f_blocks =		    (entry->f_size - 1) / entry->f_blksize + 1;	} else	{		entry->f_blocks = 0;	}	return;}voidsmb_init_root_dirent(struct smb_server *server, struct smb_dirent *entry){	smb_init_dirent(server, entry);	entry->attr = aDIR;	entry->f_ino = 1;	smb_finish_dirent(server, entry);}static char *smb_decode_dirent(struct smb_server *server, char *p, struct smb_dirent *entry){	smb_init_dirent(server, entry);	p += SMB_STATUS_SIZE;	/* reserved (search_status) */	entry->attr = BVAL(p, 0);	entry->f_mtime = entry->f_atime = entry->f_ctime =	    date_dos2unix(WVAL(p, 1), WVAL(p, 3));	entry->f_size = DVAL(p, 5);	entry->len = strlen(p + 9);	if (entry->len > 12)	{		entry->len = 12;	}	memcpy(entry->name, p + 9, entry->len);	entry->name[entry->len] = '\0';	while (entry->len > 2)	{		/* Pathworks fills names with spaces */		entry->len -= 1;		if (entry->name[entry->len] == ' ')		{			entry->name[entry->len] = '\0';		}	}	switch (server->case_handling)	{	case CASE_UPPER:		str_upper(entry->name);		break;	case CASE_LOWER:		str_lower(entry->name);		break;	default:		break;	}	DPRINTK("smb_decode_dirent: name = %s\n", entry->name);	smb_finish_dirent(server, entry);	return p + 22;}/* This routine is used to read in directory entries from the network.   Note that it is for short directory name seeks, i.e.: protocol <   PROTOCOL_LANMAN2 */static intsmb_proc_readdir_short(struct smb_server *server, struct inode *dir, int fpos,		       int cache_size, struct smb_dirent *entry){	char *p;	char *buf;	int error;	int result;	int i;	int first, total_count;	struct smb_dirent *current_entry;	word bcc;	word count;	char status[SMB_STATUS_SIZE];	int entries_asked = (server->max_xmit - 100) / SMB_DIRINFO_SIZE;	DPRINTK("SMB call  readdir %d @ %d\n", cache_size, fpos);	smb_lock_server(server);      retry:	buf = server->packet;	first = 1;	total_count = 0;	current_entry = entry;	while (1)	{		if (first == 1)		{			p = smb_setup_header(server, SMBsearch, 2, 0);			WSET(buf, smb_vwv0, entries_asked);			WSET(buf, smb_vwv1, aDIR);			*p++ = 4;			p = smb_encode_path(server, p, SMB_INOP(dir), "*.*", 3);			*p++ = 5;			WSET(p, 0, 0);			p += 2;		} else		{			p = smb_setup_header(server, SMBsearch, 2, 0);			WSET(buf, smb_vwv0, entries_asked);			WSET(buf, smb_vwv1, aDIR);			p = smb_encode_ascii(p, "", 0);			*p++ = 5;			WSET(p, 0, SMB_STATUS_SIZE);			p += 2;			memcpy(p, status, SMB_STATUS_SIZE);			p += SMB_STATUS_SIZE;		}		smb_setup_bcc(server, p);		if ((error = smb_request_ok(server, SMBsearch, 1, -1)) < 0)		{			if ((server->rcls == ERRDOS)			    && (server->err == ERRnofiles))			{				result = total_count - fpos;				goto unlock_return;			} else			{				if (smb_retry(server))				{					goto retry;				}				result = error;				goto unlock_return;			}		}		p = SMB_VWV(server->packet);		p = smb_decode_word(p, &count);		p = smb_decode_word(p, &bcc);		first = 0;		if (count <= 0)		{			result = total_count - fpos;			goto unlock_return;		}		if (bcc != count * SMB_DIRINFO_SIZE + 3)		{			result = -EIO;			goto unlock_return;		}		p += 3;		/* Skipping VBLOCK header				   (5, length lo, length hi). */		/* Read the last entry into the status field. */		memcpy(status,		       SMB_BUF(server->packet) + 3 +		       (count - 1) * SMB_DIRINFO_SIZE,		       SMB_STATUS_SIZE);		/* Now we are ready to parse smb directory entries. */		for (i = 0; i < count; i++)		{			if (total_count < fpos)			{				p += SMB_DIRINFO_SIZE;				DDPRINTK("smb_proc_readdir: skipped entry.\n");				DDPRINTK("                  total_count = %d\n"					 "                i = %d, fpos = %d\n",					 total_count, i, fpos);			} else if (total_count >= fpos + cache_size)			{				result = total_count - fpos;				goto unlock_return;			} else			{				p = smb_decode_dirent(server, p,						      current_entry);				current_entry->f_pos = total_count;				DDPRINTK("smb_proc_readdir: entry->f_pos = "					 "%lu\n", entry->f_pos);				current_entry += 1;			}			total_count += 1;		}	}      unlock_return:	smb_unlock_server(server);	return result;}/* interpret a long filename structure - this is mostly guesses at the   moment.  The length of the structure is returned.  The structure of   a long filename depends on the info level. 260 is used by NT and 2   is used by OS/2. */static char *smb_decode_long_dirent(struct smb_server *server, char *p,		       struct smb_dirent *entry, int level){	char *result;	smb_init_dirent(server, entry);	switch (level)	{		/* We might add more levels later... */	case 1:		entry->len = BVAL(p, 26);		strncpy(entry->name, p + 27, entry->len);		entry->name[entry->len] = '\0';		entry->f_size = DVAL(p, 16);		entry->attr = BVAL(p, 24);		entry->f_ctime = date_dos2unix(WVAL(p, 6), WVAL(p, 4));		entry->f_atime = date_dos2unix(WVAL(p, 10), WVAL(p, 8));		entry->f_mtime = date_dos2unix(WVAL(p, 14), WVAL(p, 12));		result = p + 28 + BVAL(p, 26);		break;	default:		DPRINTK("Unknown long filename format %d\n", level);		result = p + WVAL(p, 0);	}	switch (server->case_handling)	{	case CASE_UPPER:		str_upper(entry->name);		break;	case CASE_LOWER:		str_lower(entry->name);		break;	default:		break;	}	smb_finish_dirent(server, entry);	return result;}intsmb_proc_readdir_long(struct smb_server *server, struct inode *dir, int fpos,		      int cache_size, struct smb_dirent *cache){	/* NT uses 260, OS/2 uses 2. Both accept 1. */	const int info_level = 1;	const int max_matches = 512;	char *p;	char *lastname;	int lastname_len;	int i;	int first, entries, entries_seen;	unsigned char *resp_data = NULL;	unsigned char *resp_param = NULL;	int resp_data_len = 0;	int resp_param_len = 0;	__u16 command;	int result;	int ff_resume_key = 0;	int ff_searchcount = 0;	int ff_eos = 0;	int ff_lastname = 0;	int ff_dir_handle = 0;	int loop_count = 0;	char param[SMB_MAXPATHLEN + 2 + 12];	int mask_len;	unsigned char *mask = &(param[12]);	mask_len = smb_encode_path(server, mask,				   SMB_INOP(dir), "*", 1) - mask;	mask[mask_len] = 0;	mask[mask_len + 1] = 0;	DPRINTK("smb_readdir_long cache=%d, fpos=%d, mask=%s\n",		cache_size, fpos, mask);	smb_lock_server(server);      retry:	first = 1;	entries = 0;	entries_seen = 2;	while (ff_eos == 0)	{		loop_count += 1;		if (loop_count > 200)		{			printk("smb_proc_readdir_long: "			       "Looping in FIND_NEXT??\n");			break;		}		if (first != 0)		{			command = TRANSACT2_FINDFIRST;			WSET(param, 0, aSYSTEM | aHIDDEN | aDIR);			WSET(param, 2, max_matches);	/* max count */			WSET(param, 4, 8 + 4 + 2);	/* resume required +							   close on end +							   continue */			WSET(param, 6, info_level);			DSET(param, 8, 0);		} else		{			command = TRANSACT2_FINDNEXT;			DPRINTK("hand=0x%X resume=%d ff_lastname=%d mask=%s\n",			     ff_dir_handle, ff_resume_key, ff_lastname, mask);			WSET(param, 0, ff_dir_handle);			WSET(param, 2, max_matches);	/* max count */			WSET(param, 4, info_level);			DSET(param, 6, ff_resume_key);	/* ff_resume_key */			WSET(param, 10, 8 + 4 + 2);	/* resume required +							   close on end +							   continue */#ifdef CONFIG_SMB_WIN95			/* Windows 95 is not able to deliver answers			   to FIND_NEXT fast enough, so sleep 0.2 seconds */			current->timeout = jiffies + HZ / 5;			current->state = TASK_INTERRUPTIBLE;			schedule();			current->timeout = 0;#endif		}		result = smb_trans2_request(server, command,					    0, NULL, 12 + mask_len + 2, param,					    &resp_data_len, &resp_data,					    &resp_param_len, &resp_param);		if (result < 0)		{			if (smb_retry(server))			{				goto retry;			}			DPRINTK("smb_proc_readdir_long: "				"got error from trans2_request\n");			break;		}		if (server->rcls != 0)		{			result = -EIO;			break;		}		/* parse out some important return info */		if (first != 0)		{			ff_dir_handle = WVAL(resp_param, 0);			ff_searchcount = WVAL(resp_param, 2);			ff_eos = WVAL(resp_param, 4);			ff_lastname = WVAL(resp_param, 8);		} else		{			ff_searchcount = WVAL(resp_param, 0);			ff_eos = WVAL(resp_param, 2);			ff_lastname = WVAL(resp_param, 6);		}		if (ff_searchcount == 0)		{			break;		}		/* point to the data bytes */		p = resp_data;		/* we might need the lastname for continuations */		lastname = "";

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲最大成人综合| 国产精品网站一区| 欧美天天综合网| 91麻豆蜜桃一区二区三区| 91麻豆蜜桃一区二区三区| 成人午夜电影小说| 国产精品一区久久久久| 国产精品亚洲午夜一区二区三区| 激情欧美一区二区| 国产一区美女在线| 成人精品视频一区| 99久久精品国产精品久久| 91丝袜国产在线播放| 91国产丝袜在线播放| 欧美伊人精品成人久久综合97| 欧美性猛交xxxxxx富婆| 欧美调教femdomvk| 欧美mv日韩mv国产网站app| 精品国产百合女同互慰| 国产亚洲视频系列| 亚洲男人电影天堂| 日日夜夜精品免费视频| 韩国精品免费视频| 91女人视频在线观看| 欧美区视频在线观看| 久久综合久久鬼色| 亚洲九九爱视频| 日韩av一级电影| 国产馆精品极品| 色综合久久中文字幕综合网| 7777精品伊人久久久大香线蕉的| 精品理论电影在线观看| 亚洲视频在线一区观看| 国产呦萝稀缺另类资源| 丁香婷婷综合网| 在线观看日韩国产| 久久久久久久久99精品| 亚洲国产精品欧美一二99| 久久99九九99精品| 色999日韩国产欧美一区二区| 日韩三级视频在线看| 中文字幕一区二区三区四区不卡| 日韩av一二三| 色综合久久综合中文综合网| 欧美大片在线观看| 亚洲一区二区在线视频| 成人午夜私人影院| 欧美一区二区三区的| 亚洲欧美aⅴ...| 国产精品自拍在线| 在线不卡中文字幕播放| 中文字幕日韩av资源站| 韩国女主播一区| 欧美日韩免费视频| 国产精品久久久久影院| 国产美女在线观看一区| 欧美日韩在线观看一区二区 | 狠狠色狠狠色综合系列| 欧美丝袜丝交足nylons| 中文一区一区三区高中清不卡| 午夜伦理一区二区| 在线观看国产一区二区| 国产精品理论在线观看| 国产美女一区二区| 久久综合九色综合欧美98| 视频一区视频二区在线观看| 在线观看中文字幕不卡| 亚洲美女一区二区三区| 91在线观看下载| 欧美国产欧美亚州国产日韩mv天天看完整| 亚洲成人tv网| 在线观看日韩国产| 一区二区日韩电影| 欧洲另类一二三四区| 亚洲免费视频中文字幕| 91在线码无精品| 成人欧美一区二区三区黑人麻豆 | 国产精品一线二线三线| 91麻豆精品国产91久久久资源速度| 亚洲精品视频自拍| 91麻豆精品一区二区三区| 日韩一区在线看| 精品视频123区在线观看| 91精品国产高清一区二区三区 | 色8久久精品久久久久久蜜| 国产色91在线| 国产成人三级在线观看| 国产精品三级久久久久三级| www.av精品| 一区二区三区.www| 欧美一区二区精美| 黄色资源网久久资源365| 精品国产乱码久久久久久蜜臀| 国产一区欧美一区| 中文字幕一区二区三区不卡在线 | 日本aⅴ免费视频一区二区三区 | 亚洲免费电影在线| 欧美体内she精视频| 蜜臀99久久精品久久久久久软件 | 成人av网站在线观看免费| 国产精品二区一区二区aⅴ污介绍| www.欧美日韩国产在线| 亚洲一区二区三区四区不卡| 欧美不卡视频一区| 成人黄色网址在线观看| 亚欧色一区w666天堂| 精品国产一区久久| 91香蕉视频污| 免费观看30秒视频久久| 中文字幕国产一区| 欧美日韩亚洲另类| 高清国产一区二区三区| 五月激情综合婷婷| 欧美国产欧美综合| 91精品国产一区二区三区 | 亚洲第一久久影院| 亚洲国产电影在线观看| 这里只有精品电影| 91丨porny丨户外露出| 久久99精品久久久久久国产越南| 亚洲色图一区二区三区| 精品久久久久久久人人人人传媒| 不卡高清视频专区| 精品一区二区三区在线观看| 亚洲欧美激情插| 久久久久综合网| 91精品国产综合久久精品图片| 欧美在线影院一区二区| 久久99精品一区二区三区三区| 亚洲一区二区综合| 中文字幕一区二区不卡| 久久精品一区二区三区不卡牛牛 | 日韩毛片一二三区| 欧美大片免费久久精品三p | 久久精品理论片| 一区二区三区精品视频| 中文字幕第一页久久| 日韩精品一区二区三区老鸭窝 | 国产午夜亚洲精品午夜鲁丝片 | 国产欧美一区二区精品婷婷 | 一区二区三区视频在线看| 日本一区二区成人| 精品对白一区国产伦| 欧美日本一区二区三区| 日本高清不卡在线观看| 成人高清免费观看| 丁香婷婷综合五月| 国产成人综合在线| 国产综合久久久久久久久久久久| 日日骚欧美日韩| 日韩高清不卡一区二区三区| 日韩激情中文字幕| 热久久一区二区| 美国三级日本三级久久99| 日韩在线观看一区二区| 秋霞国产午夜精品免费视频| 丝袜亚洲另类丝袜在线| 五月激情丁香一区二区三区| 琪琪一区二区三区| 日本成人在线电影网| 麻豆成人91精品二区三区| 久久se这里有精品| 国产成人免费视频一区| 成人国产精品免费观看动漫| av成人免费在线观看| 99re这里只有精品6| 在线免费av一区| 91精品福利在线一区二区三区| 日韩一区和二区| 久久久亚洲精品石原莉奈| 国产无一区二区| 亚洲精品乱码久久久久久久久| 亚洲国产精品一区二区久久| 日本免费新一区视频| 韩国成人精品a∨在线观看| 国v精品久久久网| 在线观看日韩国产| 精品剧情在线观看| 综合电影一区二区三区| 午夜电影网一区| 国产一区二区免费在线| 不卡的看片网站| 欧美日韩国产大片| 国产夜色精品一区二区av| 亚洲天堂中文字幕| 青青草一区二区三区| 成人污视频在线观看| 欧美视频中文一区二区三区在线观看| 91精品国产综合久久久蜜臀图片| 精品国产亚洲在线| 亚洲欧美日韩国产综合| 久久99久久久久| 色欧美88888久久久久久影院| 久久综合狠狠综合久久激情| 1区2区3区欧美| 美女精品自拍一二三四| 色综合久久中文综合久久97| 精品国产第一区二区三区观看体验| 亚洲欧美怡红院| 国产一区二三区|