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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? basefun.cc

?? 此源代碼只用于學(xué)習(xí),不得用于其他商業(yè)活動(dòng) .
?? CC
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/*
* Copyright 2002 LinkAge Co.,Ltd. Inc. All Rights Reversed
*/

/*********************************************************************************/
/*** Name             : BASEFUN.CC                                             ***/
/***                                                                           ***/
/*** Description      : 基本功能函數(shù)                                           ***/
/***                                                                           ***/
/*** Author           : 郭亮                       	                       ***/
/***                             	                                       ***/
/*** Begin Time       : 2002/05/26                                             ***/
/***                                                                           ***/
/*** Last Change Time : 2002/05/30       	                               ***/
/***                                                                           ***/
/*********************************************************************************/
#include <stdlib.h>
#include <time.h>
#include <netdb.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
#include <arpa/inet.h>
#include <string.h>
#include <unistd.h>
#include <ctype.h>

#include "basefun.h"

extern "C"
{
	int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);
}


bool _GetSubRange(const char **Src, char *Range1, char *Range2)
{
	const char *pSrc = *Src;
	const char *p1 = Range1;
	const char *p2 = Range2;

	//解析--subrange1:subrange2
	//前一個(gè)range1
	while (*pSrc == ' ' || *pSrc == '\t')
		++pSrc;

	while ( isalnum(*pSrc) )
		*Range1++ = *pSrc++;
	*Range1 = 0;

	while (*pSrc == ' ' || *pSrc == '\t')
		++pSrc;

	if (*pSrc != ':')
		return false;
	else
		++pSrc;

	//后一個(gè)range2
	while (*pSrc == ' ' || *pSrc == '\t')
		++pSrc;

	while ( isalnum(*pSrc) )
		*Range2++ = *pSrc++;
	*Range2 = 0;

	while (*pSrc == ' ' || *pSrc == '\t')
		++pSrc;

	if (*p1 == 0 || *p2 == 0)
		return false;

	*Src += pSrc - *Src;

	return true;
}

/*
*	Function Name:	Compare
*	Description:	比較兩個(gè)字符串是否匹配(相等)
*	Input Param:
*		lv_chCompareString -------> 被比較的字符串
*		lv_chCompareMod	   -------> 匹配的字符串,支持*,?,[]等通配符
*	Returns:
*		如果兩個(gè)字符串匹配,返回true
*		如果兩個(gè)字符串不匹配,返回false
*	complete:	2001/12/13
*/
bool Compare(const char *lv_chCompareString,const char *lv_chCompareMod)
{
	while(1)
	{
		switch(*lv_chCompareMod)
	  	{
	  		case '\0':
					if (*lv_chCompareString == '\0')
					{
						return true;
					}
					else
					{
						return false;
					}
			case '%': //掩碼:mask_type[mask_value] %R表示范圍(range),%R[sub1:sub2, sub3:sub4]
				++lv_chCompareMod;
				if (strncmp(lv_chCompareMod, "R[", 2) == 0)
				{
					int iLen = 0;
					char *p;
					char SubRange1[30];
					char SubRange2[30];

					lv_chCompareMod += 2; //跳過(guò)R[
					while (1)
					{
						if (!_GetSubRange(&lv_chCompareMod, SubRange1, SubRange2))
							return false;

						iLen = strlen(SubRange1);
						if (strlen(lv_chCompareString) < (size_t)iLen)
							return false;

						if ( (strncmp(lv_chCompareString, SubRange1, iLen) >= 0) &&
							(strncmp(lv_chCompareString, SubRange2, iLen) <= 0 ) )
						{ //匹配
							p = strchr(lv_chCompareMod, ']');
							if (p)
							{
								//跳過(guò)整個(gè)模式以及相應(yīng)長(zhǎng)度的字符串
								lv_chCompareMod = p + 1;
								lv_chCompareString += iLen;
								break;
							}
							else
							{
								return false;
							}
						} //測(cè)試下一個(gè)
						else if (*lv_chCompareMod == ',')
						{
							++ lv_chCompareMod;
							continue;
						}
						else
						{
							return false;
						}
					}
					continue; //外層while
				}
				return false;
			case '!':
					if (Compare(lv_chCompareString,lv_chCompareMod + 1) == true)
					{
						return false;
					}
					else
					{
						return true;
					}
			case '?' :
					if(*lv_chCompareString == '\0')
					{
						return false;
					}
					return Compare(lv_chCompareString + 1,lv_chCompareMod + 1);
			case '*' :
					if(*(lv_chCompareMod+1) == '\0')
					{
						return true;
					}
					do
					{
						if(Compare(lv_chCompareString,lv_chCompareMod+1)==true)
						{
							return true;
						}
					}while(*(lv_chCompareString++));
					return false;
			case '[' :
					lv_chCompareMod++;
					do
					{

						if(*lv_chCompareMod == *lv_chCompareString)
						{
							while(*lv_chCompareMod != '\0' && *lv_chCompareMod != ']')
							{
								lv_chCompareMod++;
							}
							if(*lv_chCompareMod == ']')
							{
								lv_chCompareMod++;
							}
							return Compare(lv_chCompareString+1,lv_chCompareMod);
						}
						lv_chCompareMod++;
						if((*lv_chCompareMod == ':') && (*(lv_chCompareMod+1) != ']'))
						{
							if((*lv_chCompareString >= *(lv_chCompareMod - 1)) && (*lv_chCompareString <= *(lv_chCompareMod + 1)))
							{
								while(*lv_chCompareMod != '\0' && *lv_chCompareMod != ']')
								{
									lv_chCompareMod++;
								}
								if(*lv_chCompareMod == ']')
								{
									lv_chCompareMod++;
								}
								return Compare(lv_chCompareString+1,lv_chCompareMod);
							}
							lv_chCompareMod++;
							lv_chCompareMod++;

						}
					}while(*lv_chCompareMod != '\0' && *lv_chCompareMod != ']');

					return false;
			default  :
					if(*lv_chCompareString == *lv_chCompareMod)
					{
						++lv_chCompareString;
						++lv_chCompareMod;
						continue;
						//return Compare(lv_chCompareString+1,lv_chCompareMod+1);
					}
					else
					{
						return false;
					}
		}//switch
	}//while(1)
}

