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

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

?? yaffsfsd.c

?? 優龍2410linux2.6.8內核源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
			fc.uFlags = SHCNF_PATH;			fc.dwItem1 = (DWORD)yfsd_FullPathName(pVolume,fpn,YFSD_FULL_PATH_NAME_SIZE,pathName);			fc.dwItem2 = 0;			fc.dwAttributes = 0;			yfsd_NullWinFileTime(&fc.ftModified);			fc.nFileSize = 0;			pVolume->shellFunction(&fc);			RETAILMSG (MSGSTATE, (L"YAFFS::shell function called\r\n"));			yfsd_ShellDirectoryChanged(pVolume,fpn);	}		return result ? TRUE : FALSE;}DWORD YFSD_GetFileAttributesW(PVOLUME pVolume, PCWSTR pwsFileName ){	yaffs_Object *obj = NULL;	DWORD result = 0xFFFFFFFF;	RETAILMSG (MSGSTATE, (L"YAFFS::GetFileAttributes\r\n"));	yfsd_LockYAFFS();	obj = yfsd_FindObjectByWinPath(&pVolume->dev,pwsFileName);	if(obj)	{		result = yfsd_GetObjectWinAttributes(obj);	}	else	{		SetLastError(ERROR_FILE_NOT_FOUND);	}	yfsd_UnlockYAFFS();		RETAILMSG (MSGSTATE, (L"YAFFS::GetFileAttributes for %s returning %X\r\n",pwsFileName,result));	return result;	}BOOL YFSD_SetFileAttributesW( PVOLUME pVolume,PCWSTR pwsFileName, DWORD dwFileAttributes ){	yaffs_Object *obj = NULL;	DWORD mtime[2];	DWORD attribs;	DWORD objSize;	int result = 0;	RETAILMSG (MSGSTATE, (L"YAFFS::SetFileAttributes %X\r\n",dwFileAttributes));	if(!yfsd_CheckValidAttributes(dwFileAttributes))	{			SetLastError(ERROR_INVALID_PARAMETER);			return FALSE;	}	yfsd_LockYAFFS();	obj = yfsd_FindObjectByWinPath(&pVolume->dev,pwsFileName);	if(obj)	{		obj->st_mode = dwFileAttributes;		obj->dirty = 1;		result = yaffs_FlushFile(obj,0);		attribs = yfsd_GetObjectWinAttributes(obj);		objSize = yaffs_GetObjectFileLength(obj);		mtime[0] = obj->win_mtime[0];		mtime[1] = obj->win_mtime[1];	}	else	{		SetLastError(ERROR_FILE_NOT_FOUND);	}	yfsd_UnlockYAFFS();	if(result && pVolume->shellFunction)	{			FILECHANGEINFO fc;			WCHAR fpn[YFSD_FULL_PATH_NAME_SIZE];			fc.cbSize = sizeof(FILECHANGEINFO);			fc.wEventId = SHCNE_ATTRIBUTES;			fc.uFlags = SHCNF_PATH;			fc.dwItem1 = (DWORD)yfsd_FullPathName(pVolume,fpn,YFSD_FULL_PATH_NAME_SIZE,pwsFileName);			fc.dwItem2 = 0;			fc.dwAttributes =  attribs;			yfsd_U32sToWinFileTime(mtime,&fc.ftModified);			fc.nFileSize = objSize;			pVolume->shellFunction(&fc);			RETAILMSG (MSGSTATE, (L"YAFFS::shell function called\r\n"));			//yfsd_ShellDirectoryChanged(pVolume,fpn);	}		return result;}BOOL YFSD_DeleteFileW( PVOLUME pVolume, PCWSTR pwsFileName ){	int result = FALSE;	yaffs_Object *parent = NULL;	yaffs_Object *obj;	char name[YFSD_NAME_LENGTH+1];	RETAILMSG (MSGSTATE, (L"YAFFS::DeleteFileW (%s)\r\n", pwsFileName));	yfsd_LockYAFFS();	obj = yfsd_FindObjectByWinPath(&pVolume->dev,pwsFileName);	if(!obj)	{		SetLastError(ERROR_FILE_NOT_FOUND);		result = FALSE;	}	else if (obj->variantType != YAFFS_OBJECT_TYPE_FILE)	{		SetLastError(ERROR_ACCESS_DENIED);		result = FALSE;	}	else if(obj->st_mode & FILE_ATTRIBUTE_READONLY)	{		SetLastError(ERROR_ACCESS_DENIED);		result = FALSE;	}	else if(obj->inUse)	{		SetLastError(ERROR_ACCESS_DENIED);		result = FALSE;	}	else	{		parent = yfsd_FindDirectoryByWinPath(&pVolume->dev,pwsFileName,name,YFSD_NAME_LENGTH);		if(parent && yfsd_NameIsValid(name))		{			result = yaffs_Unlink(parent,name);			if(!result)				SetLastError(ERROR_ACCESS_DENIED);		}	}	yfsd_UnlockYAFFS();	if(result && pVolume->shellFunction)	{			FILECHANGEINFO fc;			WCHAR fpn[YFSD_FULL_PATH_NAME_SIZE];			fc.cbSize = sizeof(FILECHANGEINFO);			fc.wEventId = SHCNE_DELETE;			fc.uFlags = SHCNF_PATH;			fc.dwItem1 = (DWORD)yfsd_FullPathName(pVolume,fpn,YFSD_FULL_PATH_NAME_SIZE,pwsFileName);			fc.dwItem2 = 0;			fc.dwAttributes = -1;			yfsd_NullWinFileTime(&fc.ftModified);			fc.nFileSize = 0;			pVolume->shellFunction(&fc);			RETAILMSG (MSGSTATE, (L"YAFFS::shell function called\r\n"));			yfsd_ShellDirectoryChanged(pVolume,fpn);	}	return result ? TRUE : FALSE;}BOOL YFSD_MoveFileW(PVOLUME pVolume,PCWSTR pwsOldFileName, PCWSTR pwsNewFileName ){	yaffs_Object *newParent = NULL;	yaffs_Object *oldParent = NULL;	yaffs_Object *obj = NULL;	char oldName[YFSD_NAME_LENGTH+1];	char newName[YFSD_NAME_LENGTH+1];	int result = 0;	int objIsDir = 0;	DWORD attribs;	DWORD objSize;	DWORD mtime[2];	RETAILMSG (MSGSTATE, (L"YAFFS::MoveFile\r\n"));	yfsd_LockYAFFS();	oldParent = yfsd_FindDirectoryByWinPath(&pVolume->dev,pwsOldFileName,oldName,YFSD_NAME_LENGTH);	newParent = yfsd_FindDirectoryByWinPath(&pVolume->dev,pwsNewFileName,newName,YFSD_NAME_LENGTH);	if(oldParent  && yfsd_NameIsValid(oldName) && newParent && yfsd_NameIsValid(newName))	{		result = yaffs_RenameObject(oldParent,oldName,newParent,newName);		if(!result)		{			SetLastError(ERROR_FILE_NOT_FOUND);		}		obj = yfsd_FindObjectByWinPath(&pVolume->dev,pwsNewFileName);		if(obj)		{			objIsDir = (obj->variantType == YAFFS_OBJECT_TYPE_DIRECTORY);			attribs = yfsd_GetObjectWinAttributes(obj);			objSize = yaffs_GetObjectFileLength(obj);			mtime[0] = obj->win_mtime[0];			mtime[1] = obj->win_mtime[1];		}	}	else	{		SetLastError(ERROR_PATH_NOT_FOUND);	}	yfsd_UnlockYAFFS();	if(result && pVolume->shellFunction)	{			FILECHANGEINFO fc;			WCHAR fpn1[YFSD_FULL_PATH_NAME_SIZE];			WCHAR fpn2[YFSD_FULL_PATH_NAME_SIZE];			fc.cbSize = sizeof(FILECHANGEINFO);			fc.wEventId = objIsDir ? SHCNE_RENAMEFOLDER : SHCNE_RENAMEITEM;			fc.uFlags = SHCNF_PATH;			fc.dwItem1 = (DWORD)yfsd_FullPathName(pVolume,fpn1,YFSD_FULL_PATH_NAME_SIZE,pwsOldFileName);			fc.dwItem2 = (DWORD)yfsd_FullPathName(pVolume,fpn2,YFSD_FULL_PATH_NAME_SIZE,pwsNewFileName);			fc.dwAttributes = attribs;			yfsd_U32sToWinFileTime(mtime,&fc.ftModified);			fc.nFileSize = objSize;			pVolume->shellFunction(&fc);			RETAILMSG (MSGSTATE, (L"YAFFS::shell function called\r\n"));			yfsd_ShellDirectoryChanged(pVolume,fpn1);			yfsd_ShellDirectoryChanged(pVolume,fpn2);	}	return result ? TRUE : FALSE;}BOOL YFSD_DeleteAndRenameFileW(PVOLUME pVolume, PCWSTR pwsOldFileName, PCWSTR pwsNewFileName ){	//slf021104c begin    BOOL fSuccess;	//slf021104c end	RETAILMSG (MSGSTATE, (L"YAFFS::DeleteAndRename\r\n"));	//slf021104c begin    if (fSuccess = YFSD_DeleteFileW(pVolume, pwsOldFileName))        fSuccess = YFSD_MoveFileW(pVolume, pwsNewFileName, pwsOldFileName);	return fSuccess;	//return FALSE;	//slf021104c end}BOOL YFSD_GetDiskFreeSpaceW( PVOLUME pVolume, PCWSTR pwsPathName, PDWORD pSectorsPerCluster,PDWORD pBytesPerSector, PDWORD pFreeClusters, PDWORD pClusters ){	int nChunks;	RETAILMSG (MSGSTATE, (L"YAFFS::GetFreeSpace\r\n"));	yfsd_LockYAFFS();	nChunks = yaffs_GetNumberOfFreeChunks(&pVolume->dev);	yfsd_UnlockYAFFS();	if(nChunks >= 0)	{		// Let's pretentd our clusters are the same size as eraseable blocks...		*pBytesPerSector = 512;		*pSectorsPerCluster  =32;		*pFreeClusters = nChunks/32;		*pClusters = pVolume->dev.endBlock - pVolume->dev.startBlock + 1;	}	return (nChunks >= 0)? TRUE : FALSE;}void YFSD_Notify(PVOLUME pVolume, DWORD dwFlags ){	// Flags can be one of:	// FSNOTIFY_POWER_ON: no action required	// FSNOTIFY_POWER_OFF: flush all files	// FSNOTIFY_DEVICE_ON: no action required	RETAILMSG (MSGSTATE, (L"YAFFS::Notify\r\n"));	if(dwFlags == FSNOTIFY_POWER_OFF)	{		yfsd_FlushAllFiles();	}}BOOL YFSD_RegisterFileSystemFunction(PVOLUME pVolume,SHELLFILECHANGEFUNC_t pfn ){	RETAILMSG (MSGSTATE, (L"YAFFS::RegisterFileSysFunction\r\n"));		pVolume->shellFunction = pfn;	return TRUE;}int iMatch(const char a, const char b){	if (a == '?' || b == '?')		return 1;	return (toupper(a) == toupper(b));}void pString(const char *inp){	while (*inp) RETAILMSG(1, (L"%c", *inp++));}int regularMatch(const char *regexp, const char *str){//	pString(regexp);//	RETAILMSG(1, (L" "));//	pString(str);//	RETAILMSG(1, (L"\r\n"));	if (*regexp == 0 && *str == 0)	{		//RETAILMSG(1, (L"Match!\r\n"));		return 1;	}	if (*regexp == '*')				{		regexp++;		if (*regexp == 0)   // end of the expression is a *, we must match		{			//RETAILMSG(1, (L"Match!\r\n"));			return 1;		}		while (!iMatch(*regexp, *str)) // throw away chars from str until we match		{			if (*str == 0)  // if we're not at the end			{				// if we have .* left to match, but the str is finished then match it OK				if (regexp[0] == '.' && regexp[1] == '*')				{					//RETAILMSG(1, (L"Match!\r\n"));					return 1;				}				else				{				// the extension failed the match					//RETAILMSG(1, (L"No Match!\r\n"));					return 0;				}			}			str++;		} 		// right now we should either eat more characters, or try to match		return (regularMatch(regexp, str) || regularMatch(--regexp, ++str));	}//  compare chars until we hit another *, or we fail	while (iMatch(*regexp, *str))	{		if (*regexp == 0 && *str == 0)		{			//RETAILMSG(1, (L"Match!\r\n"));			return 1;		}		regexp++;		str++;	}	if (*regexp == 0 && *str == 0)	{		//RETAILMSG(1, (L"Match!\r\n"));		return 1;	}	if (*regexp == '*')		return regularMatch(regexp, str);	//RETAILMSG(1, (L"No Match!\r\n"));	return 0;}void yfsd_DeleteFinder(PSEARCH pSearch){  if(pSearch->foundObjects) //If we found some objects we must clean up the cached linked list.  {    yaffs_FoundObject *it;    yaffs_FoundObject *temp;    it = pSearch->foundObjects;    while(it != NULL)    {      temp = it;      it = it->next;            free(temp);    }    pSearch->foundObjects = NULL;  }		pSearch->dir->inUse--;		free(pSearch);}BOOL yfsd_ObjectAlreadyFound(PSEARCH pSearch, yaffs_Object *l){  //Iterate through the current list of objs already found and return true if already exists.  //If the object hasn't already been found then add it to the list (SIDE-EFFECT alert) and return false.  BOOL found = FALSE;  yaffs_FoundObject *it;  it = pSearch->foundObjects;    while(it->next != NULL) //iterate through singly linked list.  {    if(it->obj == l)    {      found = TRUE;      break;    }    it = it->next;  }  if(!found)  {    //Add the item to the list.    //'it' will currently be pointing to the last of the list nodes. i.e node->next == NULL    it->next = malloc(sizeof(yaffs_FoundObject));    it->next->next = NULL;    it->next->obj = 0;    it->obj = l;  }  return found;}#if 0// slower oneBOOL yfsd_DoFindFile(PSEARCH pSearch, PWIN32_FIND_DATAW pfd){	struct list_head *i;	int pos;	yaffs_Object *l;	BOOL found = 0;	char name[YAFFS_MAX_NAME_LENGTH+1];  if(!pSearch->foundObjects)  {    pSearch->foundObjects = malloc(sizeof(yaffs_FoundObject));    pSearch->foundObjects->next = NULL;    pSearch->foundObjects->obj = 0;  }	yfsd_LockYAFFS();	pos = 0;	list_for_each(i,&pSearch->dir->variant.directoryVariant.children)	{		l = list_entry(i, yaffs_Object,siblings);		yaffs_GetObjectName(l,name,YAFFS_MAX_NAME_LENGTH+1);		if(regularMatch(pSearch->pattern,name))		{			if(!yfsd_ObjectAlreadyFound(pSearch, l))//pos == pSearch->currentPos)			{										found = 1;				//pSearch->currentPos++;				// fill out find data				pfd->dwFileAttributes = yfsd_GetObjectWinAttributes(l);				yfsd_U32sToWinFileTime(l->win_ctime,&pfd->ftCreationTime);				yfsd_U32sToWinFileTime(l->win_atime,&pfd->ftLastAccessTime);				yfsd_U32sToWinFileTime(l->win_mtime,&pfd->ftLastWriteTime);				pfd->nFileSizeHigh = 0;				pfd->nFileSizeLow = yaffs_GetObjectFileLength(l);				pfd->dwOID = (CEOID)(INVALID_HANDLE_VALUE); // wtf is this???				MultiByteToWideChar(CP_ACP,0,name,-1,pfd->cFileName,YFSD_NAME_LENGTH);				RETAILMSG(MSGSTATE,(L"File %s id %d header %d nDataChunks %d scannedLength %d\r\n",							pfd->cFileName,l->objectId, l->chunkId, l->nDataChunks,							l->variant.fileVariant.scannedFileSize));				goto out_of_here;			}			else			{				pos++;			}		}	}out_of_here:	yfsd_UnlockYAFFS();	if(!found)	{		SetLastError(ERROR_NO_MORE_FILES);	}	return found;	}#else// faster oneBOOL yfsd_DoFindFile(PSEARCH pSearch, PWIN32_FIND_DATAW pfd){	struct list_head *i;	yaffs_Object *l;	BOOL found = 0;	char name[YAFFS_MAX_NAME_LENGTH+1];  if(!pSearch->foundObjects)  {    pSearch->foundObjects = malloc(sizeof(yaffs_FoundObject));    pSearch->foundObjects->next = NULL;    pSearch->foundObjects->obj = 0;  }	yfsd_LockYAFFS();	list_for_each(i,&pSearch->dir->variant.directoryVariant.children)	{		l = list_entry(i, yaffs_Object,siblings);		if(!yfsd_ObjectAlreadyFound(pSearch,l))		{			// Only look at things we have not looked at already			yaffs_GetObjectName(l,name,YAFFS_MAX_NAME_LENGTH+1);			if(regularMatch(pSearch->pattern,name))			{				found = 1;				// fill out find data

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av激情综合网| 欧美一区二区三区白人| 国产亚洲欧洲一区高清在线观看| 中文字幕一区二区三中文字幕 | 色综合久久88色综合天天免费| 久久这里只有精品6| 蜜臀久久久久久久| 欧美亚洲动漫精品| 亚洲欧美日韩国产成人精品影院| 粉嫩一区二区三区性色av| 久久久高清一区二区三区| 国产一区高清在线| 国产亚洲精品超碰| 99久久er热在这里只有精品66| 一区二区中文视频| 色妹子一区二区| 日韩av二区在线播放| 欧美激情在线观看视频免费| 亚洲精品少妇30p| av在线不卡观看免费观看| 综合激情网...| 日韩一区二区免费在线观看| 精品无码三级在线观看视频| 国产偷国产偷亚洲高清人白洁| 国产一本一道久久香蕉| 国产精品美女久久久久高潮| 欧美日韩视频不卡| 国产成人自拍网| 亚洲大片在线观看| 欧美国产日韩a欧美在线观看 | 91黄色激情网站| 精品一二三四在线| 亚洲电影视频在线| 中文字幕高清不卡| 欧美军同video69gay| 成人黄页毛片网站| 精品无码三级在线观看视频 | 性久久久久久久| 国产精品色噜噜| 精品电影一区二区| 欧美亚洲一区二区在线观看| 狠狠色伊人亚洲综合成人| 国产精品亲子伦对白| 欧美一级在线视频| 7878成人国产在线观看| 欧美中文字幕不卡| 色天天综合色天天久久| 99久久国产综合色|国产精品| 国产精品自拍网站| 久久精品国产秦先生| 免费精品视频在线| 亚洲欧美激情在线| 久久久久久久久久看片| 日韩午夜中文字幕| 日韩精品一区二区三区老鸭窝 | 色婷婷精品大在线视频| 99久久免费精品高清特色大片| 成人在线综合网站| 国产精品一级在线| a亚洲天堂av| 色综合天天做天天爱| 在线看一区二区| 6080午夜不卡| 2020国产成人综合网| 欧美激情中文字幕一区二区| 国产精品久久久久久福利一牛影视 | 日韩一区二区电影网| 久久免费偷拍视频| 综合婷婷亚洲小说| 日本aⅴ亚洲精品中文乱码| 国产麻豆视频精品| 一本大道av伊人久久综合| 日韩一卡二卡三卡国产欧美| 久久精品一区八戒影视| 亚洲视频每日更新| 美日韩一区二区| 色妞www精品视频| 2020国产精品自拍| 亚洲免费观看视频| 国产伦精品一区二区三区视频青涩| 成人激情免费视频| 精品美女一区二区三区| 亚洲综合区在线| 国产精品996| 日韩一级黄色大片| 一区二区三区精品视频在线| 三级精品在线观看| 国产精品一区二区久激情瑜伽 | 欧美亚洲综合网| 国产精品国产三级国产aⅴ入口| 日本女人一区二区三区| 在线一区二区三区做爰视频网站| 国产偷v国产偷v亚洲高清| 精品中文字幕一区二区| 欧美一级午夜免费电影| 亚洲福中文字幕伊人影院| 一本久道中文字幕精品亚洲嫩| 国产色91在线| 成人中文字幕合集| 中文字幕欧美三区| 成人白浆超碰人人人人| 国产网红主播福利一区二区| 国产成人鲁色资源国产91色综| www精品美女久久久tv| 韩国精品一区二区| 国产情人综合久久777777| 成人app网站| 亚洲国产精品综合小说图片区| 欧美体内she精视频| 午夜精品在线视频一区| 日韩精品最新网址| 国产成人免费在线| 中文字幕一区av| 欧美日韩国产美女| 国产福利一区二区三区视频在线 | 91片在线免费观看| 亚洲成av人片在www色猫咪| 欧美日韩国产美女| 国产成人精品aa毛片| 中文字幕一区二区三区在线不卡| 91免费在线播放| 日韩高清不卡一区| 久久久精品国产免大香伊| 精品一区二区三区香蕉蜜桃| 在线播放91灌醉迷j高跟美女 | 国产91精品一区二区麻豆网站 | 91精品国产综合久久久久久| 精品一区二区免费看| 亚洲精品高清在线观看| 日韩欧美一二三四区| 色综合久久综合网97色综合| 奇米精品一区二区三区在线观看| 国产精品网曝门| 欧美一区二区免费观在线| 色域天天综合网| 不卡一区中文字幕| 韩国一区二区视频| 蜜臀av一区二区在线免费观看| 中文字幕一区二区三区不卡| 精品国产污网站| 91精品国产综合久久香蕉的特点| 成人午夜又粗又硬又大| 国产精品888| 国产在线不卡一卡二卡三卡四卡| 日本成人在线电影网| 视频在线观看91| 亚瑟在线精品视频| 午夜精品福利一区二区蜜股av| 亚洲一区日韩精品中文字幕| 亚洲区小说区图片区qvod| 亚洲欧美日韩系列| 亚洲人吸女人奶水| 一区二区三区成人| 亚洲第一主播视频| 蜜桃视频在线观看一区二区| 亚洲欧洲精品天堂一级| 亚洲女性喷水在线观看一区| 中文字幕佐山爱一区二区免费| 中文字幕一区二区三区色视频| 中文一区二区完整视频在线观看 | 久久精品人人做| 中文字幕一区日韩精品欧美| 一区二区三区四区在线免费观看| 亚洲精品免费看| 日本不卡在线视频| 极品少妇xxxx精品少妇| 午夜一区二区三区在线观看| 亚洲一区二区在线播放相泽| 视频一区二区国产| 成人禁用看黄a在线| 欧美日韩国产影片| 国产午夜一区二区三区| 亚洲成av人片在www色猫咪| 国产露脸91国语对白| 欧美亚洲动漫精品| 久久奇米777| 日本美女视频一区二区| 成人黄色网址在线观看| 精品盗摄一区二区三区| 亚洲观看高清完整版在线观看| 国产成人午夜精品影院观看视频 | 色综合欧美在线| 欧美精品一区二区精品网| 亚洲一区免费在线观看| av中文字幕亚洲| 国产欧美日韩久久| 国产在线视频一区二区| 欧美日韩国产美| 亚洲一区二区三区视频在线| 国产河南妇女毛片精品久久久 | 色国产综合视频| 亚洲国产高清aⅴ视频| 国产原创一区二区| 精品国精品国产| 国内精品伊人久久久久av一坑| 在线播放视频一区| 久久精品国产在热久久| 日韩一区二区免费视频| 开心九九激情九九欧美日韩精美视频电影| 欧美专区亚洲专区|