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

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

?? pname.c

?? Dos6.0
?? C
字號:
/***	pname.c - form a "pretty" version of a user file name
 *
 *	OS/2 v1.2 and later will allow filenames to retain the case
 *	when created while still being case insensitive for all operations.
 *	This allows the user to create more visually appealing file names.
 *
 *	All runtime routines should, therefore, preserve the case that was
 *	input.	Since the user may not have input in the case that the entries
 *	were created, we provide a service whereby a pathname is adjusted
 *	to be more visually appealing.	The rules are:
 *
 *	if (real mode)
 *	    lowercase the sucker
 *	else
 *	if (version is <= 1.1)
 *	    lowercase the sucker
 *	else
 *	if (filesystem is FAT)
 *	    lowercase the sucker
 *	else
 *	    for each component starting at the root, use DosFindFirst
 *		to retrieve the original case of the name.
 *
 *	Modifications:
 *	    10-Oct-1989 mz  First implementation
 *
 */

#if defined (OS2)
#define INCL_ERRORS
#define INCL_DOSFILEMGR
#define INCL_DOSMODULEMGR
#include <os2.h>
#endif

#include <string.h>
#include <stdlib.h>
#include <malloc.h>

#include "..\h\tools.h"

char *pname (char *pszName)
{
#if defined (DOS)
    return strlwr (pszName);
#else
    if (!IsMixedCaseSupported (pszName))
	return strlwr (pszName);

    /*	The underlying file system supports mixed case.  Iterate through
     *	the path doing find-firsts to elicit the correct case from the
     *	file system
     */
    {
#if defined(OS2)
	HDIR		hdir;
	FILEFINDBUF	findbuf;
#elif defined(NT)
	HANDLE		hdir;
	WIN32_FIND_DATA findbuf;
#endif
	unsigned int	cFound;
	char *pszSrc, *pszDst, *pszEnd, chEnd;

	/*  skip drive and leading / if present */
	pszDst = pszName;
	if (pszDst[1] == ':')
	    pszDst += 2;

	/*  We skip to first filename component.  If the path is UNC, then
	 *  we skip over machine name and sharename and LC them.
	 */

	if (fPathChr (*pszDst)) {
	    pszDst++;
	    if (fPathChr (*pszDst)) {
		pszDst = strbscan (pszDst + 1, "/\\");
		if (*pszDst != '\0')
		    pszDst = strbscan (pszDst + 1, "/\\");

		/*  pszDst points to the slash following the share name or
		 *  points to '\0' for mere computer or computer\share
		 */
		chEnd = *pszDst;
		*pszDst = '\0';
		strlwr (pszName);
		if ((*pszDst++ = chEnd) == '\0')
		    return pszName;
		}
	    }

	/*  If we are pointing at the root, just give up
	 */
	if (*pszDst == '\0')
	    return pszName;

	/*  pszDst points to first char of first component
	 */

	pszSrc = pszDst;
	while (TRUE) {
	    /*	Find and terminate next component after pszSrc
	     */
	    pszEnd = strbscan (pszSrc, "/\\");
	    chEnd = *pszEnd;
	    *pszEnd = 0;

	    /*	Pack next component up against pszDst
	     */
	    strcpy (pszDst, pszSrc);

	    /*	Use DosFindFirst to return "canonical" case-correct
	     *	version of last component EXCEPT if meta chars present
	     */
#if defined(OS2)
	    hdir = HDIR_CREATE;
#endif
	    cFound = 1;
	    if (*strbscan (pszDst, "*?") == 0 &&
		strcmp (pszDst, ".") && strcmp (pszDst, "..") &&
#if defined(OS2)
		DosFindFirst2 (pszName,
			      &hdir,
			      FILE_HIDDEN + FILE_SYSTEM + FILE_DIRECTORY,
			      &findbuf,
			      sizeof (findbuf),
			      &cFound,
			      FIL_STANDARD,
			      0L) == 0
#elif defined(NT)
		( ( hdir = FindFirstFile( pszName, &findbuf ) ) != (HANDLE)-1 )
#endif
		) {
		/*  The entry was found and is valid.  Go and
		 *  copy it from the returned buffer
		 */
#if defined(OS2)
#define FOUNDNAME   findbuf.achName
#elif defined(NT)
#define FOUNDNAME   findbuf.cFileName
#endif
		strcpy (pszDst, FOUNDNAME);

		/*  Release search handle
		 */
#if defined(OS2)
#define CLOSEFIND   DosFindClose
#elif defined(NT)
#define CLOSEFIND   FindClose
#endif
		CLOSEFIND (hdir);
		}
	    else
		/*  Meta char present or search did not find file
		 *  Just leave it alone
		 */
		;

	    /*	pszName points to name being constructed
	     *	pszDst	points to correctly-formed last component
	     *	chEnd	contains character that terminated last component
	     *	pszEnd	is where chEnd was retrieved from
	     */

	    /*	Terminate newly found component
	     */
	    pszDst += strlen (pszDst);
	    *pszDst++ = '\\';

	    /*	If we were at end of string,
	     *	then we're all done
	     */
	    if (chEnd == '\0') {
		pszDst[-1] = '\0';
		break;
		}

	    /*	Set pszSrc to point to beginning of next component
	     *	We can do this because we haven't seen a terminating NUL
	     */
	    pszSrc = pszEnd + 1;
	    }
	return pszName;
    }
#endif
}

