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

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

?? compress.c

?? sleuthit-2.09 一個磁盤的工具集
?? C
字號:
/* * Copyright (c) Ian F. Darwin 1986-1995. * Software written by Ian F. Darwin and others; * maintained 1995-present by Christos Zoulas and others. *  * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice immediately at the beginning of the file, without modification, *    this list of conditions, and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. *   * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. *//* * compress routines: *	zmagic() - returns 0 if not recognized, uncompresses and prints *		   information if recognized *	uncompress(method, old, n, newch) - uncompress old into new,  *					    using method, return sizeof new */#include "file.h"#include "magic.h"#include <stdio.h>#include <stdlib.h>#ifdef HAVE_UNISTD_H#include <unistd.h>#endif#include <string.h>#include <errno.h>#include <sys/types.h>#include <sys/ioctl.h>#ifdef HAVE_SYS_WAIT_H#include <sys/wait.h>#endif#if defined(HAVE_SYS_TIME_H)#include <sys/time.h>#endif#ifdef HAVE_LIBZ#include <zlib.h>#endif#ifndef lintFILE_RCSID("@(#)$File: compress.c,v 1.51 2007/03/05 02:41:29 christos Exp $")#endifprivate struct {	const char *magic;	size_t maglen;	const char *const argv[3];	int silent;} compr[] = {	{ "\037\235", 2, { "gzip", "-cdq", NULL }, 1 },		/* compressed */	/* Uncompress can get stuck; so use gzip first if we have it	 * Idea from Damien Clark, thanks! */	{ "\037\235", 2, { "uncompress", "-c", NULL }, 1 },	/* compressed */	{ "\037\213", 2, { "gzip", "-cdq", NULL }, 1 },		/* gzipped */	{ "\037\236", 2, { "gzip", "-cdq", NULL }, 1 },		/* frozen */	{ "\037\240", 2, { "gzip", "-cdq", NULL }, 1 },		/* SCO LZH */	/* the standard pack utilities do not accept standard input */	{ "\037\036", 2, { "gzip", "-cdq", NULL }, 0 },		/* packed */	{ "PK\3\4",   4, { "gzip", "-cdq", NULL }, 1 },		/* pkzipped, */					    /* ...only first file examined */	{ "BZh",      3, { "bzip2", "-cd", NULL }, 1 },		/* bzip2-ed */};private size_t ncompr = sizeof(compr) / sizeof(compr[0]);#define NODATA ((size_t)~0)private ssize_t swrite(int, const void *, size_t);private size_t uncompressbuf(struct magic_set *, int, size_t,    const unsigned char *, unsigned char **, size_t);#ifdef HAVE_LIBZprivate size_t uncompressgzipped(struct magic_set *, const unsigned char *,    unsigned char **, size_t);#endifprotected intfile_zmagic(struct magic_set *ms, int fd, const char *name,    const unsigned char *buf, size_t nbytes){	unsigned char *newbuf = NULL;	size_t i, nsz;	int rv = 0;	if ((ms->flags & MAGIC_COMPRESS) == 0)		return 0;	for (i = 0; i < ncompr; i++) {		if (nbytes < compr[i].maglen)			continue;		if (memcmp(buf, compr[i].magic, compr[i].maglen) == 0 &&		    (nsz = uncompressbuf(ms, fd, i, buf, &newbuf,		    nbytes)) != NODATA) {			ms->flags &= ~MAGIC_COMPRESS;			rv = -1;			if (file_buffer(ms, -1, name, newbuf, nsz) == -1)				goto error;			if (file_printf(ms, " (") == -1)				goto error;			if (file_buffer(ms, -1, NULL, buf, nbytes) == -1)				goto error;			if (file_printf(ms, ")") == -1)				goto error;			rv = 1;			break;		}	}error:	if (newbuf)		free(newbuf);	ms->flags |= MAGIC_COMPRESS;	return rv;}/* * `safe' write for sockets and pipes. */private ssize_tswrite(int fd, const void *buf, size_t n){	int rv;	size_t rn = n;	do		switch (rv = write(fd, buf, n)) {		case -1:			if (errno == EINTR)				continue;			return -1;		default:			n -= rv;			buf = ((const char *)buf) + rv;			break;		}	while (n > 0);	return rn;}/* * `safe' read for sockets and pipes. */protected ssize_tsread(int fd, void *buf, size_t n, int canbepipe){	int rv, cnt;#ifdef FIONREAD	int t = 0;#endif	size_t rn = n;	if (fd == STDIN_FILENO)		goto nocheck;#ifdef FIONREAD	if ((canbepipe && (ioctl(fd, FIONREAD, &t) == -1)) || (t == 0)) {#ifdef FD_ZERO		for (cnt = 0;; cnt++) {			fd_set check;			struct timeval tout = {0, 100 * 1000};			int selrv;			FD_ZERO(&check);			FD_SET(fd, &check);			/*			 * Avoid soft deadlock: do not read if there			 * is nothing to read from sockets and pipes.			 */			selrv = select(fd + 1, &check, NULL, NULL, &tout);			if (selrv == -1) {				if (errno == EINTR || errno == EAGAIN)					continue;			} else if (selrv == 0 && cnt >= 5) {				return 0;			} else				break;		}#endif		(void)ioctl(fd, FIONREAD, &t);	}	if (t > 0 && (size_t)t < n) {		n = t;		rn = n;	}#endifnocheck:	do		switch ((rv = read(fd, buf, n))) {		case -1:			if (errno == EINTR)				continue;			return -1;		case 0:			return rn - n;		default:			n -= rv;			buf = ((char *)buf) + rv;			break;		}	while (n > 0);	return rn;}protected intfile_pipe2file(struct magic_set *ms, int fd, const void *startbuf,    size_t nbytes){	char buf[4096];	int r, tfd;	(void)strcpy(buf, "/tmp/file.XXXXXX");#ifndef HAVE_MKSTEMP	{		char *ptr = mktemp(buf);		tfd = open(ptr, O_RDWR|O_TRUNC|O_EXCL|O_CREAT, 0600);		r = errno;		(void)unlink(ptr);		errno = r;	}#else	tfd = mkstemp(buf);	r = errno;	(void)unlink(buf);	errno = r;#endif	if (tfd == -1) {		file_error(ms, errno,		    "cannot create temporary file for pipe copy");		return -1;	}	if (swrite(tfd, startbuf, nbytes) != (ssize_t)nbytes)		r = 1;	else {		while ((r = sread(fd, buf, sizeof(buf), 1)) > 0)			if (swrite(tfd, buf, (size_t)r) != r)				break;	}	switch (r) {	case -1:		file_error(ms, errno, "error copying from pipe to temp file");		return -1;	case 0:		break;	default:		file_error(ms, errno, "error while writing to temp file");		return -1;	}	/*	 * We duplicate the file descriptor, because fclose on a	 * tmpfile will delete the file, but any open descriptors	 * can still access the phantom inode.	 */	if ((fd = dup2(tfd, fd)) == -1) {		file_error(ms, errno, "could not dup descriptor for temp file");		return -1;	}	(void)close(tfd);	if (lseek(fd, (off_t)0, SEEK_SET) == (off_t)-1) {		file_badseek(ms);		return -1;	}	return fd;}#ifdef HAVE_LIBZ#define FHCRC		(1 << 1)#define FEXTRA		(1 << 2)#define FNAME		(1 << 3)#define FCOMMENT	(1 << 4)private size_tuncompressgzipped(struct magic_set *ms, const unsigned char *old,    unsigned char **newch, size_t n){	unsigned char flg = old[3];	size_t data_start = 10;	z_stream z;	int rc;	if (flg & FEXTRA) {		if (data_start+1 >= n)			return 0;		data_start += 2 + old[data_start] + old[data_start + 1] * 256;	}	if (flg & FNAME) {		while(data_start < n && old[data_start])			data_start++;		data_start++;	}	if(flg & FCOMMENT) {		while(data_start < n && old[data_start])			data_start++;		data_start++;	}	if(flg & FHCRC)		data_start += 2;	if (data_start >= n)		return 0;	if ((*newch = (unsigned char *)malloc(HOWMANY + 1)) == NULL) {		return 0;	}		/* XXX: const castaway, via strchr */	z.next_in = (Bytef *)strchr((const char *)old + data_start,	    old[data_start]);	z.avail_in = n - data_start;	z.next_out = *newch;	z.avail_out = HOWMANY;	z.zalloc = Z_NULL;	z.zfree = Z_NULL;	z.opaque = Z_NULL;	rc = inflateInit2(&z, -15);	if (rc != Z_OK) {		file_error(ms, 0, "zlib: %s", z.msg);		return 0;	}	rc = inflate(&z, Z_SYNC_FLUSH);	if (rc != Z_OK && rc != Z_STREAM_END) {		file_error(ms, 0, "zlib: %s", z.msg);		return 0;	}	n = (size_t)z.total_out;	(void)inflateEnd(&z);		/* let's keep the nul-terminate tradition */	(*newch)[n] = '\0';	return n;}#endifprivate size_tuncompressbuf(struct magic_set *ms, int fd, size_t method,    const unsigned char *old, unsigned char **newch, size_t n){	int fdin[2], fdout[2];	int r;#ifdef HAVE_LIBZ	if (method == 2)		return uncompressgzipped(ms, old, newch, n);#endif	(void)fflush(stdout);	(void)fflush(stderr);	if ((fd != -1 && pipe(fdin) == -1) || pipe(fdout) == -1) {		file_error(ms, errno, "cannot create pipe");			return NODATA;	}	switch (fork()) {	case 0:	/* child */		(void) close(0);		if (fd != -1) {		    (void) dup(fd);		    (void) lseek(0, (off_t)0, SEEK_SET);		} else {		    (void) dup(fdin[0]);		    (void) close(fdin[0]);		    (void) close(fdin[1]);		}		(void) close(1);		(void) dup(fdout[1]);		(void) close(fdout[0]);		(void) close(fdout[1]);#ifndef DEBUG		if (compr[method].silent)			(void)close(2);#endif		(void)execvp(compr[method].argv[0],		    (char *const *)(intptr_t)compr[method].argv);#ifdef DEBUG		(void)fprintf(stderr, "exec `%s' failed (%s)\n",		    compr[method].argv[0], strerror(errno));#endif		exit(1);		/*NOTREACHED*/	case -1:		file_error(ms, errno, "could not fork");		return NODATA;	default: /* parent */		(void) close(fdout[1]);		if (fd == -1) {			(void) close(fdin[0]);			/* 			 * fork again, to avoid blocking because both			 * pipes filled			 */			switch (fork()) {			case 0: /* child */				(void)close(fdout[0]);				if (swrite(fdin[1], old, n) != (ssize_t)n) {#ifdef DEBUG					(void)fprintf(stderr,					    "Write failed (%s)\n",					    strerror(errno));#endif					exit(1);				}				exit(0);				/*NOTREACHED*/			case -1:#ifdef DEBUG				(void)fprintf(stderr, "Fork failed (%s)\n",				    strerror(errno));#endif				exit(1);				/*NOTREACHED*/			default:  /* parent */				break;			}			(void) close(fdin[1]);			fdin[1] = -1;		}		if ((*newch = (unsigned char *) malloc(HOWMANY + 1)) == NULL) {#ifdef DEBUG			(void)fprintf(stderr, "Malloc failed (%s)\n",			    strerror(errno));#endif			n = 0;			goto err;		}		if ((r = sread(fdout[0], *newch, HOWMANY, 0)) <= 0) {#ifdef DEBUG			(void)fprintf(stderr, "Read failed (%s)\n",			    strerror(errno));#endif			free(*newch);			n = 0;			newch[0] = '\0';			goto err;		} else {			n = r;		} 		/* NUL terminate, as every buffer is handled here. */ 		(*newch)[n] = '\0';err:		if (fdin[1] != -1)			(void) close(fdin[1]);		(void) close(fdout[0]);#ifdef WNOHANG		while (waitpid(-1, NULL, WNOHANG) != -1)			continue;#else		(void)wait(NULL);#endif		return n;	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩精品一区二区三区| 91精品国产综合久久精品麻豆| 美女在线一区二区| 午夜欧美电影在线观看| 自拍偷拍欧美激情| 亚洲欧美日韩中文播放| 亚洲欧洲综合另类| 亚洲国产精品自拍| 日本不卡123| 麻豆91小视频| 国产成人精品影视| 成人福利在线看| 91久久奴性调教| 欧美性大战久久| 日韩免费在线观看| 亚洲国产精品成人久久综合一区| 综合久久一区二区三区| 亚州成人在线电影| 蜜桃av噜噜一区| 福利视频网站一区二区三区| 91免费国产在线| 欧美日韩精品免费观看视频 | 日本一区二区不卡视频| 亚洲欧洲av色图| 午夜欧美大尺度福利影院在线看| 丝袜美腿亚洲色图| 国产精品18久久久久久vr| 色噜噜狠狠色综合欧洲selulu| 欧美精品粉嫩高潮一区二区| 精品国产精品网麻豆系列| 日韩理论片网站| 青青草视频一区| 972aa.com艺术欧美| 欧美不卡在线视频| 一区二区不卡在线播放 | 日韩欧美123| 亚洲精品视频免费观看| 喷水一区二区三区| 99免费精品在线观看| 欧美日韩国产免费一区二区| 国产偷国产偷精品高清尤物| 亚洲一区二区视频在线| 国产suv精品一区二区三区| 欧美日韩国产小视频在线观看| 久久先锋影音av鲁色资源网| 一区二区三区精品视频| 国产精品羞羞答答xxdd| 3d动漫精品啪啪| 一区二区三区日本| 丁香桃色午夜亚洲一区二区三区| 欧美人成免费网站| 亚洲欧美aⅴ...| 成人激情小说乱人伦| 日韩一区二区精品在线观看| 一区二区三区视频在线看| 成人午夜免费电影| 久久午夜免费电影| 久久精品99国产精品日本| 欧美视频一区二区三区四区| 亚洲免费观看在线视频| 成人精品免费网站| 日本一区二区在线不卡| 狠狠色综合色综合网络| 精品国产成人系列| 免费av网站大全久久| 欧美剧在线免费观看网站| 一区二区三国产精华液| 在线观看国产91| 一区二区三区国产精华| 色菇凉天天综合网| 亚洲精品成人天堂一二三| 色欧美88888久久久久久影院| 国产精品色眯眯| voyeur盗摄精品| 1区2区3区欧美| 99re这里只有精品6| 亚洲三级久久久| 91国偷自产一区二区三区观看| 亚洲乱码国产乱码精品精98午夜| 99精品欧美一区二区三区综合在线| 国产精品久久久久久久岛一牛影视| 国产91露脸合集magnet| 中文字幕中文字幕中文字幕亚洲无线| 成人精品一区二区三区四区| 亚洲欧洲日产国产综合网| 一本到三区不卡视频| 亚洲一本大道在线| 精品欧美黑人一区二区三区| 国产一区二区免费看| 中文字幕的久久| 欧洲一区在线电影| 免费观看久久久4p| 久久精品一区蜜桃臀影院| 99精品视频在线免费观看| 亚洲成人动漫在线观看| 欧美大肚乱孕交hd孕妇| 国产传媒欧美日韩成人| 亚洲欧美成人一区二区三区| 欧美日韩电影在线播放| 狠狠色伊人亚洲综合成人| 中文在线资源观看网站视频免费不卡| 一本在线高清不卡dvd| 三级久久三级久久久| 欧美mv和日韩mv的网站| 91在线视频免费91| 日产精品久久久久久久性色 | 国产乱码精品一区二区三区av| 国产精品毛片无遮挡高清| 欧美日韩亚洲综合一区二区三区| 麻豆精品精品国产自在97香蕉| 国产精品欧美久久久久无广告| 在线精品视频一区二区| 久久99精品久久久久久久久久久久| 国产精品电影院| 日韩一级大片在线观看| 99v久久综合狠狠综合久久| 欧美aaa在线| 一区二区三区四区激情| 久久精品视频免费| 欧美精品三级在线观看| 成人avav影音| 经典三级在线一区| 亚洲成人动漫av| 亚洲免费在线看| 国产日产亚洲精品系列| 日韩免费成人网| 欧美日韩国产片| 91久久线看在观草草青青| 成人网在线播放| 狠狠色丁香久久婷婷综合_中| 亚洲尤物在线视频观看| 国产精品午夜电影| 久久久久久97三级| 日韩久久精品一区| 欧美久久久久久久久久| 欧美制服丝袜第一页| 成人国产精品视频| 国产高清久久久久| 精一区二区三区| 开心九九激情九九欧美日韩精美视频电影 | 国产一区二区三区久久悠悠色av| 香港成人在线视频| 亚洲国产另类av| 亚洲女性喷水在线观看一区| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 中文字幕中文字幕在线一区| 国产欧美一区二区精品婷婷 | 午夜影院在线观看欧美| 亚洲精品成人天堂一二三| 亚洲精品久久久久久国产精华液| 国产精品入口麻豆九色| 国产欧美日韩精品一区| 国产精品卡一卡二| 国产精品美女一区二区在线观看| 国产日韩欧美一区二区三区综合| 精品奇米国产一区二区三区| 久久综合狠狠综合久久综合88 | 中文字幕一区二区三区乱码在线| 国产精品污网站| 136国产福利精品导航| 一区二区在线观看不卡| 亚洲一区二区视频| 青青青伊人色综合久久| 麻豆成人91精品二区三区| 国产黄色成人av| 成人妖精视频yjsp地址| 91蜜桃网址入口| 欧美视频一区二区三区在线观看| 欧美精品久久久久久久多人混战| 日韩欧美国产精品一区| 久久久久久**毛片大全| 亚洲欧美一区二区三区极速播放 | 亚洲免费在线视频一区 二区| 一区二区三区欧美久久| 亚洲成人激情社区| 国产做a爰片久久毛片| 大胆亚洲人体视频| 欧美私模裸体表演在线观看| 欧美日本免费一区二区三区| 久久久久久久综合狠狠综合| 中文字幕日韩av资源站| 天天做天天摸天天爽国产一区| 久久www免费人成看片高清| 99在线精品视频| 337p亚洲精品色噜噜噜| 中文乱码免费一区二区| 亚洲国产精品一区二区www| 国产高清无密码一区二区三区| 色婷婷精品大在线视频| 日韩欧美一区在线观看| 国产精品伦理在线| 午夜亚洲国产au精品一区二区| 九九九久久久精品| 欧美在线视频日韩| 国产欧美一区二区精品仙草咪| 手机精品视频在线观看| 成人天堂资源www在线| 欧美妇女性影城| 亚洲美女少妇撒尿| 国产福利一区二区三区视频|