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

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

?? gzip.c

?? 手機嵌入式Linux下可用的busybox源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
#ifdef DEBUGstatic void check_match (IPos start, IPos match, int length);#endif/* =========================================================================== * Update a hash value with the given input byte * IN  assertion: all calls to to UPDATE_HASH are made with consecutive *    input characters, so that a running hash key can be computed from the *    previous key instead of complete recalculation each time. */#define UPDATE_HASH(h,c) (h = (((h)<<H_SHIFT) ^ (c)) & HASH_MASK)/* =========================================================================== * Insert string s in the dictionary and set match_head to the previous head * of the hash chain (the most recent string with same hash key). Return * the previous length of the hash chain. * IN  assertion: all calls to to INSERT_STRING are made with consecutive *    input characters and the first MIN_MATCH bytes of s are valid *    (except for the last MIN_MATCH-1 bytes of the input file). */#define INSERT_STRING(s, match_head) \   (UPDATE_HASH(ins_h, window[(s) + MIN_MATCH-1]), \    prev[(s) & WMASK] = match_head = head[ins_h], \    head[ins_h] = (s))/* =========================================================================== * Initialize the "longest match" routines for a new file */static void lm_init(ush *flags){	register unsigned j;	/* Initialize the hash table. */	memzero((char *) head, HASH_SIZE * sizeof(*head));	/* prev will be initialized on the fly */	*flags |= SLOW;	/* ??? reduce max_chain_length for binary files */	strstart = 0;	block_start = 0L;	lookahead = read_buf((char *) window,						 sizeof(int) <= 2 ? (unsigned) WSIZE : 2 * WSIZE);	if (lookahead == 0 || lookahead == (unsigned) EOF) {		eofile = 1, lookahead = 0;		return;	}	eofile = 0;	/* Make sure that we always have enough lookahead. This is important	 * if input comes from a device such as a tty.	 */	while (lookahead < MIN_LOOKAHEAD && !eofile)		fill_window();	ins_h = 0;	for (j = 0; j < MIN_MATCH - 1; j++)		UPDATE_HASH(ins_h, window[j]);	/* If lookahead < MIN_MATCH, ins_h is garbage, but this is	 * not important since only literal bytes will be emitted.	 */}/* =========================================================================== * Set match_start to the longest match starting at the given string and * return its length. Matches shorter or equal to prev_length are discarded, * in which case the result is equal to prev_length and match_start is * garbage. * IN assertions: cur_match is the head of the hash chain for the current *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1 *//* For MSDOS, OS/2 and 386 Unix, an optimized version is in match.asm or * match.s. The code is functionally equivalent, so you can use the C version * if desired. */static int longest_match(IPos cur_match){	unsigned chain_length = max_chain_length;	/* max hash chain length */	register uch *scan = window + strstart;	/* current string */	register uch *match;		/* matched string */	register int len;			/* length of current match */	int best_len = prev_length;	/* best match length so far */	IPos limit =		strstart > (IPos) MAX_DIST ? strstart - (IPos) MAX_DIST : NIL;	/* Stop when cur_match becomes <= limit. To simplify the code,	 * we prevent matches with the string of window index 0.	 *//* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. * It is easy to get rid of this optimization if necessary. */#if HASH_BITS < 8 || MAX_MATCH != 258#  error Code too clever#endif	register uch *strend = window + strstart + MAX_MATCH;	register uch scan_end1 = scan[best_len - 1];	register uch scan_end = scan[best_len];	/* Do not waste too much time if we already have a good match: */	if (prev_length >= good_match) {		chain_length >>= 2;	}	Assert(strstart <= window_size - MIN_LOOKAHEAD,		   "insufficient lookahead");	do {		Assert(cur_match < strstart, "no future");		match = window + cur_match;		/* Skip to next match if the match length cannot increase		 * or if the match length is less than 2:		 */		if (match[best_len] != scan_end ||			match[best_len - 1] != scan_end1 ||			*match != *scan || *++match != scan[1])			continue;		/* The check at best_len-1 can be removed because it will be made		 * again later. (This heuristic is not always a win.)		 * It is not necessary to compare scan[2] and match[2] since they		 * are always equal when the other bytes match, given that		 * the hash keys are equal and that HASH_BITS >= 8.		 */		scan += 2, match++;		/* We check for insufficient lookahead only every 8th comparison;		 * the 256th check will be made at strstart+258.		 */		do {		} while (*++scan == *++match && *++scan == *++match &&				 *++scan == *++match && *++scan == *++match &&				 *++scan == *++match && *++scan == *++match &&				 *++scan == *++match && *++scan == *++match &&				 scan < strend);		len = MAX_MATCH - (int) (strend - scan);		scan = strend - MAX_MATCH;		if (len > best_len) {			match_start = cur_match;			best_len = len;			if (len >= nice_match)				break;			scan_end1 = scan[best_len - 1];			scan_end = scan[best_len];		}	} while ((cur_match = prev[cur_match & WMASK]) > limit			 && --chain_length != 0);	return best_len;}#ifdef DEBUG/* =========================================================================== * Check that the match at match_start is indeed a match. */static void check_match(IPos start, IPos match, int length){	/* check that the match is indeed a match */	if (memcmp((char *) window + match,			   (char *) window + start, length) != EQUAL) {		fprintf(stderr,				" start %d, match %d, length %d\n", start, match, length);		error_msg("invalid match");	}	if (verbose > 1) {		fprintf(stderr, "\\[%d,%d]", start - match, length);		do {			putc(window[start++], stderr);		} while (--length != 0);	}}#else#  define check_match(start, match, length)#endif/* =========================================================================== * Fill the window when the lookahead becomes insufficient. * Updates strstart and lookahead, and sets eofile if end of input file. * IN assertion: lookahead < MIN_LOOKAHEAD && strstart + lookahead > 0 * OUT assertions: at least one byte has been read, or eofile is set; *    file reads are performed for at least two bytes (required for the *    translate_eol option). */static void fill_window(){	register unsigned n, m;	unsigned more =		(unsigned) (window_size - (ulg) lookahead - (ulg) strstart);	/* Amount of free space at the end of the window. */	/* If the window is almost full and there is insufficient lookahead,	 * move the upper half to the lower one to make room in the upper half.	 */	if (more == (unsigned) EOF) {		/* Very unlikely, but possible on 16 bit machine if strstart == 0		 * and lookahead == 1 (input done one byte at time)		 */		more--;	} else if (strstart >= WSIZE + MAX_DIST) {		/* By the IN assertion, the window is not empty so we can't confuse		 * more == 0 with more == 64K on a 16 bit machine.		 */		Assert(window_size == (ulg) 2 * WSIZE, "no sliding with BIG_MEM");		memcpy((char *) window, (char *) window + WSIZE, (unsigned) WSIZE);		match_start -= WSIZE;		strstart -= WSIZE;		/* we now have strstart >= MAX_DIST: */		block_start -= (long) WSIZE;		for (n = 0; n < HASH_SIZE; n++) {			m = head[n];			head[n] = (Pos) (m >= WSIZE ? m - WSIZE : NIL);		}		for (n = 0; n < WSIZE; n++) {			m = prev[n];			prev[n] = (Pos) (m >= WSIZE ? m - WSIZE : NIL);			/* If n is not on any hash chain, prev[n] is garbage but			 * its value will never be used.			 */		}		more += WSIZE;	}	/* At this point, more >= 2 */	if (!eofile) {		n = read_buf((char *) window + strstart + lookahead, more);		if (n == 0 || n == (unsigned) EOF) {			eofile = 1;		} else {			lookahead += n;		}	}}/* =========================================================================== * Flush the current block, with given end-of-file flag. * IN assertion: strstart is set to the end of the current match. */#define FLUSH_BLOCK(eof) \   flush_block(block_start >= 0L ? (char*)&window[(unsigned)block_start] : \                (char*)NULL, (long)strstart - block_start, (eof))/* =========================================================================== * Same as above, but achieves better compression. We use a lazy * evaluation for matches: a match is finally adopted only if there is * no better match at the next window position. */static ulg deflate(){	IPos hash_head;				/* head of hash chain */	IPos prev_match;			/* previous match */	int flush;					/* set if current block must be flushed */	int match_available = 0;	/* set if previous match exists */	register unsigned match_length = MIN_MATCH - 1;	/* length of best match */	/* Process the input block. */	while (lookahead != 0) {		/* Insert the string window[strstart .. strstart+2] in the		 * dictionary, and set hash_head to the head of the hash chain:		 */		INSERT_STRING(strstart, hash_head);		/* Find the longest match, discarding those <= prev_length.		 */		prev_length = match_length, prev_match = match_start;		match_length = MIN_MATCH - 1;		if (hash_head != NIL && prev_length < max_lazy_match &&			strstart - hash_head <= MAX_DIST) {			/* To simplify the code, we prevent matches with the string			 * of window index 0 (in particular we have to avoid a match			 * of the string with itself at the start of the input file).			 */			match_length = longest_match(hash_head);			/* longest_match() sets match_start */			if (match_length > lookahead)				match_length = lookahead;			/* Ignore a length 3 match if it is too distant: */			if (match_length == MIN_MATCH				&& strstart - match_start > TOO_FAR) {				/* If prev_match is also MIN_MATCH, match_start is garbage				 * but we will ignore the current match anyway.				 */				match_length--;			}		}		/* If there was a match at the previous step and the current		 * match is not better, output the previous match:		 */		if (prev_length >= MIN_MATCH && match_length <= prev_length) {			check_match(strstart - 1, prev_match, prev_length);			flush =				ct_tally(strstart - 1 - prev_match,						 prev_length - MIN_MATCH);			/* Insert in hash table all strings up to the end of the match.			 * strstart-1 and strstart are already inserted.			 */			lookahead -= prev_length - 1;			prev_length -= 2;			do {				strstart++;				INSERT_STRING(strstart, hash_head);				/* strstart never exceeds WSIZE-MAX_MATCH, so there are				 * always MIN_MATCH bytes ahead. If lookahead < MIN_MATCH				 * these bytes are garbage, but it does not matter since the				 * next lookahead bytes will always be emitted as literals.				 */			} while (--prev_length != 0);			match_available = 0;			match_length = MIN_MATCH - 1;			strstart++;			if (flush)				FLUSH_BLOCK(0), block_start = strstart;		} else if (match_available) {			/* If there was no match at the previous position, output a			 * single literal. If there was a match but the current match			 * is longer, truncate the previous match to a single literal.			 */			Tracevv((stderr, "%c", window[strstart - 1]));			if (ct_tally(0, window[strstart - 1])) {				FLUSH_BLOCK(0), block_start = strstart;			}			strstart++;			lookahead--;		} else {			/* There is no previous match to compare with, wait for			 * the next step to decide.			 */			match_available = 1;			strstart++;			lookahead--;		}		Assert(strstart <= isize && lookahead <= isize, "a bit too far");		/* Make sure that we always have enough lookahead, except		 * at the end of the input file. We need MAX_MATCH bytes		 * for the next match, plus MIN_MATCH bytes to insert the		 * string following the next match.		 */		while (lookahead < MIN_LOOKAHEAD && !eofile)			fill_window();	}	if (match_available)		ct_tally(0, window[strstart - 1]);	return FLUSH_BLOCK(1);		/* eof */}/* gzip (GNU zip) -- compress files with zip algorithm and 'compress' interface * Copyright (C) 1992-1993 Jean-loup Gailly * The unzip code was written and put in the public domain by Mark Adler. * Portions of the lzw code are derived from the public domain 'compress' * written by Spencer Thomas, Joe Orost, James Woods, Jim McKie, Steve Davies, * Ken Turkowski, Dave Mack and Peter Jannesen. * * See the license_msg below and the file COPYING for the software license. * See the file algorithm.doc for the compression algorithms and file formats. *//* Compress files with zip algorithm and 'compress' interface. * See usage() and help() functions below for all options. * Outputs: *        file.gz:   compressed file with same mode, owner, and utimes *     or stdout with -c option or if stdin used as input. * If the output file name had to be truncated, the original name is kept * in the compressed file. */		/* configuration */typedef struct dirent dir_type;typedef RETSIGTYPE(*sig_type) (int);/* ======================================================================== */// int main (argc, argv)//    int argc;//    char **argv;int gzip_main(int argc, char **argv){	int result;	int inFileNum;	int outFileNum;	struct stat statBuf;	char *delFileName;	int tostdout = 0;	int fromstdin = 0;	int force = 0;	int opt;	int file_count;	while ((opt = getopt(argc, argv, "cf123456789dq")) != -1) {		switch (opt) {		case 'c':			tostdout = 1;			break;		case 'f':			force = 1;			break;		/* Ignore 1-9 (compression level) options */		case '1': case '2': case '3': case '4': case '5':

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美一二三区| 亚州成人在线电影| 日本成人中文字幕在线视频| 大尺度一区二区| 日韩三级电影网址| 一区二区三区免费看视频| 国产一区二区中文字幕| 欧美在线制服丝袜| 亚洲欧洲精品一区二区三区 | 成人精品电影在线观看| 欧美一区二区三区免费在线看| 亚洲免费观看高清完整版在线观看熊| 国模大尺度一区二区三区| 欧美久久久久久蜜桃| 一区二区在线电影| 97se狠狠狠综合亚洲狠狠| 国产欧美日韩在线观看| 国产美女精品一区二区三区| 日韩一区二区精品在线观看| 肉肉av福利一精品导航| 欧美性色欧美a在线播放| 亚洲精品乱码久久久久久| 99精品视频一区| 国产精品青草久久| 成人精品国产一区二区4080| 欧美国产精品一区| 国产91丝袜在线18| 欧美国产乱子伦 | 国产呦萝稀缺另类资源| 欧美大度的电影原声| 免费在线观看一区| 日韩欧美一区二区免费| 另类小说综合欧美亚洲| 欧美电视剧在线看免费| 国内精品国产成人国产三级粉色 | 亚洲最大成人综合| 在线日韩av片| 亚洲超碰97人人做人人爱| 欧美日韩国产首页在线观看| 日日摸夜夜添夜夜添亚洲女人| 51精品秘密在线观看| 激情久久五月天| 中文字幕精品一区二区三区精品| 成人av手机在线观看| 亚洲欧洲制服丝袜| 欧美久久高跟鞋激| 国产一区二区在线观看免费| 国产女主播一区| 色综合久久天天| 午夜精品在线看| 久久天天做天天爱综合色| 成人黄色免费短视频| 亚洲小少妇裸体bbw| 欧美成人a∨高清免费观看| 国产不卡在线视频| 尤物av一区二区| 日韩欧美一二三| 99久久精品一区| 午夜精品久久久久久久久| 精品国产免费人成电影在线观看四季 | 欧美一级二级在线观看| 国产成人av电影免费在线观看| 亚洲天堂av一区| 日韩一区二区免费视频| 99re8在线精品视频免费播放| 天天亚洲美女在线视频| 日本一区二区久久| 欧美日本高清视频在线观看| 国产精品综合久久| 天堂成人免费av电影一区| 久久九九影视网| 欧美日本乱大交xxxxx| 粉嫩av一区二区三区| 五月婷婷综合激情| 国产精品欧美久久久久无广告 | 国产日韩三级在线| 欧美日韩国产综合视频在线观看| 久久精品免费观看| 亚洲一区二区在线观看视频| 久久综合久久久久88| 欧美性受极品xxxx喷水| 成人性生交大片免费看在线播放 | 久久久久久亚洲综合影院红桃| 色综合色狠狠天天综合色| 国产在线视视频有精品| 亚洲成人av一区| 亚洲欧美自拍偷拍| 久久久久国产成人精品亚洲午夜| 欧美精品丝袜久久久中文字幕| av福利精品导航| 国产一区二区不卡| 日本aⅴ亚洲精品中文乱码| 亚洲欧洲综合另类| 中文字幕一区免费在线观看 | 91精品国产综合久久小美女| av在线播放成人| 高清不卡一区二区| 国内精品视频一区二区三区八戒| 日韩激情视频网站| 亚洲成人在线观看视频| 一区二区欧美在线观看| 亚洲欧洲日产国码二区| 国产欧美日韩一区二区三区在线观看| 精品剧情在线观看| 日韩欧美一二三四区| 日韩你懂的在线观看| 91麻豆精品国产无毒不卡在线观看| 色综合久久六月婷婷中文字幕| www.日韩大片| 99久久er热在这里只有精品15| 成人久久久精品乱码一区二区三区| 国产剧情一区二区| 国产精品一区二区三区99| 国产成人啪午夜精品网站男同| 久色婷婷小香蕉久久| 国产一区二区三区在线观看免费 | 奇米影视一区二区三区小说| 亚洲成在线观看| 青娱乐精品视频| 麻豆国产精品777777在线| 麻豆免费精品视频| 另类综合日韩欧美亚洲| 国产一区二区不卡老阿姨| 国产91清纯白嫩初高中在线观看| 不卡一区二区中文字幕| av影院午夜一区| 欧美视频在线一区二区三区| 欧美日韩国产精选| 日韩免费高清视频| 久久久精品tv| 伊人性伊人情综合网| 亚洲成人tv网| 精品一二三四区| 99久久久国产精品免费蜜臀| 欧美在线啊v一区| 日韩午夜三级在线| 国产视频一区在线播放| 亚洲欧美日韩人成在线播放| 日韩精品国产精品| 一区二区三区在线高清| 一区二区不卡在线播放 | 亚洲精品老司机| 亚洲国产欧美在线| 极品少妇xxxx精品少妇| 成a人片国产精品| 欧美蜜桃一区二区三区| 欧美精品一区二区不卡| 亚洲欧美另类图片小说| 日本特黄久久久高潮| 国产伦精一区二区三区| 色88888久久久久久影院野外| 91精品国产乱码久久蜜臀| 中文字幕av一区二区三区高 | 亚洲视频免费在线观看| 免费一区二区视频| av午夜一区麻豆| 欧美电影免费提供在线观看| 亚洲欧美偷拍三级| 国产一区二区日韩精品| 色婷婷综合久久久中文一区二区| 日韩欧美在线不卡| 有码一区二区三区| 国产成人精品免费网站| 欧美一区二区在线不卡| 国产精品久久久久久亚洲毛片| 日本不卡一区二区三区高清视频| 成人激情小说乱人伦| 精品免费国产一区二区三区四区| 《视频一区视频二区| 国产一区91精品张津瑜| 欧美狂野另类xxxxoooo| 国产精品久久久爽爽爽麻豆色哟哟| 欧美96一区二区免费视频| 色悠悠亚洲一区二区| 国产精品天美传媒| 激情文学综合网| 91精品午夜视频| 亚洲国产综合色| 97se亚洲国产综合自在线不卡| 亚洲人成伊人成综合网小说| 韩国女主播一区二区三区| 欧美精品aⅴ在线视频| 亚洲一区二区影院| 91视频com| 国产精品毛片高清在线完整版| 极品少妇一区二区| 精品久久免费看| 免费视频最近日韩| 在线观看91av| 日韩精品91亚洲二区在线观看| 欧美在线不卡视频| 亚洲与欧洲av电影| 在线观看免费一区| 亚洲国产日韩a在线播放性色| 日本精品视频一区二区三区| 亚洲人成网站影音先锋播放| 91麻豆成人久久精品二区三区| 国产精品美女久久久久高潮| 成人激情文学综合网| 国产精品女同一区二区三区|