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

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

?? funcs.c

?? sleuthit-2.09 一個磁盤的工具集
?? C
字號:
/* * Copyright (c) Christos Zoulas 2003. * All Rights Reserved. *  * 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. */#include "file.h"#include "magic.h"#include <stdarg.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#if defined(HAVE_WCHAR_H)#include <wchar.h>#endif#if defined(HAVE_WCTYPE_H)#include <wctype.h>#endif#if defined(HAVE_LIMITS_H)#include <limits.h>#endif#ifndef SIZE_T_MAX#ifdef __LP64__#define SIZE_T_MAX (size_t)0xfffffffffffffffffU#else#define SIZE_T_MAX (size_t)0xffffffffU#endif#endif#ifndef	lintFILE_RCSID("@(#)$File: funcs.c,v 1.32 2007/05/24 17:22:27 christos Exp $")#endif	/* lint */#ifndef HAVE_VSNPRINTFint vsnprintf(char *, size_t, const char *, va_list);#endif/* * Like printf, only we print to a buffer and advance it. */protected intfile_printf(struct magic_set *ms, const char *fmt, ...){	va_list ap;	size_t len, size;	char *buf;	va_start(ap, fmt);	if ((len = vsnprintf(ms->o.ptr, ms->o.left, fmt, ap)) >= ms->o.left) {		long diff;	/* XXX: really ptrdiff_t */		va_end(ap);		size = (ms->o.size - ms->o.left) + len + 1024;		if ((buf = realloc(ms->o.buf, size)) == NULL) {			file_oomem(ms, size);			return -1;		}		diff = ms->o.ptr - ms->o.buf;		ms->o.ptr = buf + diff;		ms->o.buf = buf;		ms->o.left = size - diff;		ms->o.size = size;		va_start(ap, fmt);		len = vsnprintf(ms->o.ptr, ms->o.left, fmt, ap);	}	va_end(ap);	ms->o.ptr += len;	ms->o.left -= len;	return 0;}/* * error - print best error message possible *//*VARARGS*/private voidfile_error_core(struct magic_set *ms, int error, const char *f, va_list va,    uint32_t lineno){	size_t len;	/* Only the first error is ok */	if (ms->haderr)		return;	len = 0;	if (lineno != 0) {		(void)snprintf(ms->o.buf, ms->o.size, "line %u: ", lineno);		len = strlen(ms->o.buf);	}	(void)vsnprintf(ms->o.buf + len, ms->o.size - len, f, va);	if (error > 0) {		len = strlen(ms->o.buf);		(void)snprintf(ms->o.buf + len, ms->o.size - len, " (%s)",		    strerror(error));	}	ms->haderr++;	ms->error = error;}/*VARARGS*/protected voidfile_error(struct magic_set *ms, int error, const char *f, ...){	va_list va;	va_start(va, f);	file_error_core(ms, error, f, va, 0);	va_end(va);}/* * Print an error with magic line number. *//*VARARGS*/protected voidfile_magerror(struct magic_set *ms, const char *f, ...){	va_list va;	va_start(va, f);	file_error_core(ms, 0, f, va, ms->line);	va_end(va);}protected voidfile_oomem(struct magic_set *ms, size_t len){	file_error(ms, errno, "cannot allocate %zu bytes", len);}protected voidfile_badseek(struct magic_set *ms){	file_error(ms, errno, "error seeking");}protected voidfile_badread(struct magic_set *ms){	file_error(ms, errno, "error reading");}#ifndef COMPILE_ONLYprotected intfile_buffer(struct magic_set *ms, int fd, const char *inname, const void *buf,    size_t nb){    int m;#ifdef __EMX__    if ((ms->flags & MAGIC_NO_CHECK_APPTYPE) == 0 && inname) {	switch (file_os2_apptype(ms, inname, buf, nb)) {	case -1:	    return -1;	case 0:	    break;	default:	    return 1;	}    }#endif    /* try compression stuff */    if ((ms->flags & MAGIC_NO_CHECK_COMPRESS) != 0 ||        (m = file_zmagic(ms, fd, inname, buf, nb)) == 0) {	/* Check if we have a tar file */	if ((ms->flags & MAGIC_NO_CHECK_TAR) != 0 ||	    (m = file_is_tar(ms, buf, nb)) == 0) {	    /* try tests in /etc/magic (or surrogate magic file) */	    if ((ms->flags & MAGIC_NO_CHECK_SOFT) != 0 ||		(m = file_softmagic(ms, buf, nb)) == 0) {		/* try known keywords, check whether it is ASCII */		if ((ms->flags & MAGIC_NO_CHECK_ASCII) != 0 ||		    (m = file_ascmagic(ms, buf, nb)) == 0) {		    /* abandon hope, all ye who remain here */		    if (file_printf(ms, ms->flags & MAGIC_MIME ?			(nb ? "application/octet-stream" :			    "application/empty") :			(nb ? "data" :			    "empty")) == -1)			    return -1;		    m = 1;		}	    }	}    }#ifdef BUILTIN_ELF    if ((ms->flags & MAGIC_NO_CHECK_ELF) == 0 && m == 1 && nb > 5 && fd != -1) {	/*	 * We matched something in the file, so this *might*	 * be an ELF file, and the file is at least 5 bytes	 * long, so if it's an ELF file it has at least one	 * byte past the ELF magic number - try extracting	 * information from the ELF headers that cannot easily	 * be extracted with rules in the magic file.	 */	(void)file_tryelf(ms, fd, buf, nb);    }#endif    return m;}#endifprotected intfile_reset(struct magic_set *ms){	if (ms->mlist == NULL) {		file_error(ms, 0, "no magic files loaded");		return -1;	}	ms->o.ptr = ms->o.buf;	ms->o.left = ms->o.size;	ms->haderr = 0;	ms->error = -1;	return 0;}#define OCTALIFY(n, o)	\	/*LINTED*/ \	(void)(*(n)++ = '\\', \	*(n)++ = (((uint32_t)*(o) >> 6) & 3) + '0', \	*(n)++ = (((uint32_t)*(o) >> 3) & 7) + '0', \	*(n)++ = (((uint32_t)*(o) >> 0) & 7) + '0', \	(o)++)protected const char *file_getbuffer(struct magic_set *ms){	char *pbuf, *op, *np;	size_t psize, len;	if (ms->haderr)		return NULL;	if (ms->flags & MAGIC_RAW)		return ms->o.buf;	len = ms->o.size - ms->o.left;	/* * 4 is for octal representation, + 1 is for NUL */	if (len > (SIZE_T_MAX - 1) / 4) {		file_oomem(ms, len);		return NULL;	}	psize = len * 4 + 1;	if (ms->o.psize < psize) {		if ((pbuf = realloc(ms->o.pbuf, psize)) == NULL) {			file_oomem(ms, psize);			return NULL;		}		ms->o.psize = psize;		ms->o.pbuf = pbuf;	}#if defined(HAVE_WCHAR_H) && defined(HAVE_MBRTOWC) && defined(HAVE_WCWIDTH)	{		mbstate_t state;		wchar_t nextchar;		int mb_conv = 1;		size_t bytesconsumed;		char *eop;		(void)memset(&state, 0, sizeof(mbstate_t));		np = ms->o.pbuf;		op = ms->o.buf;		eop = op + strlen(ms->o.buf);		while (op < eop) {			bytesconsumed = mbrtowc(&nextchar, op,			    (size_t)(eop - op), &state);			if (bytesconsumed == (size_t)(-1) ||			    bytesconsumed == (size_t)(-2)) {				mb_conv = 0;				break;			}			if (iswprint(nextchar)) {				(void)memcpy(np, op, bytesconsumed);				op += bytesconsumed;				np += bytesconsumed;			} else {				while (bytesconsumed-- > 0)					OCTALIFY(np, op);			}		}		*np = '\0';		/* Parsing succeeded as a multi-byte sequence */		if (mb_conv != 0)			return ms->o.pbuf;	}#endif	for (np = ms->o.pbuf, op = ms->o.buf; *op; op++) {		if (isprint((unsigned char)*op)) {			*np++ = *op;			} else {			OCTALIFY(np, op);		}	}	*np = '\0';	return ms->o.pbuf;}protected intfile_check_mem(struct magic_set *ms, unsigned int level){	size_t len;	if (level >= ms->c.len) {		len = (ms->c.len += 20) * sizeof(*ms->c.li);		ms->c.li = (ms->c.li == NULL) ? malloc(len) :		    realloc(ms->c.li, len);		if (ms->c.li == NULL) {			file_oomem(ms, len);			return -1;		}	}	ms->c.li[level].got_match = 0;#ifdef ENABLE_CONDITIONALS	ms->c.li[level].last_match = 0;	ms->c.li[level].last_cond = COND_NONE;#endif /* ENABLE_CONDITIONALS */	return 0;}/* * Yes these wrappers suffer from buffer overflows, but if your OS does not * have the real functions, maybe you should consider replacing your OS? */#ifndef HAVE_VSNPRINTFintvsnprintf(char *buf, size_t len, const char *fmt, va_list ap){	return vsprintf(buf, fmt, ap);}#endif#ifndef HAVE_SNPRINTF/*ARGSUSED*/intsnprintf(char *buf, size_t len, const char *fmt, ...){	int rv;	va_list ap;	va_start(ap, fmt);	rv = vsprintf(buf, fmt, ap);	va_end(ap);	return rv;}#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产精品劲爆| 色婷婷激情久久| 国产三级三级三级精品8ⅰ区| 久久精品国产第一区二区三区| 日韩一区二区三区四区五区六区| 麻豆freexxxx性91精品| 久久久久久毛片| 成人动漫一区二区三区| 亚洲午夜免费电影| 欧美一区二区网站| 国产精品99久久久久| 国产精品国产三级国产a| 欧洲av一区二区嗯嗯嗯啊| 日韩综合在线视频| 久久蜜桃香蕉精品一区二区三区| 欧美在线不卡一区| 日韩精品午夜视频| 国产女同性恋一区二区| 91国偷自产一区二区开放时间| 日韩在线观看一区二区| 久久久久久久久久久99999| 91视频你懂的| 免费观看在线综合色| 中文字幕中文字幕中文字幕亚洲无线 | 中文字幕一区二区不卡 | 国产精品1区2区| 亚洲码国产岛国毛片在线| 538在线一区二区精品国产| 国产福利精品导航| 一区二区三区四区五区视频在线观看 | 中文字幕亚洲区| 欧美裸体bbwbbwbbw| 国v精品久久久网| 五月天久久比比资源色| 欧美激情中文字幕一区二区| 欧美酷刑日本凌虐凌虐| 成人国产免费视频| 精品一区二区在线看| 亚洲美女一区二区三区| 2023国产精品自拍| 欧美精品久久一区二区三区| 成人av资源在线观看| 蜜桃视频第一区免费观看| 一区二区三区不卡视频| 欧美国产精品一区二区| 日韩美女天天操| 欧美色综合网站| 日韩一区二区三区免费看| www.成人在线| 国产一区二区不卡| 蜜桃av噜噜一区二区三区小说| 亚洲三级视频在线观看| 亚洲国产精品精华液ab| 久久久久久**毛片大全| 日韩欧美一级在线播放| 欧美三级日韩在线| 色屁屁一区二区| aaa欧美色吧激情视频| 国产成人夜色高潮福利影视| 久88久久88久久久| 秋霞av亚洲一区二区三| 天天综合色天天| 亚洲第一成人在线| 亚洲综合一二三区| 亚洲激情男女视频| 一级特黄大欧美久久久| 亚洲三级电影网站| 亚洲视频精选在线| 亚洲蜜臀av乱码久久精品| 最好看的中文字幕久久| 亚洲欧洲99久久| 亚洲色欲色欲www| 亚洲欧美色图小说| 一区二区三区av电影| 悠悠色在线精品| 亚洲激情av在线| 亚洲线精品一区二区三区八戒| 一区二区三区中文在线观看| 亚洲欧美另类图片小说| 一区av在线播放| 亚洲午夜日本在线观看| 天天操天天色综合| 美女网站一区二区| 国产一区二区调教| 国产mv日韩mv欧美| 成人av资源下载| 色88888久久久久久影院按摩| 91久久香蕉国产日韩欧美9色| 日本精品视频一区二区三区| 欧美视频一区二区| 日韩精品一区二区三区中文不卡| 欧美变态tickle挠乳网站| 国产日韩欧美高清在线| 中文字幕一区在线观看视频| 秋霞电影网一区二区| 国产乱码精品一品二品| 99精品一区二区| 欧美日韩精品一区二区天天拍小说| 欧美高清视频一二三区| 久久婷婷久久一区二区三区| 中文字幕在线一区二区三区| 亚洲高清中文字幕| 麻豆精品久久精品色综合| 东方aⅴ免费观看久久av| 一本大道久久a久久精品综合 | 欧美日韩视频一区二区| 日韩一区二区免费在线电影| 国产亚洲一区字幕| 亚洲专区一二三| 国产真实乱子伦精品视频| 99re这里只有精品视频首页| 欧美日韩精品免费观看视频| 久久久久国产精品厨房| 亚洲最大成人网4388xx| 韩国成人福利片在线播放| 91丨国产丨九色丨pron| 欧美一区二区三区免费视频| 日本一区二区三区国色天香 | 久久久天堂av| 亚洲国产综合人成综合网站| 国产一区二区三区四| 日本高清免费不卡视频| 精品国产乱子伦一区| 一区二区免费在线| 国产精品18久久久久久vr| 欧美色图免费看| 国产午夜久久久久| 日本系列欧美系列| 一本久久综合亚洲鲁鲁五月天| 精品美女一区二区| 亚洲va欧美va人人爽| 成人综合激情网| 日韩欧美综合一区| 亚洲午夜国产一区99re久久| 国内精品免费**视频| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 久久久一区二区三区| 日本最新不卡在线| 91免费观看视频在线| 欧美激情一区三区| 激情六月婷婷综合| 91精品福利在线一区二区三区 | 日韩电影网1区2区| 在线观看国产一区二区| 亚洲国产精品成人久久综合一区| 亚洲欧美色一区| 欧美午夜精品电影| 337p日本欧洲亚洲大胆精品 | 欧美专区在线观看一区| 国产精品网站在线| 国产一区二区三区不卡在线观看 | 91在线一区二区| 国产欧美一区二区三区在线看蜜臀| 日韩精品1区2区3区| 欧美视频在线一区二区三区| 亚洲人成网站色在线观看| 粉嫩aⅴ一区二区三区四区| 久久久久久日产精品| 精一区二区三区| 欧美成人在线直播| 久久机这里只有精品| 欧美电视剧在线观看完整版| 美洲天堂一区二卡三卡四卡视频| 91精品久久久久久久91蜜桃| 午夜精品一区二区三区电影天堂| 欧美日韩一区中文字幕| 亚洲国产日韩精品| 精品视频123区在线观看| 亚洲一级电影视频| 69久久夜色精品国产69蝌蚪网| 亚洲国产日韩综合久久精品| 欧美日韩亚洲综合| 日韩高清在线观看| 日韩欧美综合一区| 国产综合久久久久影院| 久久久综合视频| 99精品久久99久久久久| 亚洲精品视频观看| 欧美另类z0zxhd电影| 老汉av免费一区二区三区| 亚洲精品一区二区三区福利| 国产精品综合在线视频| 国产精品卡一卡二卡三| 91黄色在线观看| 美腿丝袜一区二区三区| 国产丝袜欧美中文另类| 成人h动漫精品| 亚洲成人动漫在线免费观看| 日韩一区二区三区视频在线观看| 国产资源精品在线观看| 亚洲欧洲精品一区二区三区| 欧美日韩一区中文字幕| 久久se精品一区精品二区| 国产精品免费免费| 欧美日韩一区二区在线视频| 久久99精品国产| 成人免费在线视频| 91精品久久久久久久久99蜜臂| 国产精品一区在线| 亚洲一区二区四区蜜桃|