#if defined (OS2) || defined(NT)
/*	IsMixedCaseSupported - determine if a file system supports mixed case
 *
 *	We presume that all OS's prior to OS/2 1.2 or FAT filesystems
 *	do not support mixed case.  It is up to the client to figure
 *	out what to do.
 *
 *	We presume that non FAT filesystems on 1.2 and later DO support mixed
 *	case
 *
 *	We do some caching to prevent redundant calls to the file systems.
 *
 *	returns     TRUE    (MCA_SUPPORT) if it is supported
 *		    FALSE   (MCA_NOTSUPP) if unsupported
 *
 */
#define MCA_UNINIT	123
#define MCA_SUPPORT	TRUE
#define MCA_NOTSUPP	FALSE

static	USHORT mca[27] = { MCA_UNINIT, MCA_UNINIT, MCA_UNINIT,
			   MCA_UNINIT, MCA_UNINIT, MCA_UNINIT,
			   MCA_UNINIT, MCA_UNINIT, MCA_UNINIT,
			   MCA_UNINIT, MCA_UNINIT, MCA_UNINIT,
			   MCA_UNINIT, MCA_UNINIT, MCA_UNINIT,
			   MCA_UNINIT, MCA_UNINIT, MCA_UNINIT,
			   MCA_UNINIT, MCA_UNINIT, MCA_UNINIT,
			   MCA_UNINIT, MCA_UNINIT, MCA_UNINIT,
			   MCA_UNINIT, MCA_UNINIT, MCA_UNINIT };

USHORT (pascal far *pDosQPathInfo) (PSZ, USHORT, PBYTE, USHORT, ULONG);

USHORT static QueryMixedCaseSupport (char *psz)
{
#if defined(NT)
    psz;	//unreferenced

    return MCA_NOTSUPP;
#elif defined(OS2)

    UCHAR *pUpdPath;
    FILESTATUS fsts;
    USHORT erc;

    /*	If OS/2 before 1.2, presume no mixed case support
     */
    if (_osmajor < 10 || (_osmajor == 10 && _osminor < 2))
	return MCA_NOTSUPP;

    /*	Attach to v1.2 function
     */
    if (pDosQPathInfo == NULL) {
	HMODULE hmod;

	if (DosGetModHandle ("DOSCALLS", &hmod) != 0)
	    return MCA_NOTSUPP;

	if (DosGetProcAddr (hmod, "#98", (PPFN) &pDosQPathInfo) != 0) {
	    pDosQPathInfo = NULL;
	    return MCA_NOTSUPP;
	    }
	}

    pUpdPath = (*tools_alloc) (MAXPATHLEN);
    if (pUpdPath == NULL)
	return MCA_NOTSUPP;

    /*	Replace lowest path component with "." to force a directory
     */
    upd (psz, ".", pUpdPath);

    /*	Retrieve timestamp info
     */
    erc = (*pDosQPathInfo) (pUpdPath,
			    FIL_STANDARD,
			    (PBYTE) &fsts,
			    sizeof (fsts),
			    0L);
    free (pUpdPath);

    /*	If no error and if there was a creation time on the dir
     *	then we presume the mixed case is supported
     */
    if (erc == NO_ERROR && MAKETYPE (fsts.fdateCreation, USHORT) != 0)
	return MCA_SUPPORT;
    else
	return MCA_NOTSUPP;
#endif
}

