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

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

?? magic.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 <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <sys/types.h>#include <sys/param.h>	/* for MAXPATHLEN */#include <sys/stat.h>#ifdef QUICK#include <sys/mman.h>#endif#include <limits.h>	/* for PIPE_BUF */#if defined(HAVE_UTIMES)# include <sys/time.h>#elif defined(HAVE_UTIME)# if defined(HAVE_SYS_UTIME_H)#  include <sys/utime.h># elif defined(HAVE_UTIME_H)#  include <utime.h># endif#endif#ifdef HAVE_UNISTD_H#include <unistd.h>	/* for read() */#endif#ifdef HAVE_LOCALE_H#include <locale.h>#endif#include <netinet/in.h>		/* for byte swapping */#include "patchlevel.h"#ifndef	lintFILE_RCSID("@(#)$File: magic.c,v 1.41 2007/03/26 17:59:50 christos Exp $")#endif	/* lint */#ifdef __EMX__private char *apptypeName = NULL;protected int file_os2_apptype(struct magic_set *ms, const char *fn,    const void *buf, size_t nb);#endif /* __EMX__ */private void free_mlist(struct mlist *);private void close_and_restore(const struct magic_set *, const char *, int,    const struct stat *);private int info_from_stat(struct magic_set *, mode_t);#ifndef	STDIN_FILENO#define	STDIN_FILENO	0#endifpublic struct magic_set *magic_open(int flags){	struct magic_set *ms;	if ((ms = calloc((size_t)1, sizeof(struct magic_set))) == NULL)		return NULL;	if (magic_setflags(ms, flags) == -1) {		errno = EINVAL;		goto free1;	}	ms->o.ptr = ms->o.buf = malloc(ms->o.left = ms->o.size = 1024);	if (ms->o.buf == NULL)		goto free1;	ms->o.pbuf = malloc(ms->o.psize = 1024);	if (ms->o.pbuf == NULL)		goto free2;	ms->c.li = malloc((ms->c.len = 10) * sizeof(*ms->c.li));	if (ms->c.li == NULL)		goto free3;		ms->haderr = 0;	ms->error = -1;	ms->mlist = NULL;	ms->file = "unknown";	ms->line = 0;	return ms;free3:	free(ms->o.pbuf);free2:	free(ms->o.buf);free1:	free(ms);	return NULL;}private voidfree_mlist(struct mlist *mlist){	struct mlist *ml;	if (mlist == NULL)		return;	for (ml = mlist->next; ml != mlist;) {		struct mlist *next = ml->next;		struct magic *mg = ml->magic;		file_delmagic(mg, ml->mapped, ml->nmagic);		free(ml);		ml = next;	}	free(ml);}private intinfo_from_stat(struct magic_set *ms, mode_t md){	/* We cannot open it, but we were able to stat it. */	if (md & 0222)		if (file_printf(ms, "writable, ") == -1)			return -1;	if (md & 0111)		if (file_printf(ms, "executable, ") == -1)			return -1;	if (S_ISREG(md))		if (file_printf(ms, "regular file, ") == -1)			return -1;	if (file_printf(ms, "no read permission") == -1)		return -1;	return 0;}public voidmagic_close(struct magic_set *ms){	free_mlist(ms->mlist);	free(ms->o.pbuf);	free(ms->o.buf);	free(ms->c.li);	free(ms);}/* * load a magic file */public intmagic_load(struct magic_set *ms, const char *magicfile){	struct mlist *ml = file_apprentice(ms, magicfile, FILE_LOAD);	if (ml) {		free_mlist(ms->mlist);		ms->mlist = ml;		return 0;	}	return -1;}public intmagic_compile(struct magic_set *ms, const char *magicfile){	struct mlist *ml = file_apprentice(ms, magicfile, FILE_COMPILE);	free_mlist(ml);	return ml ? 0 : -1;}public intmagic_check(struct magic_set *ms, const char *magicfile){	struct mlist *ml = file_apprentice(ms, magicfile, FILE_CHECK);	free_mlist(ml);	return ml ? 0 : -1;}private voidclose_and_restore(const struct magic_set *ms, const char *name, int fd,    const struct stat *sb){	if (fd == STDIN_FILENO)		return;	(void) close(fd);	if ((ms->flags & MAGIC_PRESERVE_ATIME) != 0) {		/*		 * Try to restore access, modification times if read it.		 * This is really *bad* because it will modify the status		 * time of the file... And of course this will affect		 * backup programs		 */#ifdef HAVE_UTIMES		struct timeval  utsbuf[2];		utsbuf[0].tv_sec = sb->st_atime;		utsbuf[1].tv_sec = sb->st_mtime;		(void) utimes(name, utsbuf); /* don't care if loses */#elif defined(HAVE_UTIME_H) || defined(HAVE_SYS_UTIME_H)		struct utimbuf  utbuf;		utbuf.actime = sb->st_atime;		utbuf.modtime = sb->st_mtime;		(void) utime(name, &utbuf); /* don't care if loses */#endif	}}#ifndef COMPILE_ONLY/* * find type of named file */public const char *magic_file(struct magic_set *ms, const char *inname){	int	fd = 0;	int	rv = -1;	unsigned char *buf;	struct stat	sb;	ssize_t nbytes = 0;	/* number of bytes read from a datafile */	int	ispipe = 0;	/*	 * one extra for terminating '\0', and	 * some overlapping space for matches near EOF	 */#define SLOP (1 + sizeof(union VALUETYPE))	if ((buf = malloc(HOWMANY + SLOP)) == NULL)		return NULL;	if (file_reset(ms) == -1)		goto done;	switch (file_fsmagic(ms, inname, &sb)) {	case -1:		/* error */		goto done;	case 0:			/* nothing found */		break;	default:		/* matched it and printed type */		rv = 0;		goto done;	}	if (inname == NULL) {		fd = STDIN_FILENO;		if (fstat(fd, &sb) == 0 && S_ISFIFO(sb.st_mode))			ispipe = 1;	} else {		int flags = O_RDONLY|O_BINARY;		if (stat(inname, &sb) == 0 && S_ISFIFO(sb.st_mode)) {			flags |= O_NONBLOCK;			ispipe = 1;		}		errno = 0;		if ((fd = open(inname, flags)) < 0) {#ifdef __CYGWIN__		    char *tmp = alloca(strlen(inname) + 5);		    (void)strcat(strcpy(tmp, inname), ".exe");		    if ((fd = open(tmp, flags)) < 0) {#endif			if (info_from_stat(ms, sb.st_mode) == -1)			    goto done;			rv = 0;			goto done;#ifdef __CYGWIN__		    }#endif		}#ifdef O_NONBLOCK		if ((flags = fcntl(fd, F_GETFL)) != -1) {			flags &= ~O_NONBLOCK;			(void)fcntl(fd, F_SETFL, flags);		}#endif	}	/*	 * try looking at the first HOWMANY bytes	 */	if (ispipe) {		ssize_t r = 0;		while ((r = sread(fd, (void *)&buf[nbytes],		    (size_t)(HOWMANY - nbytes), 1)) > 0) {			nbytes += r;			if (r < PIPE_BUF) break;		}		if (nbytes == 0) {			/* We can not read it, but we were able to stat it. */			if (info_from_stat(ms, sb.st_mode) == -1)				goto done;			rv = 0;			goto done;		}	} else {		if ((nbytes = read(fd, (char *)buf, HOWMANY)) == -1) {			file_error(ms, errno, "cannot read `%s'", inname);			goto done;		}	}	if (nbytes == 0) {		if (file_printf(ms, (ms->flags & MAGIC_MIME) ?		    "application/x-empty" : "empty") == -1)			goto done;	} else if (nbytes == 1) {		if (file_printf(ms, "very short file (no magic)") == -1)			goto done;	} else {		(void)memset(buf + nbytes, 0, SLOP); /* NUL terminate */		if (file_buffer(ms, fd, inname, buf, (size_t)nbytes) == -1)			goto done;	}	rv = 0;done:	free(buf);	close_and_restore(ms, inname, fd, &sb);	return rv == 0 ? file_getbuffer(ms) : NULL;}public const char *magic_buffer(struct magic_set *ms, const void *buf, size_t nb){	if (file_reset(ms) == -1)		return NULL;	/*	 * The main work is done here!	 * We have the file name and/or the data buffer to be identified. 	 */	if (file_buffer(ms, -1, NULL, buf, nb) == -1) {		return NULL;	}	return file_getbuffer(ms);}#endifpublic const char *magic_error(struct magic_set *ms){	return ms->haderr ? ms->o.buf : NULL;}public intmagic_errno(struct magic_set *ms){	return ms->haderr ? ms->error : 0;}public intmagic_setflags(struct magic_set *ms, int flags){#if !defined(HAVE_UTIME) && !defined(HAVE_UTIMES)	if (flags & MAGIC_PRESERVE_ATIME)		return -1;#endif	ms->flags = flags;	return 0;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品福利一区二区三区免费视频| 久久精品人人做人人爽人人| 日韩美女视频一区二区在线观看| 久久精品亚洲一区二区三区浴池| 亚洲欧美日韩国产一区二区三区 | 亚洲激情成人在线| 日韩在线观看一区二区| 99久久精品国产一区| 精品国产sm最大网站免费看| 一级特黄大欧美久久久| 国产成人精品1024| 日韩亚洲国产中文字幕欧美| 自拍偷在线精品自拍偷无码专区| 激情欧美一区二区三区在线观看| 欧美丝袜丝nylons| 中文字幕在线观看不卡| 狠狠色狠狠色综合日日91app| 欧美视频在线一区| 亚洲伦在线观看| 国产高清精品网站| 精品日韩欧美一区二区| 视频一区欧美精品| 欧美在线免费播放| 亚洲精品成人在线| youjizz久久| 国产免费成人在线视频| 国产一区二区调教| 久久蜜桃香蕉精品一区二区三区| 美腿丝袜一区二区三区| 日韩一区二区三区免费观看| 视频在线观看91| 欧美日韩一级视频| 亚洲一级二级在线| 欧美日韩精品免费观看视频| 亚洲一区中文在线| 欧美日韩性生活| 香蕉影视欧美成人| 8x8x8国产精品| 奇米色777欧美一区二区| 69成人精品免费视频| 日韩精品一区第一页| 7777精品伊人久久久大香线蕉的 | 91精品国产色综合久久不卡电影| 亚洲一区二区偷拍精品| 欧美日韩亚洲国产综合| 日日夜夜免费精品| 欧美一区二区三区日韩视频| 麻豆国产精品一区二区三区| 欧美电影精品一区二区| 国内成人免费视频| 久久久不卡影院| 9i看片成人免费高清| 在线观看视频91| 一区二区三区四区视频精品免费 | 日本乱码高清不卡字幕| 亚洲老司机在线| 91.com在线观看| 韩国三级电影一区二区| 久久―日本道色综合久久| 国产v日产∨综合v精品视频| 中文字幕亚洲电影| 欧美日韩一区二区三区高清| 久久精品久久综合| 国产亚洲自拍一区| 色欧美日韩亚洲| 日韩va亚洲va欧美va久久| 欧美成人综合网站| 成人av网站在线观看| 亚洲国产人成综合网站| 精品国产乱码久久久久久图片| 懂色av一区二区三区蜜臀| 玉米视频成人免费看| 日韩欧美一区在线观看| 成人午夜看片网址| 日韩av中文字幕一区二区| 久久一二三国产| 在线一区二区视频| 九九在线精品视频| 亚洲自拍欧美精品| 国产日韩av一区二区| 欧美在线视频你懂得| 国内精品国产三级国产a久久| 亚洲欧美日韩国产另类专区| 精品国产亚洲一区二区三区在线观看| 成人精品亚洲人成在线| 日本不卡一二三| 亚洲精品免费播放| 久久精品一区二区三区av| 欧美日韩在线直播| av在线综合网| 九九九精品视频| 亚洲在线中文字幕| 久久蜜桃av一区二区天堂| 欧美美女直播网站| av不卡免费在线观看| 精品一区精品二区高清| 午夜不卡av在线| 亚洲色欲色欲www| 国产欧美一区视频| 精品入口麻豆88视频| 777久久久精品| 在线观看av一区二区| 99re热视频这里只精品| 国产剧情一区在线| 久久成人综合网| 日韩电影在线观看网站| 亚洲国产毛片aaaaa无费看| 国产精品毛片a∨一区二区三区| 欧美xxxxxxxx| 日韩欧美中文一区| 欧美一区2区视频在线观看| 在线观看亚洲精品视频| 波多野结衣中文字幕一区| 国产一区二区免费在线| 亚洲一区二区欧美| 国产精品国产三级国产普通话三级| 久久久亚洲午夜电影| 日韩午夜在线观看视频| 欧美午夜宅男影院| 一本久久a久久免费精品不卡| 亚洲成人黄色影院| 亚洲狠狠爱一区二区三区| 中文字幕中文字幕在线一区| 久久精品视频一区二区| 精品国产三级电影在线观看| 欧美日韩国产一二三| 91精品国产91久久综合桃花| 欧美体内she精高潮| 色呦呦国产精品| 91香蕉视频在线| 91色porny| 在线观看免费亚洲| 欧美亚洲动漫精品| 欧美色图12p| 欧美吞精做爰啪啪高潮| 97久久精品人人爽人人爽蜜臀| 不卡的av电影| 91老师国产黑色丝袜在线| 国产伦理精品不卡| 极品少妇xxxx精品少妇| 日日摸夜夜添夜夜添精品视频| 亚洲国产成人av好男人在线观看| 亚洲成人av资源| 性久久久久久久| 麻豆精品久久久| 国产一区二区三区| 一本色道久久加勒比精品| 欧洲av一区二区嗯嗯嗯啊| 在线观看日韩av先锋影音电影院| 色av一区二区| 欧美精品vⅰdeose4hd| 久久久亚洲精品一区二区三区 | 一本在线高清不卡dvd| 在线视频国内自拍亚洲视频| 欧美日韩大陆一区二区| 91精品国产免费久久综合| 欧美成va人片在线观看| 国产视频一区在线播放| **性色生活片久久毛片| 国产精品久久久久aaaa| 亚洲免费色视频| 日韩国产一二三区| 国产精品亚洲成人| 91丝袜美腿高跟国产极品老师| 在线亚洲免费视频| 日韩一级欧美一级| www国产成人免费观看视频 深夜成人网| 国产精品久久久久久久第一福利| 艳妇臀荡乳欲伦亚洲一区| 奇米色一区二区| 国产91在线|亚洲| 91日韩在线专区| 欧美一区二区三区日韩| 中文在线一区二区| 天天爽夜夜爽夜夜爽精品视频| 国产成人亚洲综合a∨婷婷图片| 色天使色偷偷av一区二区| 欧美一区在线视频| 亚洲啪啪综合av一区二区三区| 一区二区三区成人| 成人激情综合网站| 91精品国产入口| 亚洲视频一区在线观看| 久久精品国内一区二区三区| 欧美曰成人黄网| 久久久久国产精品麻豆ai换脸| 亚洲一区二区成人在线观看| 激情文学综合插| 在线观看免费视频综合| 久久久综合视频| 秋霞国产午夜精品免费视频| 99精品视频免费在线观看| 91精品国产91热久久久做人人| 中文字幕中文字幕中文字幕亚洲无线| 日韩av一区二| 欧美色涩在线第一页| 中文字幕国产一区| 国产91丝袜在线18| 精品国产伦理网| 男男视频亚洲欧美|