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

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

?? util.c

?? cygwin環境編譯,saac登陸服務端,石器2最新代碼
?? C
字號:
#define _UTIL_C_#include <sys/types.h>#include <sys/socket.h>#include <sys/time.h>#include <sys/stat.h>#include <netinet/in.h>#include <arpa/inet.h>#include <stdio.h>#include <string.h>#include <stdlib.h>#include <unistd.h>#include <dirent.h>#include <netdb.h>#include <errno.h>#include <ctype.h>#include "main.h"#include "util.h"#define min( x,y ) ({typeof(x) __x=(x),__y=(y);(__x < __y) ? __x : __y; })#define max( x,y ) ({typeof(x) __x=(x),__y=(y);(__x < __y) ? __y : __x; })#define IS_2BYTEWORD( _a_ ) ( (char)(0x80) <= (_a_) && (_a_) <= (char)(0xFF) )#define PRIME 211int hashpjw ( char* s ){    char *p;    unsigned int h= 0 ,g;    for( p = s ; *p ; p ++ ){        h = ( h<< 4 ) + (*p);        if( (g = h & 0xf0000000) != 0){            h = h ^ (g>>24);            h = h ^ g;        }    }    return h % PRIME;}int getHash ( char* s ){    int i;    int h=0;    for(i=0;; i++){        if( s[i] == 0 ){            break;        }        h += s[i];    }    return h;}void easyGetTokenFromString( char *src,int count,char*output,int len ){    int i;    int counter = 0;    if( len <= 0 )return;#define ISSPACETAB( c )   ( (c) == ' ' || (c) == '\t' )    for(i=0;;i++){        if( src[i]=='\0'){            output[0] = '\0';            return;        }        if( i > 0 && ! ISSPACETAB( src[i-1] ) &&            ! ISSPACETAB(  src[i] ) ){            continue;        }        if( ! ISSPACETAB( src[i]) ){            counter++;            if( counter == count){                int j;                for(j=0;j<len-1;j++){                    if( src[i+j] == '\0' ||                        ISSPACETAB( src[i+j] ) ){                        break;                    }                    output[j]=src[i+j];                }                output[j]='\0';                return;            }        }    }}void prepareDirectories(char *base){    int i;    char dname[1024];    for(i=0;i<256;i++){        int ret;        snprintf( dname , sizeof( dname ) , "%s/0x%x", base , i );        ret = mkdir( dname , 0755 );        if( ret <0 && errno != EEXIST ){            log( "mkdir error:%d %s: %s\n", ret ,strerror(errno), dname );        }        if( ret == 0 ) log(".");    }}void remove_r( char *s ){    int i;    for(i=0;;i++){        if(s[i]=='\r')s[i] =0;        if( s[i]==0)break;    }}void makeDirFilename( char *out , int outlen ,                  char *base , int dirchar , char *child ){    snprintf( out , outlen ,              "%s/0x%x/%s" , base ,              dirchar & 0xff , child );}int isFile( char *fn ){    FILE*fp=fopen(fn,"r");    if( fp){        fclose(fp);        return 1;    }    return 0;}int createFile( char *fn , char *line ){    FILE *fp = fopen( fn , "w" );    if( fp== NULL ){        return -1;    } else {        fprintf( fp , "%s" , line );        fclose(fp);        return 0;    }}#define BOOL int#define FALSE 0#define TRUE  1typedef struct tagEscapeChar{    char     escapechar;    char     escapedchar;}EscapeChar;static EscapeChar   escapeChar[]={    { '\n',   'n' },    { ',',    'c' },    { '|',    'z' },    { '\\',   'y' },};char*   makeStringFromEscaped( char* src ){    int     i;    int     srclen = strlen( src );    int     searchindex=0;    for( i = 0 ; i < srclen ; i ++ ){    	// for 2Byte Word    	if( IS_2BYTEWORD( src[i] ) ){            src[searchindex++] = src[i++];            src[searchindex++] = src[i];    	}else{        if( src[i] == '\\' ){            int j;            /*  戚及  儂卞墊仁  */            i++;            for( j = 0; j<sizeof(escapeChar)/sizeof(escapeChar[0]); j++){                if( escapeChar[j].escapedchar == src[i] ){                    /*  戚互巨旦弗□皿平乓仿分  */                    src[searchindex++] = escapeChar[j].escapechar;                    break;                }            }            /*  巨仿□支仃升公及引引戊疋□仄化云仁  */            if(escapeChar[j].escapedchar != src[i])            	src[searchindex++] = src[i];        }else{            src[searchindex++] = src[i];        }      }    }    src[searchindex] = '\0';    return src;}char *   makeEscapeString( char* src , char* dest, int sizeofdest){    int         i;    int     srclen = strlen( src );    int     destindex=0;    for( i = 0 ; i < srclen ; i ++ ){        BOOL dirty=FALSE;        int     j;        char    escapechar='\0';        if( destindex + 1 >= sizeofdest ) break;		if( IS_2BYTEWORD( src[i] ) ){	        if( destindex + 2 >= sizeofdest ) break;            dest[destindex] = src[i];            dest[destindex+1] = src[i+1];   	        destindex += 2;   	        i ++;   	        continue;		}        for( j = 0; j<sizeof(escapeChar)/sizeof(escapeChar[0]); j++){            if( src[i] == escapeChar[j].escapechar ){                dirty=TRUE;                escapechar= escapeChar[j].escapedchar;                break;            }		}		if( dirty == TRUE ){			if( destindex + 2 < sizeofdest ){				dest[destindex] = '\\';				dest[destindex+1] = escapechar;				destindex+=2;				dirty=TRUE;				continue;       /*  戚及  儂卞褡戈  */			}else{				dest[destindex] = '\0';				return dest;			}		}else{			dest[destindex] = src[i];			destindex++;		}	}    dest[destindex] = '\0';    return dest;}char *   makeEscapeString1( char* src , char* dest, int sizeofdest){    int         i;    int     srclen = strlen( src );    int     destindex=0;    for( i = 0 ; i < srclen ; i ++ ){        BOOL dirty=FALSE;        int     j;        char    escapechar='\0';        if( destindex + 1 >= sizeofdest )            /*  '\0'坌互簫曰卅中及匹仇仇匹蔽曰   */            break;	/*	// 蟈剩及ㄠ田奶玄  井升丹井毛民尼永弁		if( IS_2BYTEWORD( src[i] ) ){			// 蟈剩分[公及樺寧反ㄠ田奶玄芴坌卞褡引六月[			// 兇分仄ㄠ田奶玄仄井卅中樺寧反公丹仄卅中			// 公及引引ㄡ田奶玄鱉霜	        if( destindex + 2 >= sizeofdest )break;            dest[destindex] = src[i];            dest[destindex+1] = src[i+1];   	        destindex += 2;   	        i ++;   	        continue;		}	*/        for( j = 0; j<sizeof(escapeChar)/sizeof(escapeChar[0]); j++)            if( src[i] == escapeChar[j].escapechar ){                dirty=TRUE;                escapechar= escapeChar[j].escapedchar;                break;            }        if( dirty == TRUE ){            /*  巨旦弗□皿允月  儂分    */            if( destindex + 2 < sizeofdest ){                /*  +2 午中丹及反} '\\' 午 'n'及儀分   */                /*  酸曰  儂反蝸坌分    */                dest[destindex] = '\\';                dest[destindex+1] = escapechar;                destindex+=2;                dirty=TRUE;                continue;       /*  戚及  儂卞褡戈  */            }else{                /*  酸曰田永白央互尕簫仄化中月  */                dest[destindex] = '\0';                return dest;            }        }else{            dest[destindex] = src[i];            destindex++;        }    }    dest[destindex] = '\0';    return dest;}#undef BOOL#undef FALSE#undef TRUE/* 贊中strcatsafe[田永白央互丐孔木月樺寧反窒手仄卅中[ */intstrcatsafe( char *dest, int destlen , char *append ){    int dl = strlen( dest);    int al = strlen(append);    if( (dl + al) >= destlen ){        return -1;    } else {        strcat( dest, append );    }	return 0;}char *chop( char *s ){    int l = strlen(s);    if( l >= 1 ){        s[l-1]=0;    }    return s;}// CoolFish: Family 2001/5/30/*void easyGetTokenFromBuf(char *src, char delim, int count, char *output, int len){    int  i;    int  counter = 0;    int  wordflag = 0;        if( len <= 0 ) return;        #define ISSEPARATE( c )   ((c) == delim)        for( i=0; ; i++){    	if( src[i] == '\0' ){    		output[0] = '\0';    		return;    	}    	if(IS_2BYTEWORD(src[i])){    		if( i>0 && wordflag == 1 ){    			i++;    			wordflag = 1;    			continue;    		}    		if( i>0 && !ISSEPARATE(src[i-1]) && !ISSEPARATE(src[i])){    			i++;    			wordflag = 1;    			continue;    		}						    		wordflag = 1;    	}else{    		if( i>0 && wordflag ){    			wordflag = 0;    			continue;    		}    		if( i>0 && !ISSEPARATE(src[i-1]) && !ISSEPARATE(src[i])){    			wordflag = 0;     			continue;    		}    		wordflag = 0;    	}        if( !ISSEPARATE(src[i]) ){        	counter++;        	if( counter == count ){        		int j;        		for ( j=0; j<len-1; j++){        			if( IS_2BYTEWORD( src[i+j] ) ){		        		output[j] = src[i+(j++)];		        		output[j] = src[i+j];		        	}else{		        		if( src[i+j]=='\0' || ISSEPARATE(src[i+j])){		        			break;		        		}		        		output[j] = src[i+j];		        	}		        }		        output[j] = '\0';		        return;		}		if( wordflag )			i++;		if ( i==0)		{			if( IS_2BYTEWORD(src[i]) ){				wordflag = 1;				i++;			}			else			{				wordflag = 0;			}		}	}    }}*/char* strncpy2( char* dest, const char* src, size_t n ){    if( n > 0 ){        char*   d = dest;        const char*   s = src;        int i;        for( i=0; i<n ; i++ ){            if( *(s+i) == 0 ){                /*  戊疋□仄云歹勻兇日 NULL   儂毛  木月   */                *(d+i) = '\0';                return dest;            }            if( *(s+i) & 0x80 ){                *(d+i)  = *(s+i);                i++;                if( i>=n ){                    *(d+i-1)='\0';                    break;                }                *(d+i)  = *(s+i);            }else                *(d+i) = *(s+i);        }    }    return dest;}void strncpysafe( char* dest , const size_t n ,                  const char* src ,const int length ){    /*     * src 井日 dest 卞 length 戊疋□允月     * strcpy, strncpy 匹反 dest 方曰 戊疋□允月洶互     *   五中凜卞裟少午,丟乒伉陸失弁本旦互粟月.     * 仇及楮醒匹反}strlen( src ) 午 length 及凝今中幻丹     * (  端卞戊疋□允月洶) 午 dest 及扔奶術毛  屯化}     * strcpysafe 午  元儀毛允月[     */    int Short;    Short = min( strlen( src ) , length );    /* NULL  儂 毛嗶  仄兇  勝 */    if( n < Short + 1 ){        /*         * 田永白央互簫曰卅中及匹 n - 1(NULL  儂)         * 匹 strncpy 毛裟少         */        strncpy2( dest , src , n-1 );        dest[n-1]='\0';    }else if( n <= 0 ){        return;    }else{        /*         * 田永白央反蝸坌卞丐月及匹 Short 匹strncpy毛裟少         * 卅云 src 卞反 Short 及贏今  卞 NULL 互卅中及匹}         * dest 卞反 馨笛仄化云仁[         */        strncpy2( dest , src , Short );        dest[Short]= '\0';    }}void strcpysafe( char* dest ,size_t n ,const char* src ){    /*     * src 井日 dest 尺戊疋□允月.     * strcpy, strncpy 匹反 dest 方曰 戊疋□允月洶互     *   五中凜卞裟少午,丟乒伉陸失弁本旦互粟月.     * 仇木毛  什啃卞, strncpy 互丐月互 strlen( src ) 互 n 方曰     *   五中凜卞反, dest 及    互 NULL   儂午反卅日卅中.     *     * 仄兇互勻化 dest 及  五今方曰 src 及幻丹互贏中凜卞反     * n-1 匹 strncpy 毛允月. 凝今中凜反公及引引戊疋□允月     *     * n 互  及凜反云井仄仁卅月及匹  及凜反 窒手仄卅中[     *     */    // Nuke +1 (08/25): Danger if src=0    if (!src) {        *dest = '\0';        return;    }    if( n <= 0 )        /* 窒手仄卅中   */        return;    /*  仇及凜鰾匹} n >= 1 動曉互瑁爛  */    /*  NULL  儂毛嗶  仄化  勝允月  */    else if( n < strlen( src ) + 1 ){        /*         * 田永白央互簫曰卅中及匹 n - 1(NULL  儂)         * 匹 strncpy 毛裟少         */        strncpy2( dest , src , n-1 );        dest[n-1]='\0';    }else        strcpy( dest , src );}char * ScanOneByte( char *src, char delim ){	// Nuke	if (!src) return NULL;        //   儂  互卅仁卅月引匹腹綢        for( ;src[0] != '\0'; src ++ ){          if( IS_2BYTEWORD( src[0] ) ){              // 蟈剩分[公及樺寧反ㄠ田奶玄芴坌卞褡引六月[              // 兇分仄ㄠ田奶玄仄井卅中樺寧反公丹仄卅中              if( src[1] != 0 ){                  src ++;              }              continue;          }          //   剩分勻兇[仇仇匹覆擂及  儂午  勝          if( src[0] == delim ){              return src;          }        }        // 伙□皿  仃兇日葦勾井日卅井勻兇[        return NULL;}int easyGetTokenFromBuf( char* src ,char* delim ,int count, char* output , int len ){//ttom this function all change,copy from the second    int i;          /* 伙□皿  醒 */    int length =0;  /* 潸曰請仄兇  儂  及贏今 */    int addlen=0;   /* 簫今木月贏今 */    int oneByteMode = 0; /* ㄠ田奶玄乒□玉井" */    if( strlen( delim ) == 1 ){ // 腹綢互ㄠ田奶玄卅日ㄠ田奶玄乒□玉卞允月        oneByteMode = 1;// 公及端ㄡ田奶玄  儂反民尼永弁仄卅中    }    for( i =  0 ; i < count ; i ++ ){         char* last;         src += addlen;/* 心勾井勻兇贏今毛簫允 */               if( oneByteMode ){             // ㄠ田奶玄乒□玉分勻兇日仇切日匹腹綢             last = ScanOneByte( src, delim[0] );         }else{                 last  = strstr( src , delim );  /* 葦尥仃月 */         }         if( last == NULL ){            /*             * 心勾井日卅井勻兇及匹允屯化戊疋□仄化 return[            */            strcpysafe( output , len, src );            if( i == count - 1 )                /*切斤丹升心勾井勻兇*/                return 1;                                                                                                                           /*心勾井日卅井勻兇*/             return 0;          }                    /*           * 心勾井勻兇赭午  賡及匏  及犒毛菲戶月           * 勾引曰嗉濠日木化中月  儂  及贏今          */          length = last - src;                                                     /*           * 戚及伙□皿及啃卞心勾井勻兇贏今午 delim 及贏今毛簫仄化云仁          */          addlen= length + strlen( delim );       }       strncpysafe( output, len , src,length );       return 1;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人h精品动漫一区二区三区| 日韩一级黄色大片| 91精品欧美综合在线观看最新| 久久久精品一品道一区| 亚洲成人免费看| 91色.com| 亚洲国产成人一区二区三区| 婷婷激情综合网| 在线观看视频一区| 国产精品久久三区| 国产一本一道久久香蕉| 欧美喷水一区二区| 亚洲精品免费在线观看| 成人免费观看av| 久久免费精品国产久精品久久久久 | 国产成人精品www牛牛影视| 欧美日韩国产一二三| 一区二区三区精品在线| 91在线码无精品| 国产精品免费久久| 丁香另类激情小说| 中文字幕第一页久久| 国产美女精品一区二区三区| 欧美va在线播放| 久久99久久久欧美国产| 欧美成人官网二区| 麻豆91在线播放| 91精品国产乱| 久久国产三级精品| 久久亚洲综合色| 国产东北露脸精品视频| 日本一区二区三区高清不卡| 国产高清久久久| 国产精品视频免费看| www.日韩在线| 亚洲免费在线视频| 欧美午夜精品久久久久久超碰| 亚洲自拍另类综合| 欧美一区二区三区男人的天堂| 日本大胆欧美人术艺术动态| 日韩欧美国产综合在线一区二区三区| 免费人成在线不卡| 精品国产成人在线影院| 国产成人在线观看| 综合色中文字幕| 欧美日韩精品一区二区三区| 亚洲成人综合在线| 日韩一级在线观看| 国产a精品视频| 亚洲激情中文1区| 欧美三级视频在线观看| 免费在线观看不卡| 国产精品久久久久婷婷| 欧美中文字幕亚洲一区二区va在线| 天堂va蜜桃一区二区三区漫画版| 日韩欧美区一区二| 91麻豆精品一区二区三区| 日韩有码一区二区三区| 精品99一区二区三区| 色狠狠色狠狠综合| 久草在线在线精品观看| 综合婷婷亚洲小说| 91精品国产综合久久精品麻豆| 国产一区二区三区久久久| 亚洲特黄一级片| 精品播放一区二区| 欧美日韩欧美一区二区| 国产乱码精品一区二区三区忘忧草| 中文字幕中文字幕一区二区| 欧美日韩一二三| 成人动漫视频在线| 日韩黄色在线观看| 亚洲欧洲性图库| 日韩亚洲欧美高清| 91久久久免费一区二区| 国产激情偷乱视频一区二区三区| 亚洲一区二区欧美| 国产精品美女久久久久高潮| 欧美日本一区二区三区四区 | av亚洲精华国产精华| 奇米777欧美一区二区| 亚洲私人黄色宅男| 国产欧美一区二区三区沐欲| 欧美乱熟臀69xxxxxx| 99国产精品99久久久久久| 激情成人综合网| 日韩精品电影在线观看| 夜夜精品视频一区二区| 欧美高清在线视频| 精品国产免费人成在线观看| 欧美日韩大陆在线| 欧美最新大片在线看| 成人aaaa免费全部观看| 国模一区二区三区白浆| 免费人成精品欧美精品| 亚洲成人中文在线| 亚洲小说欧美激情另类| 亚洲欧洲精品一区二区精品久久久| 2020国产精品自拍| 欧美电影免费观看高清完整版在 | a美女胸又www黄视频久久| 蜜桃一区二区三区在线| 日韩avvvv在线播放| 午夜免费欧美电影| 亚洲午夜久久久久中文字幕久| 亚洲欧洲综合另类| 亚洲视频1区2区| 亚洲免费在线观看| 亚洲精品免费电影| 亚洲乱码国产乱码精品精小说| 中文字幕在线观看一区| 国产精品久久久久影院色老大| 久久久精品2019中文字幕之3| 久久噜噜亚洲综合| 国产人久久人人人人爽| 国产精品久久久久影院| 亚洲欧洲三级电影| 亚洲精品美国一| 亚洲无线码一区二区三区| 亚洲成人高清在线| 久久精品国产亚洲a| 国产乱码字幕精品高清av| 成人精品一区二区三区中文字幕| 成人开心网精品视频| 91麻豆视频网站| 欧美日韩免费视频| 日韩欧美一级在线播放| 久久先锋影音av| 亚洲欧洲精品一区二区三区 | 亚洲欧洲制服丝袜| 亚洲国产精品人人做人人爽| 天堂va蜜桃一区二区三区| 久久99久久精品欧美| 国产精品白丝jk黑袜喷水| 99久久免费精品高清特色大片| 91极品美女在线| 在线播放视频一区| 亚洲精品福利视频网站| 日韩精品一级中文字幕精品视频免费观看 | 亚洲一区在线免费观看| 日韩成人午夜精品| 国产白丝网站精品污在线入口| 91欧美一区二区| 欧美一区在线视频| 中文字幕成人在线观看| 亚洲卡通动漫在线| 七七婷婷婷婷精品国产| 成人激情开心网| 91精品国产色综合久久| 欧美激情一区二区三区| 亚洲国产成人tv| 成人免费三级在线| 欧美日韩视频在线第一区 | 久久先锋影音av| 亚洲一区二区偷拍精品| 精品一区二区在线视频| 色婷婷综合在线| 久久久国产一区二区三区四区小说| 亚洲精品va在线观看| 国产精品一二三| 欧美理论电影在线| 亚洲视频一区二区免费在线观看| 蜜臀av一区二区在线观看| jizz一区二区| 久久蜜桃av一区精品变态类天堂| 亚洲制服欧美中文字幕中文字幕| 国产原创一区二区三区| 欧美日韩成人一区| 亚洲男人的天堂在线观看| 国产aⅴ精品一区二区三区色成熟| 欧美日韩一区精品| 一区二区三区中文在线| 国产不卡高清在线观看视频| 日韩欧美电影在线| 亚洲国产aⅴ成人精品无吗| av一本久道久久综合久久鬼色| 久久综合资源网| 另类小说视频一区二区| 欧美精品亚洲二区| 亚洲专区一二三| 在线免费观看一区| 亚洲视频免费在线观看| 成人午夜电影网站| 国产亚洲一区二区三区| 国产综合久久久久久久久久久久| 欧美精品 日韩| 午夜精品视频一区| 欧美另类高清zo欧美| 一区二区理论电影在线观看| 99国产精品99久久久久久| 欧美激情综合五月色丁香小说| 国产真实精品久久二三区| 欧美tk丨vk视频| 久久国产精品99精品国产| 欧美一卡2卡三卡4卡5免费| 偷拍与自拍一区| 日韩视频一区二区三区在线播放| 天天影视网天天综合色在线播放| 欧美中文字幕亚洲一区二区va在线 | 制服丝袜国产精品|