USHORT IsMixedCaseSupported (char *psz)
{
    USHORT mcaSupp;
    unsigned int uDrvOrd;
    BOOL fUNC;
#if defined (OS2)
    ULONG  ulDrvMap;
#endif

    fUNC = (fPathChr (psz[0]) && fPathChr (psz[1])) ||
	    (psz[0] != 0 && psz[1] == ':' &&
	     fPathChr (psz[2]) && fPathChr (psz[3]));

    /*	Obtain drive ordinal and return cached value if valid
     */
    if (!fUNC) {
	if (psz[0] != 0 && psz[1] == ':')
	    uDrvOrd = (psz[0] | 0x20) - 'a' + 1;
	else {
#if defined (OS2)
	    DosQCurDisk (&uDrvOrd, &ulDrvMap);
#elif defined(NT)
            char buf[5];

            GetCurrentDirectory( 5, buf );
	    uDrvOrd = ( buf[0] | 0x20 ) - 'a' + 1;
#endif
	}

	if (mca[uDrvOrd] != MCA_UNINIT)
	    return mca[uDrvOrd];
	}

    /*	Get support value
     */
    mcaSupp = QueryMixedCaseSupport (psz);

    if (!fUNC)
	mca[uDrvOrd] = mcaSupp;

    return mcaSupp;
}
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成a人无v码亚洲福利| 国产欧美日韩视频在线观看| 亚洲午夜激情网站| 欧美性生交片4| 日韩精品视频网| 精品毛片乱码1区2区3区| 国产精品69久久久久水密桃| 国产精品亲子乱子伦xxxx裸| 在线观看日韩高清av| 日韩中文字幕一区二区三区| 精品美女在线播放| 99久久精品免费看国产免费软件| 亚洲最大的成人av| 欧美一区二区三区播放老司机| 国产麻豆视频一区二区| 日本一区二区三区久久久久久久久不| 91蝌蚪porny| 日本成人在线网站| 国产欧美精品一区二区三区四区| 色综合网色综合| 美国毛片一区二区三区| 在线欧美小视频| 日本午夜一本久久久综合| 久久老女人爱爱| 91久久精品国产91性色tv| 精久久久久久久久久久| 亚洲精品菠萝久久久久久久| 精品电影一区二区| 在线一区二区三区做爰视频网站| 国产一区二区不卡| 亚洲一线二线三线视频| 亚洲精品一区二区精华| 欧美主播一区二区三区| 国产精品一二三区在线| 亚洲国产精品久久久久秋霞影院 | 午夜精品免费在线| 国产日韩欧美麻豆| 91麻豆精品91久久久久久清纯| 床上的激情91.| 美国三级日本三级久久99| 亚洲另类中文字| 欧美精彩视频一区二区三区| 欧美顶级少妇做爰| 色综合久久久久综合| 国产乱淫av一区二区三区| 日韩国产欧美在线观看| 一区二区免费看| 国产精品的网站| 国产三级精品三级| 亚洲精品一区二区三区在线观看 | 欧美精品tushy高清| 91在线视频官网| 成人伦理片在线| 韩国一区二区三区| 五月天一区二区| 亚洲国产视频直播| 亚洲美女淫视频| 亚洲欧洲色图综合| 国产精品麻豆视频| 欧美国产精品一区二区三区| 欧美精品一区二区三区一线天视频| 欧美欧美午夜aⅴ在线观看| 日本精品一区二区三区高清| 色综合久久综合| 久久先锋资源网| 日本欧美大码aⅴ在线播放| 一区二区三区中文字幕精品精品| 日本一区免费视频| 欧美高清在线一区二区| 久久久久99精品一区| 26uuu色噜噜精品一区二区| 日韩限制级电影在线观看| 欧美一级片免费看| 日韩一区二区视频| 欧美成人性战久久| 欧美大片免费久久精品三p| 欧美高清一级片在线| 欧美男人的天堂一二区| 91精品国产品国语在线不卡| 欧美一级夜夜爽| 久久天天做天天爱综合色| xf在线a精品一区二区视频网站| 欧美videos大乳护士334| 精品福利视频一区二区三区| 国产日韩三级在线| 综合久久一区二区三区| 一区二区三区欧美激情| 午夜精品福利久久久| 日韩—二三区免费观看av| 日韩免费观看高清完整版 | 蜜桃久久av一区| 美女视频黄免费的久久 | 视频一区中文字幕国产| 日韩成人dvd| 国产精品一区二区久激情瑜伽| 国产精品18久久久久久久久| eeuss鲁片一区二区三区| 欧美午夜一区二区| 精品国产乱码久久久久久浪潮| 中文字幕 久热精品 视频在线| 一区二区三区日本| 日本不卡高清视频| 国产91丝袜在线播放0| 91丨porny丨蝌蚪视频| 91精品在线麻豆| 中日韩av电影| 丝袜a∨在线一区二区三区不卡| 韩国精品主播一区二区在线观看| 成人精品国产一区二区4080| 99久久久精品| 免费一级欧美片在线观看| 国产一区中文字幕| 99re热这里只有精品免费视频 | 91免费看片在线观看| 91精品国产综合久久精品麻豆| 久久人人97超碰com| 亚洲欧美日本在线| 国内精品伊人久久久久av影院 | 自拍偷自拍亚洲精品播放| 青草国产精品久久久久久| av在线综合网| 精品福利视频一区二区三区| 亚洲综合激情另类小说区| 国产成人自拍网| 欧美精品亚洲二区| 中文字幕一区二区三区不卡| 久久99九九99精品| 欧美性极品少妇| 国产精品色在线| 极品尤物av久久免费看| 欧美图区在线视频| 中文字幕色av一区二区三区| 精品一区二区三区视频在线观看| 欧美性生交片4| 亚洲四区在线观看| 国产不卡在线播放| 欧美大度的电影原声| 亚洲国产精品天堂| 91论坛在线播放| 国产精品久久久久久久久图文区| 色88888久久久久久影院按摩 | 精品精品国产高清a毛片牛牛| 亚洲乱码国产乱码精品精可以看 | 国产一区二区三区美女| 欧美精品亚洲一区二区在线播放| 日韩理论电影院| 不卡在线视频中文字幕| 久久久久久久久久久久久夜| 久久 天天综合| 91精品国产美女浴室洗澡无遮挡| 亚洲免费观看高清完整版在线 | 天天av天天翘天天综合网| 91网站最新地址| 国产精品天干天干在线综合| 国产精品一色哟哟哟| 欧美va亚洲va香蕉在线 | 国产高清久久久| 久久久青草青青国产亚洲免观| 九九**精品视频免费播放| 日韩欧美三级在线| 久久成人羞羞网站| 日韩1区2区3区| 欧美在线免费播放| 有码一区二区三区| 成人av网站在线观看免费| 久久久久国色av免费看影院| 国产裸体歌舞团一区二区| 久久综合一区二区| 国产一级精品在线| 久久精品无码一区二区三区| 国产一区二区三区在线观看精品 | 成人动漫av在线| 中文字幕成人av| k8久久久一区二区三区 | 午夜精品一区二区三区三上悠亚| 在线免费观看一区| 亚洲va中文字幕| 日韩一区二区三区在线| 欧美日韩精品三区| 日韩国产在线观看一区| 欧美成人精精品一区二区频| 国产一本一道久久香蕉| 国产精品久久免费看| 色噜噜狠狠一区二区三区果冻| 激情国产一区二区| 亚洲一区国产视频| 91极品视觉盛宴| 婷婷久久综合九色国产成人 | 日本欧美一区二区| 久久久久国产精品麻豆ai换脸 | 中文字幕国产一区| 99免费精品在线| 亚洲国产日韩一区二区| 欧美一区二区三区播放老司机| 国产麻豆精品视频| 亚洲人成网站在线| 欧美一级高清片在线观看| 国产成人免费在线观看不卡| 亚洲永久精品国产| 久久亚洲精精品中文字幕早川悠里 |