/*
*	Function Name:	GetSystemDateTime
*	Description:	獲得當(dāng)前系統(tǒng)日期時(shí)間
*	Input Param:
*		CurrentDateTime -------> 當(dāng)前系統(tǒng)日期(格式14位YYYYMMDDHHMMSS)
*	Returns:	無(wú)
*	complete:	2003/06/30
*/
void GetSystemDateTime(char *CurrentDateTime)
{
	time_t timer;
	struct tm *today;

	timer = time(NULL);
	today = localtime(&timer);
	sprintf(CurrentDateTime,"%04d%02d%02d%02d%02d%02d",today->tm_year + 1900,
				today->tm_mon+1,today->tm_mday,
				today->tm_hour,today->tm_min,today->tm_sec);
}

/*
*	Function Name:	GetShortSystemDateTime
*	Description:	獲得當(dāng)前系統(tǒng)日期時(shí)間
*	Input Param:
*		CurrentDateTime -------> 當(dāng)前系統(tǒng)日期(格式12位YYMMDDHHMMSS)
*	Returns:	無(wú)
*	complete:	2003/06/30
*/
void GetShortSystemDateTime(char *CurrentDateTime)
{
	time_t timer;
	struct tm *today;

	timer = time(NULL);
	today = localtime(&timer);
	sprintf(CurrentDateTime,"%02d%02d%02d%02d%02d%02d",today->tm_year,
				today->tm_mon+1,today->tm_mday,
				today->tm_hour,today->tm_min,today->tm_sec);
}

/*
*	Function Name:	GetSystemDate
*	Description:	獲得當(dāng)前系統(tǒng)日期
*	Input Param:
*		CurrentDate -------> 當(dāng)前系統(tǒng)日期(格式y(tǒng)yyymmdd)
*	Returns:	無(wú)
*	complete:	2001/12/07
*/
void GetSystemDate(char *CurrentDate)
{
	time_t timer;
	struct tm *today;

	timer = time(NULL);
	today = localtime(&timer);
	sprintf(CurrentDate,"%04d%02d%02d",today->tm_year + 1900,today->tm_mon+1,today->tm_mday);
}

/*
*	Function Name:	GetSystemTime
*	Description:	獲得當(dāng)前系統(tǒng)時(shí)間
*	Input Param:
*		CurrentTime -------> 當(dāng)前系統(tǒng)時(shí)間(格式y(tǒng)ymmdd)
*	Returns:	無(wú)
*	complete:	2001/12/07
*/
void GetSystemTime(char *CurrentTime)
{
	time_t timer;
	struct tm *timenow;

	timer = time(NULL);
	timenow = localtime(&timer);
	sprintf(CurrentTime,"%02d%02d%02d",timenow->tm_hour,timenow->tm_min,timenow->tm_sec);
}

