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

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

?? file.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. *//* * file - find type of a file or files - main program. */#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 RESTORE_TIME# if (__COHERENT__ >= 0x420)#  include <sys/utime.h># else#  ifdef USE_UTIMES#   include <sys/time.h>#  else#   include <utime.h>#  endif# endif#endif#ifdef HAVE_UNISTD_H#include <unistd.h>	/* for read() */#endif#ifdef HAVE_LOCALE_H#include <locale.h>#endif#ifdef HAVE_WCHAR_H#include <wchar.h>#endif#ifdef HAVE_GETOPT_H#include <getopt.h>	/* for long options (is this portable?)*/#else#undef HAVE_GETOPT_LONG#endif#include <netinet/in.h>		/* for byte swapping */#include "patchlevel.h"#ifndef	lintFILE_RCSID("@(#)$File: file.c,v 1.111 2007/05/08 14:44:18 christos Exp $")#endif	/* lint */#ifdef S_IFLNK#define SYMLINKFLAG "Lh"#else#define SYMLINKFLAG ""#endif# define USAGE  "Usage: %s [-bcik" SYMLINKFLAG "nNrsvz0] [-e test] [-f namefile] [-F separator] [-m magicfiles] file...\n       %s -C -m magicfiles\n"#ifndef MAXPATHLEN#define	MAXPATHLEN	512#endifprivate int 		/* Global command-line options 		*/	bflag = 0,	/* brief output format	 		*/	nopad = 0,	/* Don't pad output			*/	nobuffer = 0,   /* Do not buffer stdout 		*/	nulsep = 0;	/* Append '\0' to the separator		*/private const char *magicfile = 0;	/* where the magic is	*/private const char *default_magicfile = MAGIC;private const char *separator = ":";	/* Default field separator	*/private char *progname;		/* used throughout 		*/private struct magic_set *magic;private void unwrap(char *);private void usage(void);#ifdef HAVE_GETOPT_LONGprivate void help(void);#endif#if 0private int byteconv4(int, int, int);private short byteconv2(int, int, int);#endifint main(int, char *[]);private void process(const char *, int);private void load(const char *, int);/* * main - parse arguments and handle options */intmain(int argc, char *argv[]){	int c, i;	int action = 0, didsomefiles = 0, errflg = 0;	int flags = 0;	char *home, *usermagic;	struct stat sb;	static const char hmagic[] = "/.magic";#define OPTSTRING	"bcCde:f:F:hikLm:nNprsvz0"#ifdef HAVE_GETOPT_LONG	int longindex;	static const struct option long_options[] =	{		{"version", 0, 0, 'v'},		{"help", 0, 0, 0},		{"brief", 0, 0, 'b'},		{"checking-printout", 0, 0, 'c'},		{"debug", 0, 0, 'd'},		{"exclude", 1, 0, 'e' },		{"files-from", 1, 0, 'f'},		{"separator", 1, 0, 'F'},		{"mime", 0, 0, 'i'},		{"keep-going", 0, 0, 'k'},#ifdef S_IFLNK		{"dereference", 0, 0, 'L'},		{"no-dereference", 0, 0, 'h'},#endif		{"magic-file", 1, 0, 'm'},#if defined(HAVE_UTIME) || defined(HAVE_UTIMES)		{"preserve-date", 0, 0, 'p'},#endif		{"uncompress", 0, 0, 'z'},		{"raw", 0, 0, 'r'},		{"no-buffer", 0, 0, 'n'},		{"no-pad", 0, 0, 'N'},		{"special-files", 0, 0, 's'},		{"compile", 0, 0, 'C'},		{"print0", 0, 0, '0'},		{0, 0, 0, 0},	};#endif	static const struct {		const char *name;		int value;	} nv[] = {		{ "apptype",	MAGIC_NO_CHECK_APPTYPE },		{ "ascii",	MAGIC_NO_CHECK_ASCII },		{ "compress",	MAGIC_NO_CHECK_COMPRESS },		{ "elf",	MAGIC_NO_CHECK_ELF },		{ "fortran",	MAGIC_NO_CHECK_FORTRAN },		{ "soft",	MAGIC_NO_CHECK_SOFT },		{ "tar",	MAGIC_NO_CHECK_TAR },		{ "tokens",	MAGIC_NO_CHECK_TOKENS },		{ "troff",	MAGIC_NO_CHECK_TROFF },	};#ifdef LC_CTYPE	/* makes islower etc work for other langs */	(void)setlocale(LC_CTYPE, "");#endif#ifdef __EMX__	/* sh-like wildcard expansion! Shouldn't hurt at least ... */	_wildcard(&argc, &argv);#endif	if ((progname = strrchr(argv[0], '/')) != NULL)		progname++;	else		progname = argv[0];	magicfile = default_magicfile;	if ((usermagic = getenv("MAGIC")) != NULL)		magicfile = usermagic;	else		if ((home = getenv("HOME")) != NULL) {			if ((usermagic = malloc(strlen(home)			    + sizeof(hmagic))) != NULL) {				(void)strcpy(usermagic, home);				(void)strcat(usermagic, hmagic);				if (stat(usermagic, &sb)<0) 					free(usermagic);				else					magicfile = usermagic;			}		}#ifdef S_IFLNK	flags |= getenv("POSIXLY_CORRECT") ? MAGIC_SYMLINK : 0;#endif#ifndef HAVE_GETOPT_LONG	while ((c = getopt(argc, argv, OPTSTRING)) != -1)#else	while ((c = getopt_long(argc, argv, OPTSTRING, long_options,	    &longindex)) != -1)#endif		switch (c) {#ifdef HAVE_GETOPT_LONG		case 0 :			if (longindex == 1)				help();			break;#endif		case '0':			nulsep = 1;			break;		case 'b':			++bflag;			break;		case 'c':			action = FILE_CHECK;			break;		case 'C':			action = FILE_COMPILE;			break;		case 'd':			flags |= MAGIC_DEBUG|MAGIC_CHECK;			break;		case 'e':			for (i = 0; i < sizeof(nv) / sizeof(nv[0]); i++)				if (strcmp(nv[i].name, optarg) == 0)					break;			if (i == sizeof(nv) / sizeof(nv[0]))				errflg++;			else				flags |= nv[i].value;			break;					case 'f':			if(action)				usage();			load(magicfile, flags);			unwrap(optarg);			++didsomefiles;			break;		case 'F':			separator = optarg;			break;		case 'i':			flags |= MAGIC_MIME;			break;		case 'k':			flags |= MAGIC_CONTINUE;			break;		case 'm':			magicfile = optarg;			break;		case 'n':			++nobuffer;			break;		case 'N':			++nopad;			break;#if defined(HAVE_UTIME) || defined(HAVE_UTIMES)		case 'p':			flags |= MAGIC_PRESERVE_ATIME;			break;#endif		case 'r':			flags |= MAGIC_RAW;			break;		case 's':			flags |= MAGIC_DEVICES;			break;		case 'v':			(void)fprintf(stdout, "%s-%d.%.2d\n", progname,				       FILE_VERSION_MAJOR, patchlevel);			(void)fprintf(stdout, "magic file from %s\n",				       magicfile);			return 1;		case 'z':			flags |= MAGIC_COMPRESS;			break;#ifdef S_IFLNK		case 'L':			flags |= MAGIC_SYMLINK;			break;		case 'h':			flags &= ~MAGIC_SYMLINK;			break;#endif		case '?':		default:			errflg++;			break;		}	if (errflg) {		usage();	}	switch(action) {	case FILE_CHECK:	case FILE_COMPILE:		magic = magic_open(flags|MAGIC_CHECK);		if (magic == NULL) {			(void)fprintf(stderr, "%s: %s\n", progname,			    strerror(errno));			return 1;		}		c = action == FILE_CHECK ? magic_check(magic, magicfile) :		    magic_compile(magic, magicfile);		if (c == -1) {			(void)fprintf(stderr, "%s: %s\n", progname,			    magic_error(magic));			return -1;		}		return 0;	default:		load(magicfile, flags);		break;	}	if (optind == argc) {		if (!didsomefiles) {			usage();		}	}	else {		int i, wid, nw;		for (wid = 0, i = optind; i < argc; i++) {			nw = file_mbswidth(argv[i]);			if (nw > wid)				wid = nw;		}		for (; optind < argc; optind++)			process(argv[optind], wid);	}	magic_close(magic);	return 0;}private void/*ARGSUSED*/load(const char *m, int flags){	if (magic || m == NULL)		return;	magic = magic_open(flags);	if (magic == NULL) {		(void)fprintf(stderr, "%s: %s\n", progname, strerror(errno));		exit(1);	}	if (magic_load(magic, magicfile) == -1) {		(void)fprintf(stderr, "%s: %s\n",		    progname, magic_error(magic));		exit(1);	}}/* * unwrap -- read a file of filenames, do each one. */private voidunwrap(char *fn){	char buf[MAXPATHLEN];	FILE *f;	int wid = 0, cwid;	size_t len;	if (strcmp("-", fn) == 0) {		f = stdin;		wid = 1;	} else {		if ((f = fopen(fn, "r")) == NULL) {			(void)fprintf(stderr, "%s: Cannot open `%s' (%s).\n",			    progname, fn, strerror(errno));			exit(1);		}		while (fgets(buf, MAXPATHLEN, f) != NULL) {			len = strlen(buf);			if (len > 0 && buf[len - 1] == '\n')				buf[len - 1] = '\0';			cwid = file_mbswidth(buf);			if (cwid > wid)				wid = cwid;		}		rewind(f);	}	while (fgets(buf, MAXPATHLEN, f) != NULL) {		len = strlen(buf);		if (len > 0 && buf[len - 1] == '\n')			buf[len - 1] = '\0';		process(buf, wid);		if(nobuffer)			(void)fflush(stdout);	}	(void)fclose(f);}/* * Called for each input file on the command line (or in a list of files) */private voidprocess(const char *inname, int wid){	const char *type;	int std_in = strcmp(inname, "-") == 0;	if (wid > 0 && !bflag) {		(void)printf("%s", std_in ? "/dev/stdin" : inname);		if (nulsep)			(void)putc('\0', stdout);		else			(void)printf("%s", separator);		(void)printf("%*s ",		    (int) (nopad ? 0 : (wid - file_mbswidth(inname))), "");	}	type = magic_file(magic, std_in ? NULL : inname);	if (type == NULL)		(void)printf("ERROR: %s\n", magic_error(magic));	else		(void)printf("%s\n", type);}#if 0/* * byteconv4 * Input: *	from		4 byte quantity to convert *	same		whether to perform byte swapping *	big_endian	whether we are a big endian host */private intbyteconv4(int from, int same, int big_endian){	if (same)		return from;	else if (big_endian) {		/* lsb -> msb conversion on msb */		union {			int i;			char c[4];		} retval, tmpval;		tmpval.i = from;		retval.c[0] = tmpval.c[3];		retval.c[1] = tmpval.c[2];		retval.c[2] = tmpval.c[1];		retval.c[3] = tmpval.c[0];		return retval.i;	}	else		return ntohl(from);	/* msb -> lsb conversion on lsb */}/* * byteconv2 * Same as byteconv4, but for shorts */private shortbyteconv2(int from, int same, int big_endian){	if (same)		return from;	else if (big_endian) {		/* lsb -> msb conversion on msb */		union {			short s;			char c[2];		} retval, tmpval;		tmpval.s = (short) from;		retval.c[0] = tmpval.c[1];		retval.c[1] = tmpval.c[0];		return retval.s;	}	else		return ntohs(from);	/* msb -> lsb conversion on lsb */}#endifsize_tfile_mbswidth(const char *s){#if defined(HAVE_WCHAR_H) && defined(HAVE_MBRTOWC) && defined(HAVE_WCWIDTH)	size_t bytesconsumed, old_n, n, width = 0;	mbstate_t state;	wchar_t nextchar;	(void)memset(&state, 0, sizeof(mbstate_t));	old_n = n = strlen(s);	while (n > 0) {		bytesconsumed = mbrtowc(&nextchar, s, n, &state);		if (bytesconsumed == (size_t)(-1) ||		    bytesconsumed == (size_t)(-2)) {			/* Something went wrong, return something reasonable */			return old_n;		}		if (s[0] == '\n') {			/*			 * do what strlen() would do, so that caller			 * is always right			 */			width++;		} else			width += wcwidth(nextchar);		s += bytesconsumed, n -= bytesconsumed;	}	return width;#else	return strlen(s);#endif}private voidusage(void){	(void)fprintf(stderr, USAGE, progname, progname);#ifdef HAVE_GETOPT_LONG	(void)fputs("Try `file --help' for more information.\n", stderr);#endif	exit(1);}#ifdef HAVE_GETOPT_LONGprivate voidhelp(void){	(void)puts("Usage: file [OPTION]... [FILE]...\n""Determine file type of FILEs.\n""\n""  -m, --magic-file LIST      use LIST as a colon-separated list of magic\n""                               number files\n""  -z, --uncompress           try to look inside compressed files\n""  -b, --brief                do not prepend filenames to output lines\n""  -c, --checking-printout    print the parsed form of the magic file, use in\n""                               conjunction with -m to debug a new magic file\n""                               before installing it\n""  -e, --exclude              exclude test from the list of test to be\n""                               performed for file. Valid tests are:\n""                               ascii, apptype, elf, compress, soft, tar\n""  -f, --files-from FILE      read the filenames to be examined from FILE\n""  -F, --separator string     use string as separator instead of `:'\n""  -i, --mime                 output mime type strings\n""  -k, --keep-going           don't stop at the first match\n""  -L, --dereference          causes symlinks to be followed\n""  -n, --no-buffer            do not buffer output\n""  -N, --no-pad               do not pad output\n""  -p, --preserve-date        preserve access times on files\n""  -r, --raw                  don't translate unprintable chars to \\ooo\n""  -s, --special-files        treat special (block/char devices) files as\n""                             ordinary ones\n""or\n""      --help                 display this help and exit\n""or\n""      --version              output version information and exit\n""or\n""  -C, --compile              compile file specified by -m\n");	exit(0);}#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99在线精品一区二区三区| 亚洲影院在线观看| 国产在线精品一区二区夜色| 欧美成人video| 青青草97国产精品免费观看| 欧美精品一区视频| 国产精品乡下勾搭老头1| 国产视频不卡一区| 91浏览器在线视频| 午夜精品一区二区三区三上悠亚| 欧美久久久久久蜜桃| 五月婷婷色综合| 欧美大片拔萝卜| 成人黄色片在线观看| 一区二区三区美女| 日韩精品自拍偷拍| av网站一区二区三区| 午夜精品免费在线| 337p日本欧洲亚洲大胆精品 | 日韩一区二区电影| 国产一区二区91| 亚洲欧美激情插| 欧美日本在线观看| 国内精品伊人久久久久av一坑 | 日韩高清一区在线| 久久日韩精品一区二区五区| 91女厕偷拍女厕偷拍高清| 免费观看91视频大全| 最新久久zyz资源站| 欧美一级黄色大片| 91丝袜呻吟高潮美腿白嫩在线观看| 午夜视频在线观看一区二区| 国产日韩欧美在线一区| 在线观看视频91| 久88久久88久久久| 一区二区三区中文字幕电影| 精品国产免费人成电影在线观看四季 | 精品久久一区二区三区| 99精品热视频| 国产在线一区观看| 亚洲一区在线观看视频| 欧美激情一区二区三区蜜桃视频 | 亚洲不卡av一区二区三区| 久久亚洲二区三区| 欧美日韩国产大片| 成人免费看的视频| 久久99精品视频| 亚洲午夜精品网| 中文字幕在线视频一区| 日韩精品一区二区三区在线| 欧美午夜寂寞影院| www.66久久| 国产精品一区专区| 美女视频黄久久| 亚洲成人一区二区| 亚洲欧美日韩综合aⅴ视频| 久久精品日韩一区二区三区| 欧美剧情电影在线观看完整版免费励志电影 | 欧美国产乱子伦| 精品国产伦一区二区三区观看体验 | 国产成人午夜高潮毛片| 美女一区二区三区| 视频在线观看国产精品| 一区二区三区精品视频在线| 国产精品的网站| 日本一区二区三区免费乱视频| 欧美成人性福生活免费看| 91.麻豆视频| 欧美日本在线看| 欧美吻胸吃奶大尺度电影| 色综合色狠狠天天综合色| 99在线热播精品免费| 成人高清视频在线观看| 成人久久18免费网站麻豆| 国产精品亚洲成人| 成人午夜大片免费观看| 国产福利精品一区二区| 国产黄色精品视频| 国产suv一区二区三区88区| 国模一区二区三区白浆| 国产在线看一区| 国产aⅴ精品一区二区三区色成熟| 国产一区二区三区观看| 国产精品一区二区免费不卡 | 激情综合亚洲精品| 国产麻豆成人精品| 国产成人av电影在线播放| 福利电影一区二区| 成人av在线电影| 色猫猫国产区一区二在线视频| 色视频欧美一区二区三区| 91黄色激情网站| 欧美日韩高清在线| 日韩一区二区免费视频| xnxx国产精品| 中文字幕va一区二区三区| 最新国产精品久久精品| 亚洲一区二区三区四区中文字幕| 日韩二区三区四区| 激情综合色丁香一区二区| 国产精品一品视频| 97se亚洲国产综合在线| 欧美精选在线播放| 久久视频一区二区| 一区二区三区免费看视频| 日韩国产精品久久久| 国产黄人亚洲片| 色哟哟一区二区在线观看| 欧美一级国产精品| 亚洲国产精品99久久久久久久久| 亚洲精品免费一二三区| 日本午夜精品一区二区三区电影| 国产在线精品一区二区| 欧洲国内综合视频| 久久人人爽人人爽| 一区二区激情视频| 国产精品2024| 欧美色精品在线视频| 久久久久久久久久久久电影| 一区二区三区在线免费视频 | 国产欧美日韩视频在线观看| 亚洲美女一区二区三区| 另类小说欧美激情| 91在线播放网址| 日韩美一区二区三区| 亚洲欧美视频在线观看视频| 久久成人麻豆午夜电影| 91麻豆国产精品久久| 欧美不卡视频一区| 伊人性伊人情综合网| 国产经典欧美精品| 欧美一区二区三区小说| 亚洲日本免费电影| 韩国成人福利片在线播放| 色综合中文字幕国产| 久久这里只有精品首页| 一区二区三区在线观看国产| 秋霞午夜av一区二区三区| 91看片淫黄大片一级| 久久久国际精品| 日韩精品电影一区亚洲| jiyouzz国产精品久久| 精品国产凹凸成av人网站| 午夜成人在线视频| 色婷婷久久综合| 中文子幕无线码一区tr| 精品一区二区三区免费视频| 欧美日韩精品系列| 一区二区视频免费在线观看| 成人午夜激情视频| 26uuu久久天堂性欧美| 日韩不卡一区二区| 欧美色涩在线第一页| 国产精品国产精品国产专区不蜜 | 亚洲国产成人私人影院tom | 亚洲最大色网站| 91免费版pro下载短视频| 亚洲国产成人自拍| 激情小说亚洲一区| 日韩精品资源二区在线| 欧美a级理论片| 欧美精品1区2区| 日韩av电影免费观看高清完整版在线观看| 91美女在线看| 亚洲另类春色校园小说| 91日韩在线专区| 亚洲三级在线观看| 91美女精品福利| 一级日本不卡的影视| 色欧美片视频在线观看| 亚洲精品伦理在线| 欧美在线综合视频| 亚洲777理论| 欧美一区二区久久| 精品亚洲国产成人av制服丝袜| 精品国产乱码久久久久久蜜臀 | 欧美浪妇xxxx高跟鞋交| 视频一区二区不卡| 欧美电视剧免费观看| 国产一区二区三区蝌蚪| 国产欧美视频一区二区三区| 成人爱爱电影网址| 一区二区三区四区在线| 欧美挠脚心视频网站| 蜜臀99久久精品久久久久久软件| 精品少妇一区二区三区日产乱码 | 日韩视频在线一区二区| 精油按摩中文字幕久久| 欧美经典一区二区三区| 91香蕉视频污在线| 亚洲成人黄色影院| 精品三级在线观看| 不卡的av网站| 天堂av在线一区| 久久久久99精品国产片| 99精品桃花视频在线观看| 无吗不卡中文字幕| 久久午夜电影网| 欧美性大战久久久| 国产一区二区三区免费|