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

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

?? dosvdirlib.c

?? vxworks的完整的源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
** RETURNS: number of levels in path.** ERRNO:* S_dosFsLib_ILLEGAL_PATH* S_dosFsLib_ILLEGAL_NAME*/LOCAL int dosVDirPathParse    (    DOS_VOLUME_DESC_ID	pVolDesc,    u_char *		path,    PATH_ARRAY_ID	pnamePtrArray    )    {    FAST u_int		numPathLevels;    FAST u_char *	pName;    FAST u_char *	pRegChar; /* last not DOT and not SPACE char */        pnamePtrArray[0].pName = NULL;    /* go throw path string from left to right */        pName = path;    numPathLevels = 0;    while( *pName != EOS )	/* there is 'break' in loop also */    	{    	/* pass slashes */    	    	if( *pName == SLASH || *pName == BACK_SLASH )    	    {    	    pName++;    	    continue;    	    }    	    	/* process special names ( "." ".." ) */    	    	if( *pName == DOT )    	   {    	   /* "/./" - ignore "current directory" */    	   if( *(pName + 1) == EOS || *(pName + 1) == SLASH ||    	       *(pName + 1) == BACK_SLASH )    	   	{    	   	pName ++;    	   	continue;    	   	}    	       	   /* "/../" - goto one level back */    	       	   if( (*(pName + 1) == DOT) &&    	       ( *(pName + 2) == EOS || *(pName + 2) == SLASH ||    	         *(pName + 2) == BACK_SLASH ) )    	   	{    	   	if( numPathLevels > 0 )    	   	    numPathLevels --;    	   	pName +=2;    	   	continue;    	   	}    	   } /* if( *pName == DOT ) */    	       	/* regular name: insert it into array */    	    	if( numPathLevels >= DOS_MAX_DIR_LEVELS )    	    break;	/* max level overloaded */    	    	pnamePtrArray[numPathLevels].pName = pName;    	pnamePtrArray[numPathLevels + 1].pName = NULL;    	pRegChar = NULL;    	while( *pName != SLASH && *pName != BACK_SLASH &&    	       *pName != EOS )    	    {    	    if( *pName != DOT || *pName == SPACE )    	    	pRegChar = pName;    	    pName++;    	    }    	    	/* name can not contain only dots */    	    	if( pRegChar == NULL )    	    {    	    errnoSet( S_dosFsLib_ILLEGAL_NAME );    	    return ERROR;    	    }    	    	pnamePtrArray[numPathLevels].nameLen =    		pRegChar + 1 - pnamePtrArray[numPathLevels].pName;    	    	numPathLevels++;    	} /* while( *pName != EOS ) */        /* check result */        if( *pName != EOS )	/* path termination has not been reached */    	{    	errnoSet( S_dosFsLib_ILLEGAL_PATH );    	return ERROR;    	}#ifdef DEBUG    DBG_MSG( 600, "path: %s, result: \n", path ,0,0,0,0,0,0,0);    pName = (void *)pnamePtrArray;    for( ; pnamePtrArray->pName != NULL; pnamePtrArray++ )    	{    	int i = pnamePtrArray - (PATH_ARRAY_ID)pName + 1;    	DBG_PRN_STR( 600, "%s : %d", pnamePtrArray->pName,    			pnamePtrArray->nameLen, i );    	}    DBG_PRN_STR(600, "\b\b \n", "", 0, 0);#endif /* DEBUG */    return numPathLevels;    } /* dosVDirPathParse() */    /***************************************************************************** dosVDirChkSum - count checksum for long name alias.** RETURNS: N/A.*/LOCAL u_char dosVDirChkSum    (    u_char *	alias    )    {    u_int	i;    u_char	chkSum;        for( chkSum = 0, i = 0; i < DOS_STDNAME_LEN + DOS_STDEXT_LEN; i++ )    	{    	chkSum = ( ( ( chkSum &    1 ) << 7 ) |    	    	   ( ( chkSum & 0xfe ) >> 1 )    	    	 ) +  alias[ i ];    	}    return chkSum;    } /* dosVDirChkSum() */    /***************************************************************************** dosVDirTDDecode - decode time-date field from disk format.** This routine decodes required date-time field in the directory* entry into time_t format.* * Parameter which defines which time field to decode. It* can be one of:* DH_TIME_CREAT, DH_TIME_MODIFY, DH_TIME_ACCESS.** RETURNS: time in time_t format.**/LOCAL time_t dosVDirTDDecode    (    DOS_DIR_PDESCR_ID	pDirDesc,    u_char *	pDirent,	/* directory entry buffer */    u_int	which	/* what field to decode: one of */    			/* DH_TIME_CREAT, DH_TIME_MODIFY or DH_TIME_ACCESS */    )    {    struct tm	tm = {0};	/* broken down time buffer */    UINT16	dtBuf;		/* 16-bit buffer */    u_char	tOff = 0, dOff = 0;	/* field offset */        switch( which )        {        case DH_TIME_CREAT:            tOff = pDirDesc->deDesc.creatTimeOff;            dOff = pDirDesc->deDesc.creatDateOff;            break;        case DH_TIME_MODIFY:            tOff = pDirDesc->deDesc.modifTimeOff;            dOff = pDirDesc->deDesc.modifDateOff;            break;        case DH_TIME_ACCESS:            tOff = pDirDesc->deDesc.accessTimeOff;            dOff = pDirDesc->deDesc.accessDateOff;            break;        default:            assert( FALSE );        }        if( dOff != (u_char)NONE )    	{    	dtBuf = DISK_TO_VX_16( pDirent + dOff );    	    	tm.tm_mday    = dtBuf & 0x1f;    		/* ANSI months are zero-based */	    	tm.tm_mon     = ((dtBuf >> 5) & 0x0f) - 1;    		/* DOS starts at 1980, ANSI starts at 1900 */	    	tm.tm_year    = ((dtBuf >> 9) & 0x7f) + 1980 - 1900;    	}    if( tOff != (u_char)NONE )    	{    	dtBuf = DISK_TO_VX_16( pDirent + tOff );    	    	tm.tm_sec     = (dtBuf & 0x1f) << 1;    	tm.tm_min     = (dtBuf >> 5) & 0x3f;    	tm.tm_hour    = (dtBuf >> 11) & 0x1f;    	}        /* encode into time_t format */        return mktime( &tm );    } /* dosVDirTDDecode() *//***************************************************************************** dosVDirTDEncode - encode time-date to disk format.** This routine takes time value is provided in <curTime> argument* and encodes it into directory entry format.* * Parameter <timesMask> defines which time fields to fill. Following* values can be bitwise or-ed:* DH_TIME_CREAT, DH_TIME_MODIFY, DH_TIME_ACCESS.** RETURNS: N/A.*/LOCAL void dosVDirTDEncode    (    DOS_DIR_PDESCR_ID	pDirDesc,    u_char *	pDirEnt,    u_int	timesMask,    time_t	curTime	/* time to encode */    )    {    struct tm   tm;	/* buffer for split time-date */    u_char	timeB[2], dateB[2];	/* buffers for encoding */        localtime_r( &curTime, &tm );    /* encode time */        VX_TO_DISK_16( ( tm.tm_sec >> 1 ) |    		  ( tm.tm_min << 5 ) |    		  ( tm.tm_hour << 11 ), timeB );        /*     * encode date;     * in <pDate> year is related to 1980, but in tm, - to 1900     */    tm.tm_year =  ( tm.tm_year < 80 )? 80 : tm.tm_year;    VX_TO_DISK_16( tm.tm_mday | ( ( tm.tm_mon + 1 ) << 5 ) |    		  ( ( tm.tm_year - 80 ) <<  9 ), dateB );        /* put time-date into directory entry buffer */        if( timesMask & DH_TIME_CREAT &&        pDirDesc->deDesc.creatDateOff != (u_char)NONE  )    	{    	pDirEnt[ pDirDesc->deDesc.creatTimeOff ] = timeB[0];    	pDirEnt[ pDirDesc->deDesc.creatTimeOff + 1 ] = timeB[1];    	pDirEnt[ pDirDesc->deDesc.creatDateOff ] = dateB[0];    	pDirEnt[ pDirDesc->deDesc.creatDateOff + 1 ] = dateB[1];    	}    if( timesMask & DH_TIME_MODIFY &&        pDirDesc->deDesc.modifDateOff != (u_char)NONE  )    	{    	pDirEnt[ pDirDesc->deDesc.modifTimeOff ] = timeB[0];    	pDirEnt[ pDirDesc->deDesc.modifTimeOff + 1 ] = timeB[1];    	pDirEnt[ pDirDesc->deDesc.modifDateOff ] = dateB[0];    	pDirEnt[ pDirDesc->deDesc.modifDateOff + 1 ] = dateB[1];    	}    if( timesMask & DH_TIME_ACCESS &&        pDirDesc->deDesc.accessDateOff != (u_char)NONE  )    	{    	if( pDirDesc->deDesc.accessTimeOff != (u_char)NONE )    	    {    	    pDirEnt[ pDirDesc->deDesc.accessTimeOff ] = timeB[0];    	    pDirEnt[ pDirDesc->deDesc.accessTimeOff + 1 ] = timeB[1];    	    }    	pDirEnt[ pDirDesc->deDesc.accessDateOff ] = dateB[0];    	pDirEnt[ pDirDesc->deDesc.accessDateOff + 1 ] = dateB[1];    	}    } /* dosVDirTDEncode() */    /***************************************************************************** dosVDirCharEncode - validate and encode character.** RETURNS: OK or ERROR.*/LOCAL STATUS dosVDirCharEncode    (    u_char *	pSrc,    u_char *	pDst,    const u_char *	codeTbl	/* characters table */    				/* ( shortNamesChar or longNamesChar ) */    )    {    /* allow all high characters */    	    if( *pSrc & 0x80 )    	{    	*pDst = *pSrc;    	}    else if( codeTbl[ *pSrc ] != INVALID_CHAR )    	{    	*pDst = codeTbl[ *pSrc ];    	}    else    	{    	return ERROR;    	}        return OK;    } /* dosVDirCharEncode() */    /***************************************************************************** dosVDirNameEncodeShort - encode name in short style.** This routine encodes incoming file name into 8+3 uppercase format.* During encoding the* name is verified to be composed of valid characters.** RETURNS: STRICT_SHORT, if name is valid short and uppercase,*  NOT_STRICT_SHORT, if name is short, but not uppercase,*  NO_SHORT, if name can not be encoded as short.* */LOCAL SHORT_ENCODE dosVDirNameEncodeShort    (     DOS_DIR_PDESCR_ID	pDirDesc,    PATH_ARRAY_ID	pNamePtr,	/* name buffer */    u_char *	pDstName	/* buffer for name in disk format */    )    {    u_char *	pSrc;		/* source name dynamic ptr */    u_char *	pDstBuf;	/* for debug output only */    int		i,j;		/* work */    SHORT_ENCODE	retVal = STRICT_SHORT;    /* extension length (0 - no extension) */    u_char	extLen = pDirDesc->deDesc.extLen;        pDstBuf = pDstName;        bfill( (char *)pDstName,    	   pDirDesc->deDesc.nameLen + pDirDesc->deDesc.extLen, SPACE );        /* encode name and check it by the way */        DBG_MSG( 600, "",0,0,0,0,0,0,0,0 );    DBG_PRN_STR( 600, "%s\n", pNamePtr->pName, pNamePtr->nameLen, 0 );    for( i = 0, pSrc = pNamePtr->pName;    	 i < min( pDirDesc->deDesc.nameLen,    	 	  pNamePtr->nameLen );    	 i++, pDstName++, pSrc++  )    	{    	/* check for extension */    	    	if( extLen != 0 && *pSrc == DOT )     	    break;    	    	if( dosVDirCharEncode( pSrc, pDstName, shortNamesChar ) == ERROR )    	    goto error;    	    	if( *pDstName != *pSrc )    	    retVal = NOT_STRICT_SHORT;    	}    /* check state */        if( i == pNamePtr->nameLen )    	goto retOK;	/* name finished */        if( *pSrc != DOT )	/* name too long */        goto error;        pSrc++;	/* pass DOT */    pDstName += pDirDesc->deDesc.nameLen - i;    i++;        /* encode extension */        for( j = 0; j < extLen && i < pNamePtr->nameLen;    	 i++, j++, pDstName++, pSrc++  )    	{    	if( dosVDirCharEncode( pSrc, pDstName, shortNamesChar ) == ERROR )    	    goto error;    	if( *pDstName != *pSrc )    	    retVal = NOT_STRICT_SHORT;    	}        /* check status */        if( i < pNamePtr->nameLen )	/* extension too long */    	goto error;retOK:    /*      * A space in a short file name is indeed technically allowed, but     * in order to be compatible with M$ Scandisk and Norton Disk Doctor      * we mangle 8.3 names if they contain a space.  This will prevent      * ScanDisk and Norton Disk Doctor from reporting a (false) orphaned      * LFN entry on the alias, and offering to correct it.  Both will     * correct it by marking the LFN invalid (fragmenting the disk...)     * and simply using the short file name, which destroys the case     * sensitive part of the filename.     * Basically, this code is added to appease the windoze tools      * that complain about our file system, since that supposedly      * looks bad....but windo$e should NOT need to mangle a short     * filename with a space....but Windows 95 OSR2 does just that..     * Note only with "3D MAZES.SCR" style.       * Not with "NAME    .   " filenames.     */    /* check backwards through name, wont be more than 11 chars (0-10) */    i = pNamePtr->nameLen - 1;    while (i > 1) /* ignore 0 and 1 chars, name won't begin with space.*/        {	/* ignore "name   " type filenames */	if (*(pNamePtr->pName + i) != SPACE)		    break;        /* found non-space char, break */ 	i--; 	}    if (i != 1) /* don't care if "2   " style name */	{	while (i > 0) /* now look for a space */	    {	    if (*(pNamePtr->pName + i) == SPACE)		        {		goto error; /* windoze likes it a longname */		}	    i--;    	    }  	}        DBG_PRN_STR( 600, "result: %s\n", pDstBuf, 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产女主播一区| 精品区一区二区| 国产精品动漫网站| 成年人国产精品| 国产精品久久久久久户外露出| 国产精品一线二线三线精华| 久久久高清一区二区三区| 国产精品亚洲专一区二区三区 | fc2成人免费人成在线观看播放 | 中文字幕乱码一区二区免费| 成人一区二区三区中文字幕| 亚洲欧美成aⅴ人在线观看| 色婷婷av一区二区| 午夜欧美在线一二页| 日韩欧美国产一区二区在线播放| 精品一区精品二区高清| 国产欧美日韩综合| 在线观看日韩毛片| 久久99国产精品久久99果冻传媒| 久久久美女毛片| 一本一道综合狠狠老| 午夜精品免费在线| 久久久久久久精| 色婷婷久久久久swag精品 | av电影在线观看完整版一区二区| 亚洲美女在线国产| 日韩视频在线你懂得| 盗摄精品av一区二区三区| 亚洲一区二区三区在线看| 亚洲精品一区二区三区精华液 | 精品亚洲免费视频| 中文字幕在线不卡一区二区三区| 欧美专区日韩专区| 狠狠色综合色综合网络| 亚洲精品国产精华液| 日韩欧美在线观看一区二区三区| 成人午夜电影网站| 日韩成人一区二区三区在线观看| 欧美激情中文字幕一区二区| 欧美精选在线播放| 成年人网站91| 国产一区二区三区四区五区美女 | 国产精品538一区二区在线| 一区二区三区精密机械公司| 久久综合九色综合欧美亚洲| 91福利在线观看| 国产在线乱码一区二区三区| 亚洲久本草在线中文字幕| 日韩免费一区二区| 欧美在线一区二区| 成人一区二区三区视频 | 久久疯狂做爰流白浆xx| 亚洲美女一区二区三区| 亚洲国产精品精华液ab| 日韩美女一区二区三区四区| 欧美视频一区二区在线观看| 99国产精品一区| 国产精品一区二区久久精品爱涩| 日韩主播视频在线| 亚洲男女毛片无遮挡| 国产精品萝li| 国产亚洲成aⅴ人片在线观看| 91麻豆精品国产| 91国偷自产一区二区三区成为亚洲经典| 久久99久久精品| 蜜臀av国产精品久久久久| 亚洲国产日韩a在线播放| 一区二区三区欧美亚洲| 综合激情成人伊人| 自拍偷拍亚洲综合| 亚洲欧美综合色| 国产精品少妇自拍| 欧美高清在线精品一区| 中文字幕不卡的av| 国产精品色婷婷久久58| 国产精品乱码一区二区三区软件 | 欧美日韩亚洲综合| 欧美最猛性xxxxx直播| 色呦呦一区二区三区| 日本二三区不卡| 91免费国产视频网站| 91免费小视频| 91豆麻精品91久久久久久| 91在线国内视频| 91福利在线播放| 欧美日韩国产小视频在线观看| 欧美性感一类影片在线播放| 欧美人妇做爰xxxⅹ性高电影 | www.爱久久.com| 99久久亚洲一区二区三区青草| 国产不卡在线播放| 成人免费黄色大片| 成人精品国产一区二区4080| 99精品视频中文字幕| 一本色道**综合亚洲精品蜜桃冫| 91黄色激情网站| 欧美精品vⅰdeose4hd| 日韩欧美一级二级三级| 国产亚洲成年网址在线观看| 专区另类欧美日韩| 亚洲午夜成aⅴ人片| 日本欧美韩国一区三区| 国产一区二区三区综合| 99久久免费精品| 欧美日韩一区二区在线视频| 6080日韩午夜伦伦午夜伦| 欧美大片国产精品| 国产精品麻豆视频| 日韩专区一卡二卡| 春色校园综合激情亚洲| 色播五月激情综合网| 91精品国产91久久久久久一区二区 | 亚洲一本大道在线| 日韩成人免费电影| 岛国一区二区三区| 欧美精品日日鲁夜夜添| 久久精品免视看| 亚洲一区免费观看| 国产精品一区二区男女羞羞无遮挡| 91色乱码一区二区三区| 日韩午夜三级在线| 亚洲精品ww久久久久久p站| 麻豆91在线播放免费| av中文字幕在线不卡| 日韩欧美电影一二三| 亚洲天堂免费在线观看视频| 麻豆一区二区三| 91国产成人在线| 欧美激情综合五月色丁香| 视频一区二区三区入口| 懂色av中文一区二区三区| 欧美精品久久天天躁| 成人欧美一区二区三区1314| 美女精品自拍一二三四| 91豆麻精品91久久久久久| 欧美极品少妇xxxxⅹ高跟鞋 | 欧美激情一区三区| 热久久免费视频| 91免费在线播放| 国产女主播视频一区二区| 青娱乐精品视频在线| 在线免费亚洲电影| 国产精品久久久久久久久免费相片| 蜜桃av一区二区在线观看| 在线观看区一区二| 国产精品久久久久久久岛一牛影视| 裸体一区二区三区| 欧美在线视频日韩| 亚洲女爱视频在线| 99re免费视频精品全部| 久久久精品蜜桃| 久久精品国产亚洲高清剧情介绍| 欧美亚洲愉拍一区二区| 亚洲视频一区二区免费在线观看| 国产激情偷乱视频一区二区三区| 日韩欧美一级在线播放| 天天av天天翘天天综合网| 色哟哟一区二区在线观看| 亚洲视频你懂的| 成人av电影在线播放| 国产亚洲欧美色| 国产一区二区三区久久久| 日韩精品综合一本久道在线视频| 丝袜亚洲精品中文字幕一区| 欧美日韩免费观看一区二区三区| 亚洲另类春色校园小说| 日本道免费精品一区二区三区| 日韩一区欧美小说| 色婷婷av一区二区三区软件| 亚洲欧美成人一区二区三区| 91成人网在线| 偷拍一区二区三区四区| 51午夜精品国产| 麻豆中文一区二区| 2020日本不卡一区二区视频| 国产一区二区在线电影| 国产精品午夜久久| 91在线免费播放| 亚洲午夜久久久久久久久久久| 欧美天天综合网| 青青草国产成人99久久| www久久久久| 成人免费观看av| 亚洲另类在线一区| 7777精品伊人久久久大香线蕉经典版下载 | 成人高清免费观看| 亚洲三级小视频| 欧美日韩一级片在线观看| 奇米四色…亚洲| 精品国产污网站| 成人动漫精品一区二区| 一区二区欧美在线观看| 4438x亚洲最大成人网| 紧缚奴在线一区二区三区| 国产视频一区二区在线| 91丨porny丨蝌蚪视频| 五月婷婷综合网| 久久久久久久久久久黄色| heyzo一本久久综合| 视频一区二区不卡|