/*
*	Function Name:	GetLocalIp
*	Description:	得到本機(jī)的IP地址
*	Input Param:
*		LocalIp -------> 得到的本機(jī)IP地址
*	Returns:	無(wú)
*	complete:	2002/03/13
*/
bool GetLocalIp(char *LocalIp)
{
	char chHostName[LENGTH];
	int i;
	struct in_addr addr;
	/*取得機(jī)器名稱*/
	if(gethostname(chHostName,sizeof(chHostName)) !=-1)
	{
		/*取得給定機(jī)器的信息*/
		struct hostent* phost=gethostbyname(chHostName);
		/*到每一個(gè)地址結(jié)尾*/
		for(i=0;phost!= NULL&&phost->h_addr_list[i]!=NULL;i++)
		{
        		memcpy(&addr, phost->h_addr_list[i], sizeof(struct in_addr));
    		}
    		strcpy(LocalIp,inet_ntoa(addr));
    		return true;
	}
	else
	{
		return false;
	}
}

/*
*	Function Name:	FullPath
*	Description:	給出完整的路徑名
*	Input Param:
*		chPath -------> 路徑名
*	Returns:	如果路徑存在,則補(bǔ)齊,并返回0;不存在則返回-1
*	complete:	2002/03/13
*/
int FullPath(char *chPath)
{
	int len;

	if(chPath[0] == '\0')
	{
		return -1;
	}

	len = strlen(chPath);
	if(chPath[len - 1] != '/')
	{
		chPath[len] = '/';
		chPath[len + 1] = '\0';
	}

	return 0;
}

/*
*    Function Name    : IsDirectory
*    Description      : 判斷是否路徑存在
*    Input Param :
*		dirname -------> 需要進(jìn)行判斷的路徑名
*    Returns          : 如果是路徑名,則返回true
*			如果不是路徑名,則返回false
*/
bool IsDirectory(const char *dirname)
{
	struct stat sDir;

	if (stat(dirname,&sDir) < 0)
	{
		return false;
	}

	if (S_IFDIR == (sDir.st_mode & S_IFMT))
	{
		return true;
	}
	else
	{
		return false;
	}
}

/*
*	Function Name:	GetFileSize
*	Description:	獲取文件的大小
*	Input Param:
*		chFileName -------> 文件的名字
*	Returns:	無(wú)
*	complete:	2002/03/13
*/
long GetFileSize(const char *chFileName)
{
	struct stat buf;

	if(stat(chFileName, &buf) < 0)
	{
		return -1;
	}
	return buf.st_size;
}

/*
*	Function Name:	Trim
*	Description:	去掉字符串左右的空格
*	Input Param:
*		String -------> 需要去掉空格的字符串
*	Returns:	無(wú)
*	complete:	2002/03/13
*/
void Trim(char * String)
{
	char *Position = String;
	/*找到第一個(gè)不是空格的位置*/
	while(isspace(*Position))
	{
		Position++;
	}
	/*如果為一空串則退出*/
	if (*Position == '\0')
	{
		*String = '\0';
		return;
	}
	/*除去前面的空格*/
	while(*Position)
	{
		*String = *Position;
		String++;
		Position++;
	}
	/*除去后面的空格*/
	do
	{
		*String = '\0';
		String--;
	}while(isspace(*String));
}


/*
*    Function Name    : GetLine
*    Description      :	在文件中獲得一行的內(nèi)容
*    Input lv_chParameters :
*	Line        -----------> 這一行的內(nèi)容(字符串)
*	File        -----------> 打開(kāi)的文件指針
*	Returns          :得到的字節(jié)數(shù).
*	complete	:2001/11/09
*/
int GetLine(char *Line,FILE *File)
{
	int iByteRead = 0;
	for(;;)
	{
		if (feof(File))
		{
			*Line='\0';
			break;
		}
		*Line=fgetc(File);
		iByteRead ++;
		if (*Line == '\n')
		{
			*Line='\0';
			break;
		}
		Line++;
	}
	return iByteRead;
}

/*
*	Function Name:	MakeUpper
*	Description:	將字符串全部改為大寫(xiě)
*	Input Param:
*		pchString -------> 輸入字符串
*	Returns:	無(wú)
*	complete:	2002/03/13
*/
void MakeUpper(char * pchString)
{
	int iLen = strlen(pchString);

	for(int i=0; i<iLen; i++)
	{
		pchString[i] = toupper(pchString[i]);
	}
}

/*
*	Function Name:	MakeLower
*	Description:	將字符串全部改為小寫(xiě)
*	Input Param:
*		pchString -------> 輸入字符串
*	Returns:	無(wú)
*	complete:	2002/03/13
*/
void MakeLower(char * pchString)
{
	int iLen = strlen(pchString);

	for(int i=0; i<iLen; i++)
	{
		pchString[i] = tolower(pchString[i]);
	}
}

/*
*	Function Name:	CheckDate
*	Description:	校驗(yàn)日期正確性
*	Input Param:
*		pchString -------> 輸入字符串(格式y(tǒng)yyymmdd或者yymmdd)
*	Returns:
*		成功,返回true
*		失敗,返回false
*	complete:	2002/03/13
*/
bool CheckDate(const char *pchString)
{
	int num = 0,iLen;
	char tmp[LENGTH];
	int iYear = 0,iMonth = 0,i;

	iLen = strlen(pchString);
	if ((iLen != 6) && (iLen != 8))
	{
		return false;
	}

	for (i=0; i<iLen; i++)
	{
		if ((pchString[i] < '0') || (pchString[i] > '9'))
		{
			return false;
		}
	}

	if (iLen == 6)
	{
		//校驗(yàn)?zāi)攴?		strncpy(tmp, pchString, 2);
		tmp[2] = 0;
		num = atoi(tmp);
		iYear = num + 2000;
		if ((num < 0) || (num > 99))
		{
			return false;
		}
		//校驗(yàn)月份
		strncpy(tmp, pchString + 2, 2);
		tmp[2] = 0;
		num = atoi(tmp);
		iMonth = num;
		if ((num < 1) || (num > 12))
		{
			return false;
		}

		//校驗(yàn)天
		strncpy(tmp, pchString + 4, 2);
		tmp[2] = 0;
		num = atoi(tmp);
		if ((num < 1) || (num > 31))
		{
			return false;
		}
	}
	else if (iLen == 8)
	{
		strncpy(tmp, pchString, 4);
		tmp[4] = '\0';
		num = atoi(tmp);
		iYear = num;
		num = num - 2000;
		if ((num <0) || (num > 99))
		{
			return false;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜在线电影| 欧美一级高清片在线观看| 久久你懂得1024| 国产精品综合在线视频| 2021久久国产精品不只是精品| 秋霞电影一区二区| 欧美一区二区三区喷汁尤物| 日本不卡一二三| 久久亚洲春色中文字幕久久久| 激情丁香综合五月| 欧美国产视频在线| 97久久久精品综合88久久| 亚洲男同1069视频| 日韩欧美一区二区视频| 成人免费视频一区| 亚洲精品久久久蜜桃| 欧美日韩一区二区三区视频| 欧美a级理论片| 国产精品乱人伦| 欧美精品色一区二区三区| 精品制服美女丁香| 免费成人美女在线观看.| 亚洲国产成人自拍| 6080午夜不卡| 99久久国产免费看| 免费不卡在线观看| 亚洲三级免费观看| 欧美精品一区二区三区蜜桃| 99在线精品免费| 国产在线播放一区二区三区| 亚洲另类在线制服丝袜| 精品日产卡一卡二卡麻豆| 91官网在线免费观看| 国产suv精品一区二区三区| 欧美aaa在线| 日韩成人精品视频| 亚洲国产成人高清精品| 亚洲另类色综合网站| 国产精品婷婷午夜在线观看| 欧美电影免费提供在线观看| 欧美日韩色综合| 欧美日韩国产中文| 欧美日韩国产影片| 91福利国产精品| 欧美制服丝袜第一页| 91亚洲大成网污www| 成人激情文学综合网| 成人免费黄色在线| 99精品在线观看视频| 99久久精品国产精品久久| 91色.com| 欧美精品少妇一区二区三区| 欧美日韩国产在线观看| 欧美一区二区三区日韩| 欧美大尺度电影在线| 久久久久久久久久电影| 中文字幕免费一区| 国产一区二三区好的| 成人中文字幕合集| 91久久精品一区二区三区| 制服丝袜亚洲网站| 久久久久99精品国产片| 亚洲另类春色校园小说| 蜜臀av一区二区| 99久久精品久久久久久清纯| 欧美三级韩国三级日本一级| 日韩免费观看2025年上映的电影| 国产午夜精品一区二区| 亚洲欧美日韩久久| 精品一区免费av| 欧美亚洲禁片免费| 国产精品女同一区二区三区| 视频在线观看一区| 91年精品国产| 久久你懂得1024| 成人黄动漫网站免费app| 日韩一区二区视频| 依依成人精品视频| 国产一区二区伦理| 欧美一区二区久久| 性久久久久久久久久久久| 成人动漫精品一区二区| 久久先锋资源网| 国精产品一区一区三区mba桃花| eeuss鲁一区二区三区| 久热成人在线视频| 欧美视频精品在线| 蜜桃一区二区三区在线观看| 久久精品一区二区三区四区| www.在线欧美| 久久久www成人免费毛片麻豆| 日本不卡高清视频| 宅男在线国产精品| 亚洲一区二区美女| 在线欧美日韩精品| 一区二区三区丝袜| 91片黄在线观看| 亚洲欧美在线aaa| www.一区二区| 亚洲色大成网站www久久九九| youjizz久久| 亚洲精品日韩一| 欧美日韩电影一区| 日本欧美一区二区在线观看| 欧美日本一道本| 国产a精品视频| 天天综合色天天| 久久久国产精品不卡| 色婷婷av一区二区三区软件 | 久久精品国产亚洲5555| 久久精品亚洲国产奇米99| av亚洲精华国产精华精| 亚洲国产精品久久人人爱蜜臀| 91国产成人在线| 国产在线一区二区综合免费视频| 中文字幕亚洲不卡| 欧美精品一二三| 欧美性生活影院| 床上的激情91.| 国产成人精品免费| 久久成人精品无人区| 亚洲高清三级视频| 国产精品网站在线观看| 精品人在线二区三区| 久久99久久久欧美国产| 欧美老肥妇做.爰bbww| 日韩有码一区二区三区| 视频一区二区中文字幕| 日韩制服丝袜av| 国产麻豆9l精品三级站| www.视频一区| 99亚偷拍自图区亚洲| 成人免费高清在线观看| 国产99精品视频| voyeur盗摄精品| 成人黄色小视频| 91国内精品野花午夜精品| 一本高清dvd不卡在线观看| 一本在线高清不卡dvd| 色婷婷av一区二区三区gif| av高清不卡在线| 91视频xxxx| 欧美私人免费视频| 欧洲精品视频在线观看| 6080亚洲精品一区二区| 久久综合狠狠综合久久综合88 | 26uuu国产日韩综合| 久久夜色精品国产欧美乱极品| 日韩视频一区二区| 久久久久国产一区二区三区四区| 欧美国产日韩在线观看| 亚洲影视资源网| 美女尤物国产一区| 成av人片一区二区| 欧美综合亚洲图片综合区| 在线综合亚洲欧美在线视频| 日韩一级在线观看| 国产精品网友自拍| 亚洲成人动漫在线观看| 精品在线一区二区| 日本福利一区二区| 日韩免费成人网| 亚洲男人电影天堂| 国产精品自在欧美一区| 欧美久久久久久蜜桃| 精品播放一区二区| 天天操天天色综合| 在线观看亚洲a| 亚洲国产激情av| 免费的成人av| 欧美一区二区免费视频| 亚洲无人区一区| 99re6这里只有精品视频在线观看| 欧美精品一区二区三区蜜桃| 日本午夜精品一区二区三区电影| 在线日韩一区二区| 亚洲综合一二区| 欧美一区二区三区日韩视频| 日韩激情av在线| 精品国产一区a| 成人禁用看黄a在线| 亚洲精品国产无天堂网2021| 欧美日韩亚洲丝袜制服| 久久久久97国产精华液好用吗| 亚洲伊人伊色伊影伊综合网| 99久久精品一区二区| 国产精品素人一区二区| 国产高清精品网站| 日韩精品在线一区二区| 全国精品久久少妇| 日韩美女一区二区三区四区| 亚洲综合激情另类小说区| 91亚洲男人天堂| 一区二区欧美在线观看| 欧美日韩精品久久久| 日韩不卡一区二区三区| 51精品视频一区二区三区| 日韩精品福利网| 欧美精品一区二区三区蜜桃视频| 国产伦精品一区二区三区免费|