mirror of
https://github.com/freebsd/freebsd-src.git
synced 2026-10-30 04:15:06 +01:00
Compare commits
82
Commits
stable/8
...
releng/8.4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
554a1309db | ||
|
|
b768bf9023 | ||
|
|
2e0ab57583 | ||
|
|
fb81bb61c3 | ||
|
|
d6da881751 | ||
|
|
e5067d0a5e | ||
|
|
1e093488fd | ||
|
|
a3ec1445d6 | ||
|
|
b6595c901e | ||
|
|
ee715bcbe9 | ||
|
|
e5ed6da960 | ||
|
|
1aad402120 | ||
|
|
4983bacf2c | ||
|
|
99fd9fc5a1 | ||
|
|
2892275661 | ||
|
|
926429c952 | ||
|
|
9d287cad4f | ||
|
|
2823d73c40 | ||
|
|
bc3e2dc218 | ||
|
|
0329cb3dc2 | ||
|
|
33ecb7d696 | ||
|
|
5d9c24cd38 | ||
|
|
60d14ee88c | ||
|
|
2ae887b5c1 | ||
|
|
5a9e14150c | ||
|
|
77e0f45b76 | ||
|
|
caa0922751 | ||
|
|
c5306947f7 | ||
|
|
01ec0f5dcb | ||
|
|
0fa2c0a5b5 | ||
|
|
e2e5c847c2 | ||
|
|
9065eed2c1 | ||
|
|
aa8ed30ce5 | ||
|
|
448c80b970 | ||
|
|
d11195245a | ||
|
|
53ab617e6d | ||
|
|
eafb08f1d7 | ||
|
|
4493d04f4b | ||
|
|
ce2d23d4c3 | ||
|
|
9fe10651e9 | ||
|
|
a4a9338dd4 | ||
|
|
4da9c5a728 | ||
|
|
9855dd2376 | ||
|
|
45fb2fc413 | ||
|
|
e70d2e5cf3 | ||
|
|
b9a977a824 | ||
|
|
07f89c430f | ||
|
|
aea55657ff | ||
|
|
a57453d33d | ||
|
|
7b277c6d0b | ||
|
|
808d570e8e | ||
|
|
1a58de3adb | ||
|
|
2bee0d1627 | ||
|
|
e8ada9d870 | ||
|
|
4b41f17f29 | ||
|
|
e599c24cfe | ||
|
|
3944c1881d | ||
|
|
b99f9165eb | ||
|
|
94b445c94e | ||
|
|
8852850499 | ||
|
|
5f45e57447 | ||
|
|
a0fc0837d1 | ||
|
|
12eba1321c | ||
|
|
78c53355f1 | ||
|
|
48d032343c | ||
|
|
bb7319892f | ||
|
|
4b407891dd | ||
|
|
bfa6f99e91 | ||
|
|
25edfb6bd8 | ||
|
|
4a6712d364 | ||
|
|
519e2d55ae | ||
|
|
8fd84e1078 | ||
|
|
236a66e498 | ||
|
|
0911de95ac | ||
|
|
512f08014f | ||
|
|
6e8aac78a5 | ||
|
|
911c6efdde | ||
|
|
706a1f4eab | ||
|
|
7704299ea1 | ||
|
|
257229dc3c | ||
|
|
3fa483c3a3 | ||
|
|
f787c80d66 |
No files matched your search
+1
-1
@@ -92,7 +92,7 @@ CLEANDIR= cleandir
|
||||
.endif
|
||||
|
||||
CVS?= cvs
|
||||
CVSFLAGS?= -r RELENG_8 -P -d -I!
|
||||
CVSFLAGS?= -r RELENG_8_4 -P -d -I!
|
||||
SVN?= svn
|
||||
SVNFLAGS?= -r HEAD
|
||||
SUP?= /usr/bin/csup
|
||||
|
||||
@@ -15,6 +15,238 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8.x IS SLOW ON IA64 OR SUN4V:
|
||||
debugging tools present in HEAD were left in place because
|
||||
sun4v support still needs work to become production ready.
|
||||
|
||||
20150730: p36 FreeBSD-SA-15:16.openssh [REVISED]
|
||||
Fix a regression introduced in SA-15:16 patch that would break
|
||||
keyboard-interactive authentication.
|
||||
|
||||
20150728: p35 FreeBSD-SA-15:15.tcp
|
||||
FreeBSD-SA-15:16.openssh
|
||||
FreeBSD-SA-15:17.bind
|
||||
|
||||
Fix resource exhaustion in TCP reassembly. [SA-15:15]
|
||||
|
||||
Fix OpenSSH multiple vulnerabilities. [SA-15:16]
|
||||
|
||||
Fix BIND remote denial of service vulnerability. [SA-15:17]
|
||||
|
||||
20150721: p34 FreeBSD-SA-15:13.tcp
|
||||
|
||||
Fix resource exhaustion due to sessions stuck in LAST_ACK state.
|
||||
[SA-15:13]
|
||||
|
||||
20150707: p33 FreeBSD-SA-15:11.bind
|
||||
Fix BIND resolver remote denial of service when validating.
|
||||
|
||||
20150630: p32 FreeBSD-EN-15:08.sendmail [revised]
|
||||
|
||||
Improvements to sendmail TLS/DH interoperability. [EN-15:08]
|
||||
|
||||
20150618: p31 FreeBSD-EN-15:08.sendmail
|
||||
Improvements to sendmail TLS/DH interoperability. [EN-15:08]
|
||||
|
||||
20150612: p30 FreeBSD-SA-15:10.openssl
|
||||
Fix multiple vulnerabilities in OpenSSL. [SA-15:10]
|
||||
|
||||
20150609: p29 FreeBSD-EN-15:06.file
|
||||
|
||||
Updated base system file(1) to 5.22 to address multiple denial
|
||||
of service issues.
|
||||
|
||||
20150513: p28 FreeBSD-EN-15:04.freebsd-update
|
||||
|
||||
Fix bug with freebsd-update(8) that does not ensure the previous
|
||||
upgrade was completed. [EN-15:04]
|
||||
|
||||
20150407: p27 FreeBSD-SA-15:04.igmp [revised]
|
||||
FreeBSD-SA-15:07.ntp
|
||||
FreeBSD-SA-15:09.ipv6
|
||||
|
||||
Improved patch for SA-15:04.igmp.
|
||||
|
||||
Fix multiple vulnerabilities of ntp. [SA-15:07]
|
||||
|
||||
Fix Denial of Service with IPv6 Router Advertisements. [SA-15:09]
|
||||
|
||||
20150320: p26
|
||||
Fix patch for SA-15:06.openssl.
|
||||
|
||||
20150319: p25 FreeBSD-SA-15:06.openssl
|
||||
Fix multiple vulnerabilities in OpenSSL. [SA-15:06]
|
||||
|
||||
20150225: p24 FreeBSD-SA-15:04.igmp
|
||||
FreeBSD-SA-15:05.bind
|
||||
FreeBSD-EN-15:01.vt
|
||||
FreeBSD-EN-15:02.openssl
|
||||
FreeBSD-EN-15:03.freebsd-update
|
||||
|
||||
Fix integer overflow in IGMP protocol. [SA-15:04]
|
||||
|
||||
Fix BIND remote denial of service vulnerability. [SA-15:05]
|
||||
|
||||
Fix vt(4) crash with improper ioctl parameters. [EN-15:01]
|
||||
|
||||
Updated base system OpenSSL to 0.9.8zd. [EN-15:02]
|
||||
|
||||
Fix freebsd-update libraries update ordering issue. [EN-15:03]
|
||||
|
||||
20150127: p23 FreeBSD-SA-15:02.kmem
|
||||
FreeBSD-SA-15:03.sctp
|
||||
|
||||
Fix SCTP SCTP_SS_VALUE kernel memory corruption and disclosure
|
||||
vulnerability. [SA-15:02]
|
||||
|
||||
Fix SCTP stream reset vulnerability. [SA-15:03]
|
||||
|
||||
20150114: p22 FreeBSD-SA-15:01.openssl
|
||||
Fix multiple vulnerabilities in OpenSSL. [SA-15:01]
|
||||
|
||||
20141223: p21 FreeBSD-SA-14:31.ntp
|
||||
FreeBSD-EN-14:13.freebsd-update
|
||||
|
||||
Fix multiple vulnerabilities in NTP suite. [SA-14:31]
|
||||
Fix directory deletion issue in freebsd-update. [EN-14:13]
|
||||
|
||||
20141210: p20 FreeBSD-SA-14:28.file
|
||||
FreeBSD-SA-14:29.bind
|
||||
|
||||
Fix multiple vulnerabilities in file(1) and libmagic(3).
|
||||
[SA-14:28]
|
||||
|
||||
Fix BIND remote denial of service vulnerability. [SA-14:29]
|
||||
|
||||
20141104: p19 FreeBSD-SA-14:25.setlogin
|
||||
FreeBSD-SA-14:26.ftp
|
||||
FreeBSD-EN-14:12.zfs
|
||||
|
||||
Fix kernel stack disclosure in setlogin(2) / getlogin(2).
|
||||
[SA-14:25]
|
||||
|
||||
Fix remote command execution in ftp(1). [SA-14:26]
|
||||
|
||||
Fix NFSv4 and ZFS cache consistency issue. [EN-14:12]
|
||||
|
||||
20141022: p18 FreeBSD-EN-14:10.tzdata
|
||||
|
||||
Time zone data file update. [EN-14:10]
|
||||
|
||||
20141021: p17 FreeBSD-SA-14:21.routed
|
||||
FreeBSD-SA-14:23.openssl
|
||||
|
||||
Fix routed(8) remote denial of service vulnerability. [SA-14:21]
|
||||
|
||||
Fix OpenSSL multiple vulnerabilities. [SA-14:23]
|
||||
|
||||
20140916: p16 FreeBSD-SA-14:19.tcp
|
||||
Fix Denial of Service in TCP packet processing. [SA-14:19]
|
||||
|
||||
20140909: p15 FreeBSD-SA-14:18.openssl
|
||||
Fix OpenSSL multiple vulnerabilities. [SA-14:18]
|
||||
|
||||
20140708: p14 FreeBSD-SA-14:17.kmem
|
||||
FreeBSD-EN-14:09.jail
|
||||
Fix kernel memory disclosure in control messages and SCTP
|
||||
notifications. [SA-14:17]
|
||||
|
||||
Fix jail fails to start if WITHOUT_INET/WITHOUT_INET6 is use.
|
||||
[EN-14:09]
|
||||
|
||||
20140624: p13 FreeBSD-SA-14:16.file
|
||||
FreeBSD-EN-14:08.heimdal
|
||||
|
||||
Fix multiple vulnerabilities in file(1) and libmagic(3).
|
||||
[SA-14:16]
|
||||
|
||||
Fix gss_pseudo_random interoperability issue. [EN-14:08]
|
||||
|
||||
20140605: p12 FreeBSD-SA-14:14.openssl
|
||||
Fix OpenSSL multiple vulnerabilities. [SA-14:14]
|
||||
|
||||
20140603: p11 FreeBSD-SA-14:11.sendmail
|
||||
FreeBSD-SA-14:12.ktrace
|
||||
FreeBSD-EN-14:06.exec
|
||||
|
||||
Fix sendmail improper close-on-exec flag handling. [SA-14:11]
|
||||
|
||||
Fix ktrace memory disclosure. [SA-14:12]
|
||||
|
||||
Fix triple-fault when executing from a threaded process.
|
||||
[EN-14:06]
|
||||
|
||||
20140513: p10 FreeBSD-EN-14:03.pkg
|
||||
FreeBSD-EN-14:04.kldxref
|
||||
|
||||
Add pkg bootstrapping, configuration and public keys. [EN-14:03]
|
||||
|
||||
Improve build repeatability for kldxref(8). [EN-14:04]
|
||||
|
||||
20140430: p9 FreeBSD-SA-14:08.tcp
|
||||
|
||||
Fix TCP reassembly vulnerability. [SA-14:08]
|
||||
|
||||
20140408: p8 FreeBSD-SA-14:05.nfsserver
|
||||
FreeBSD-SA-14:06.openssl
|
||||
Fix deadlock in the NFS server. [SA-14:05]
|
||||
|
||||
Fix for ECDSA Cache Side-channel Attack in OpenSSL. [SA-14:06]
|
||||
|
||||
20140114: p7 FreeBSD-SA-14:01.bsnmpd
|
||||
FreeBSD-SA-14:02.ntpd
|
||||
FreeBSD-SA-14:04.bind
|
||||
FreeBSD-EN-14:01.random
|
||||
FreeBSD-EN-14:02.mmap
|
||||
Fix bsnmpd remote denial of service vulnerability. [SA-14:01]
|
||||
|
||||
Fix ntpd distributed reflection Denial of Service
|
||||
vulnerability. [SA-14:02]
|
||||
|
||||
Fix BIND remote denial of service vulnerability. [SA-14:04]
|
||||
|
||||
Disable hardware RNGs by default. [EN-14:01]
|
||||
|
||||
Fix incorrect coalescing of stack entry with mmap. [EN-14:02]
|
||||
|
||||
20131128: p6 FreeBSD-EN-13:05.freebsd-update
|
||||
Fix error in patch for FreeBSD-EN-13:04.freebsd-update.
|
||||
|
||||
20131026: p5 FreeBSD-EN-13:04.freebsd-update
|
||||
Fix multiple freebsd-update bugs that break upgrading to
|
||||
FreeBSD 10.0.
|
||||
|
||||
20130910: p4 FreeBSD-SA-13:12.ifioctl
|
||||
FreeBSD-SA-13:13.nullfs
|
||||
|
||||
In IPv6 and NetATM, stop SIOCSIFADDR, SIOCSIFBRDADDR,
|
||||
SIOCSIFDSTADDR and SIOCSIFNETMASK at the socket layer rather
|
||||
than pass them on to the link layer without validation or
|
||||
credential checks. [SA-13:12]
|
||||
|
||||
Prevent cross-mount hardlinks between different nullfs mounts
|
||||
of the same underlying filesystem. [SA-13:13]
|
||||
|
||||
20130822: p3 FreeBSD-SA-13:09.ip_multicast
|
||||
FreeBSD-SA-13:10.sctp
|
||||
Fix an integer overflow in computing the size of a temporary buffer
|
||||
can result in a buffer which is too small for the requested
|
||||
operation. [13:09]
|
||||
|
||||
Fix a bug that could lead to kernel memory disclosure with
|
||||
SCTP state cookie. [13:10]
|
||||
|
||||
20130726: p2 FreeBSD-SA-13:07.bind
|
||||
Fix Denial of Service vulnerability in named(8).
|
||||
|
||||
20130628: p1 FreeBSD-EN-13:01.fxp
|
||||
FreeBSD-EN-13:02.vtnet
|
||||
Fix a problem where dhclient(8) utility tries to initilaize an
|
||||
fxp(4) forever because the driver resets the controller chip
|
||||
twice upon initialization. [EN-13:01]
|
||||
|
||||
Fix a problem where frames sent to additional MAC addresses are
|
||||
not forwarded to the vtnet(4) interface. [EN-13:02]
|
||||
|
||||
20130429:
|
||||
Fix a bug that allows NFS clients to issue READDIR on files.
|
||||
|
||||
20130225:
|
||||
A new compression method (lz4) has been merged. Please refer to
|
||||
zpool-features(7) for more information.
|
||||
|
||||
@@ -1189,7 +1189,7 @@ dump_bpobj_cb(void *arg, const blkptr_t *bp, dmu_tx_t *tx)
|
||||
}
|
||||
|
||||
static void
|
||||
dump_bpobj(bpobj_t *bpo, char *name)
|
||||
dump_bpobj(bpobj_t *bpo, char *name, int indent)
|
||||
{
|
||||
char bytes[32];
|
||||
char comp[32];
|
||||
@@ -1199,31 +1199,57 @@ dump_bpobj(bpobj_t *bpo, char *name)
|
||||
return;
|
||||
|
||||
zdb_nicenum(bpo->bpo_phys->bpo_bytes, bytes);
|
||||
if (bpo->bpo_havesubobj) {
|
||||
if (bpo->bpo_havesubobj && bpo->bpo_phys->bpo_subobjs != 0) {
|
||||
zdb_nicenum(bpo->bpo_phys->bpo_comp, comp);
|
||||
zdb_nicenum(bpo->bpo_phys->bpo_uncomp, uncomp);
|
||||
(void) printf("\n %s: %llu local blkptrs, %llu subobjs, "
|
||||
"%s (%s/%s comp)\n",
|
||||
name, (u_longlong_t)bpo->bpo_phys->bpo_num_blkptrs,
|
||||
(void) printf(" %*s: object %llu, %llu local blkptrs, "
|
||||
"%llu subobjs, %s (%s/%s comp)\n",
|
||||
indent * 8, name,
|
||||
(u_longlong_t)bpo->bpo_object,
|
||||
(u_longlong_t)bpo->bpo_phys->bpo_num_blkptrs,
|
||||
(u_longlong_t)bpo->bpo_phys->bpo_num_subobjs,
|
||||
bytes, comp, uncomp);
|
||||
|
||||
for (uint64_t i = 0; i < bpo->bpo_phys->bpo_num_subobjs; i++) {
|
||||
uint64_t subobj;
|
||||
bpobj_t subbpo;
|
||||
int error;
|
||||
VERIFY0(dmu_read(bpo->bpo_os,
|
||||
bpo->bpo_phys->bpo_subobjs,
|
||||
i * sizeof (subobj), sizeof (subobj), &subobj, 0));
|
||||
error = bpobj_open(&subbpo, bpo->bpo_os, subobj);
|
||||
if (error != 0) {
|
||||
(void) printf("ERROR %u while trying to open "
|
||||
"subobj id %llu\n",
|
||||
error, (u_longlong_t)subobj);
|
||||
continue;
|
||||
}
|
||||
dump_bpobj(&subbpo, "subobj", indent + 1);
|
||||
bpobj_close(&subbpo);
|
||||
}
|
||||
} else {
|
||||
(void) printf("\n %s: %llu blkptrs, %s\n",
|
||||
name, (u_longlong_t)bpo->bpo_phys->bpo_num_blkptrs, bytes);
|
||||
(void) printf(" %*s: object %llu, %llu blkptrs, %s\n",
|
||||
indent * 8, name,
|
||||
(u_longlong_t)bpo->bpo_object,
|
||||
(u_longlong_t)bpo->bpo_phys->bpo_num_blkptrs,
|
||||
bytes);
|
||||
}
|
||||
|
||||
if (dump_opt['d'] < 5)
|
||||
return;
|
||||
|
||||
(void) printf("\n");
|
||||
|
||||
(void) bpobj_iterate_nofree(bpo, dump_bpobj_cb, NULL, NULL);
|
||||
if (indent == 0) {
|
||||
(void) bpobj_iterate_nofree(bpo, dump_bpobj_cb, NULL, NULL);
|
||||
(void) printf("\n");
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
dump_deadlist(dsl_deadlist_t *dl)
|
||||
{
|
||||
dsl_deadlist_entry_t *dle;
|
||||
uint64_t unused;
|
||||
char bytes[32];
|
||||
char comp[32];
|
||||
char uncomp[32];
|
||||
@@ -1242,14 +1268,24 @@ dump_deadlist(dsl_deadlist_t *dl)
|
||||
|
||||
(void) printf("\n");
|
||||
|
||||
/* force the tree to be loaded */
|
||||
dsl_deadlist_space_range(dl, 0, UINT64_MAX, &unused, &unused, &unused);
|
||||
|
||||
for (dle = avl_first(&dl->dl_tree); dle;
|
||||
dle = AVL_NEXT(&dl->dl_tree, dle)) {
|
||||
(void) printf(" mintxg %llu -> obj %llu\n",
|
||||
(longlong_t)dle->dle_mintxg,
|
||||
(longlong_t)dle->dle_bpobj.bpo_object);
|
||||
if (dump_opt['d'] >= 5) {
|
||||
char buf[128];
|
||||
(void) snprintf(buf, sizeof (buf), "mintxg %llu -> ",
|
||||
(longlong_t)dle->dle_mintxg,
|
||||
(longlong_t)dle->dle_bpobj.bpo_object);
|
||||
|
||||
if (dump_opt['d'] >= 5)
|
||||
dump_bpobj(&dle->dle_bpobj, "");
|
||||
dump_bpobj(&dle->dle_bpobj, buf, 0);
|
||||
} else {
|
||||
(void) printf("mintxg %llu -> obj %llu\n",
|
||||
(longlong_t)dle->dle_mintxg,
|
||||
(longlong_t)dle->dle_bpobj.bpo_object);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1272,7 +1308,7 @@ fuid_table_destroy()
|
||||
* print uid or gid information.
|
||||
* For normal POSIX id just the id is printed in decimal format.
|
||||
* For CIFS files with FUID the fuid is printed in hex followed by
|
||||
* the doman-rid string.
|
||||
* the domain-rid string.
|
||||
*/
|
||||
static void
|
||||
print_idstr(uint64_t id, const char *id_type)
|
||||
@@ -2529,10 +2565,11 @@ dump_zpool(spa_t *spa)
|
||||
if (dump_opt['d'] || dump_opt['i']) {
|
||||
dump_dir(dp->dp_meta_objset);
|
||||
if (dump_opt['d'] >= 3) {
|
||||
dump_bpobj(&spa->spa_deferred_bpobj, "Deferred frees");
|
||||
dump_bpobj(&spa->spa_deferred_bpobj,
|
||||
"Deferred frees", 0);
|
||||
if (spa_version(spa) >= SPA_VERSION_DEADLISTS) {
|
||||
dump_bpobj(&spa->spa_dsl_pool->dp_free_bpobj,
|
||||
"Pool snapshot frees");
|
||||
"Pool snapshot frees", 0);
|
||||
}
|
||||
|
||||
if (spa_feature_is_active(spa,
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd November 15, 2012
|
||||
.Dd March 14, 2013
|
||||
.Dt ZPOOL 8
|
||||
.Os
|
||||
.Sh NAME
|
||||
@@ -1608,14 +1608,15 @@ is specified, the command exits after
|
||||
.Ar count
|
||||
reports are printed.
|
||||
.Pp
|
||||
If a scrub or resilver is in progress, this command reports the percentage done
|
||||
and the estimated time to completion. Both of these are only approximate,
|
||||
If a scrub or resilver is in progress, this command reports the percentage
|
||||
done and the estimated time to completion. Both of these are only approximate,
|
||||
because the amount of data in the pool and the other workloads on the system
|
||||
can change.
|
||||
.Bl -tag -width indent
|
||||
.It Fl x
|
||||
Only display status for pools that are exhibiting errors or are otherwise
|
||||
unavailable.
|
||||
Warnings about pools not using the latest on-disk format will not be included.
|
||||
.It Fl v
|
||||
Displays verbose data error information, printing out a complete list of all
|
||||
data errors since the last complete pool scrub.
|
||||
|
||||
@@ -856,6 +856,16 @@ zpool_do_create(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef __FreeBSD__
|
||||
/* Compatiblity with FreeBSD 9.0 and 9.1: Use version 28 if unspecified */
|
||||
if (enable_all_pool_feat && !prop_list_contains_feature(props)) {
|
||||
if (add_prop_list(zpool_prop_to_name(
|
||||
ZPOOL_PROP_VERSION), "28", &props, B_TRUE))
|
||||
goto errout;
|
||||
enable_all_pool_feat = B_FALSE;
|
||||
}
|
||||
#endif /* __FreeBSD__ */
|
||||
|
||||
argc -= optind;
|
||||
argv += optind;
|
||||
|
||||
@@ -4030,7 +4040,10 @@ status_callback(zpool_handle_t *zhp, void *data)
|
||||
* If we were given 'zpool status -x', only report those pools with
|
||||
* problems.
|
||||
*/
|
||||
if (reason == ZPOOL_STATUS_OK && cbp->cb_explain) {
|
||||
if (cbp->cb_explain &&
|
||||
(reason == ZPOOL_STATUS_OK ||
|
||||
reason == ZPOOL_STATUS_VERSION_OLDER ||
|
||||
reason == ZPOOL_STATUS_FEAT_DISABLED)) {
|
||||
if (!cbp->cb_allpools) {
|
||||
(void) printf(gettext("pool '%s' is healthy\n"),
|
||||
zpool_get_name(zhp));
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
4006. [security] A flaw in delegation handling could be exploited
|
||||
to put named into an infinite loop. This has
|
||||
been addressed by placing limits on the number
|
||||
of levels of recursion named will allow (default 7),
|
||||
and the number of iterative queries that it will
|
||||
send (default 50) before terminating a recursive
|
||||
query (CVE-2014-8500).
|
||||
|
||||
The recursion depth limit is configured via the
|
||||
"max-recursion-depth" option, and the query limit
|
||||
via the "max-recursion-queries" option. [RT #37580]
|
||||
|
||||
--- 9.8.4-P2 released ---
|
||||
|
||||
3516. [security] Removed the check for regex.h in configure in order
|
||||
|
||||
@@ -15,8 +15,6 @@
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: config.c,v 1.113.16.2 2011/02/28 01:19:58 tbox Exp $ */
|
||||
|
||||
/*! \file */
|
||||
|
||||
#include <config.h>
|
||||
@@ -158,6 +156,8 @@ options {\n\
|
||||
dnssec-accept-expired no;\n\
|
||||
clients-per-query 10;\n\
|
||||
max-clients-per-query 100;\n\
|
||||
max-recursion-depth 7;\n\
|
||||
max-recursion-queries 50;\n\
|
||||
zero-no-soa-ttl-cache no;\n\
|
||||
nsec3-test-zone no;\n\
|
||||
allow-new-zones no;\n\
|
||||
|
||||
@@ -3755,12 +3755,11 @@ query_recurse(ns_client_t *client, dns_rdatatype_t qtype, dns_name_t *qname,
|
||||
peeraddr = &client->peeraddr;
|
||||
else
|
||||
peeraddr = NULL;
|
||||
result = dns_resolver_createfetch2(client->view->resolver,
|
||||
result = dns_resolver_createfetch3(client->view->resolver,
|
||||
qname, qtype, qdomain, nameservers,
|
||||
NULL, peeraddr, client->message->id,
|
||||
client->query.fetchoptions,
|
||||
client->task,
|
||||
query_resume, client,
|
||||
client->query.fetchoptions, 0, NULL,
|
||||
client->task, query_resume, client,
|
||||
rdataset, sigrdataset,
|
||||
&client->query.fetch);
|
||||
|
||||
@@ -5088,8 +5087,7 @@ query_findclosestnsec3(dns_name_t *qname, dns_db_t *db,
|
||||
dns_fixedname_t fixed;
|
||||
dns_hash_t hash;
|
||||
dns_name_t name;
|
||||
int order;
|
||||
unsigned int count;
|
||||
unsigned int skip = 0, labels;
|
||||
dns_rdata_nsec3_t nsec3;
|
||||
dns_rdata_t rdata = DNS_RDATA_INIT;
|
||||
isc_boolean_t optout;
|
||||
@@ -5102,6 +5100,7 @@ query_findclosestnsec3(dns_name_t *qname, dns_db_t *db,
|
||||
|
||||
dns_name_init(&name, NULL);
|
||||
dns_name_clone(qname, &name);
|
||||
labels = dns_name_countlabels(&name);
|
||||
|
||||
/*
|
||||
* Map unknown algorithm to known value.
|
||||
@@ -5133,13 +5132,14 @@ query_findclosestnsec3(dns_name_t *qname, dns_db_t *db,
|
||||
dns_rdata_reset(&rdata);
|
||||
optout = ISC_TF((nsec3.flags & DNS_NSEC3FLAG_OPTOUT) != 0);
|
||||
if (found != NULL && optout &&
|
||||
dns_name_fullcompare(&name, dns_db_origin(db), &order,
|
||||
&count) == dns_namereln_subdomain) {
|
||||
dns_name_issubdomain(&name, dns_db_origin(db)))
|
||||
{
|
||||
dns_rdataset_disassociate(rdataset);
|
||||
if (dns_rdataset_isassociated(sigrdataset))
|
||||
dns_rdataset_disassociate(sigrdataset);
|
||||
count = dns_name_countlabels(&name) - 1;
|
||||
dns_name_getlabelsequence(&name, 1, count, &name);
|
||||
skip++;
|
||||
dns_name_getlabelsequence(qname, skip, labels - skip,
|
||||
&name);
|
||||
ns_client_log(client, DNS_LOGCATEGORY_DNSSEC,
|
||||
NS_LOGMODULE_QUERY, ISC_LOG_DEBUG(3),
|
||||
"looking for closest provable encloser");
|
||||
@@ -5157,7 +5157,11 @@ query_findclosestnsec3(dns_name_t *qname, dns_db_t *db,
|
||||
ns_client_log(client, DNS_LOGCATEGORY_DNSSEC,
|
||||
NS_LOGMODULE_QUERY, ISC_LOG_WARNING,
|
||||
"expected covering NSEC3, got an exact match");
|
||||
if (found != NULL)
|
||||
if (found == qname) {
|
||||
if (skip != 0U)
|
||||
dns_name_getlabelsequence(qname, skip, labels - skip,
|
||||
found);
|
||||
} else if (found != NULL)
|
||||
dns_name_copy(&name, found, NULL);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2580,6 +2580,16 @@ configure_view(dns_view_t *view, cfg_obj_t *config, cfg_obj_t *vconfig,
|
||||
cfg_obj_asuint32(obj),
|
||||
max_clients_per_query);
|
||||
|
||||
obj = NULL;
|
||||
result = ns_config_get(maps, "max-recursion-depth", &obj);
|
||||
INSIST(result == ISC_R_SUCCESS);
|
||||
dns_resolver_setmaxdepth(view->resolver, cfg_obj_asuint32(obj));
|
||||
|
||||
obj = NULL;
|
||||
result = ns_config_get(maps, "max-recursion-queries", &obj);
|
||||
INSIST(result == ISC_R_SUCCESS);
|
||||
dns_resolver_setmaxqueries(view->resolver, cfg_obj_asuint32(obj));
|
||||
|
||||
#ifdef ALLOW_FILTER_AAAA_ON_V4
|
||||
obj = NULL;
|
||||
result = ns_config_get(maps, "filter-aaaa-on-v4", &obj);
|
||||
|
||||
+33
-12
@@ -201,6 +201,7 @@ struct dns_adbfetch {
|
||||
unsigned int magic;
|
||||
dns_fetch_t *fetch;
|
||||
dns_rdataset_t rdataset;
|
||||
unsigned int depth;
|
||||
};
|
||||
|
||||
/*%
|
||||
@@ -300,8 +301,7 @@ static inline isc_boolean_t dec_entry_refcnt(dns_adb_t *, isc_boolean_t,
|
||||
static inline void violate_locking_hierarchy(isc_mutex_t *, isc_mutex_t *);
|
||||
static isc_boolean_t clean_namehooks(dns_adb_t *, dns_adbnamehooklist_t *);
|
||||
static void clean_target(dns_adb_t *, dns_name_t *);
|
||||
static void clean_finds_at_name(dns_adbname_t *, isc_eventtype_t,
|
||||
unsigned int);
|
||||
static void clean_finds_at_name(dns_adbname_t *, isc_eventtype_t, unsigned int);
|
||||
static isc_boolean_t check_expire_namehooks(dns_adbname_t *, isc_stdtime_t);
|
||||
static isc_boolean_t check_expire_entry(dns_adb_t *, dns_adbentry_t **,
|
||||
isc_stdtime_t);
|
||||
@@ -309,6 +309,7 @@ static void cancel_fetches_at_name(dns_adbname_t *);
|
||||
static isc_result_t dbfind_name(dns_adbname_t *, isc_stdtime_t,
|
||||
dns_rdatatype_t);
|
||||
static isc_result_t fetch_name(dns_adbname_t *, isc_boolean_t,
|
||||
unsigned int, isc_counter_t *qc,
|
||||
dns_rdatatype_t);
|
||||
static inline void check_exit(dns_adb_t *);
|
||||
static void destroy(dns_adb_t *);
|
||||
@@ -2759,6 +2760,19 @@ dns_adb_createfind(dns_adb_t *adb, isc_task_t *task, isc_taskaction_t action,
|
||||
dns_rdatatype_t qtype, unsigned int options,
|
||||
isc_stdtime_t now, dns_name_t *target,
|
||||
in_port_t port, dns_adbfind_t **findp)
|
||||
{
|
||||
return (dns_adb_createfind2(adb, task, action, arg, name,
|
||||
qname, qtype, options, now,
|
||||
target, port, 0, NULL, findp));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
dns_adb_createfind2(dns_adb_t *adb, isc_task_t *task, isc_taskaction_t action,
|
||||
void *arg, dns_name_t *name, dns_name_t *qname,
|
||||
dns_rdatatype_t qtype, unsigned int options,
|
||||
isc_stdtime_t now, dns_name_t *target,
|
||||
in_port_t port, unsigned int depth, isc_counter_t *qc,
|
||||
dns_adbfind_t **findp)
|
||||
{
|
||||
dns_adbfind_t *find;
|
||||
dns_adbname_t *adbname;
|
||||
@@ -2990,7 +3004,7 @@ dns_adb_createfind(dns_adb_t *adb, isc_task_t *task, isc_taskaction_t action,
|
||||
* Start V4.
|
||||
*/
|
||||
if (WANT_INET(wanted_fetches) &&
|
||||
fetch_name(adbname, start_at_zone,
|
||||
fetch_name(adbname, start_at_zone, depth, qc,
|
||||
dns_rdatatype_a) == ISC_R_SUCCESS) {
|
||||
DP(DEF_LEVEL,
|
||||
"dns_adb_createfind: started A fetch for name %p",
|
||||
@@ -3001,7 +3015,7 @@ dns_adb_createfind(dns_adb_t *adb, isc_task_t *task, isc_taskaction_t action,
|
||||
* Start V6.
|
||||
*/
|
||||
if (WANT_INET6(wanted_fetches) &&
|
||||
fetch_name(adbname, start_at_zone,
|
||||
fetch_name(adbname, start_at_zone, depth, qc,
|
||||
dns_rdatatype_aaaa) == ISC_R_SUCCESS) {
|
||||
DP(DEF_LEVEL,
|
||||
"dns_adb_createfind: "
|
||||
@@ -3744,6 +3758,12 @@ fetch_callback(isc_task_t *task, isc_event_t *ev) {
|
||||
DP(DEF_LEVEL, "adb: fetch of '%s' %s failed: %s",
|
||||
buf, address_type == DNS_ADBFIND_INET ? "A" : "AAAA",
|
||||
dns_result_totext(dev->result));
|
||||
/*
|
||||
* Don't record a failure unless this is the initial
|
||||
* fetch of a chain.
|
||||
*/
|
||||
if (fetch->depth > 1)
|
||||
goto out;
|
||||
/* XXXMLG Don't pound on bad servers. */
|
||||
if (address_type == DNS_ADBFIND_INET) {
|
||||
name->expire_v4 = ISC_MIN(name->expire_v4, now + 300);
|
||||
@@ -3781,9 +3801,8 @@ fetch_callback(isc_task_t *task, isc_event_t *ev) {
|
||||
}
|
||||
|
||||
static isc_result_t
|
||||
fetch_name(dns_adbname_t *adbname,
|
||||
isc_boolean_t start_at_zone,
|
||||
dns_rdatatype_t type)
|
||||
fetch_name(dns_adbname_t *adbname, isc_boolean_t start_at_zone,
|
||||
unsigned int depth, isc_counter_t *qc, dns_rdatatype_t type)
|
||||
{
|
||||
isc_result_t result;
|
||||
dns_adbfetch_t *fetch = NULL;
|
||||
@@ -3828,12 +3847,14 @@ fetch_name(dns_adbname_t *adbname,
|
||||
result = ISC_R_NOMEMORY;
|
||||
goto cleanup;
|
||||
}
|
||||
fetch->depth = depth;
|
||||
|
||||
result = dns_resolver_createfetch(adb->view->resolver, &adbname->name,
|
||||
type, name, nameservers, NULL,
|
||||
options, adb->task, fetch_callback,
|
||||
adbname, &fetch->rdataset, NULL,
|
||||
&fetch->fetch);
|
||||
result = dns_resolver_createfetch3(adb->view->resolver, &adbname->name,
|
||||
type, name, nameservers, NULL,
|
||||
NULL, 0, options, depth, qc,
|
||||
adb->task, fetch_callback, adbname,
|
||||
&fetch->rdataset, NULL,
|
||||
&fetch->fetch);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto cleanup;
|
||||
|
||||
|
||||
@@ -334,6 +334,13 @@ dns_adb_createfind(dns_adb_t *adb, isc_task_t *task, isc_taskaction_t action,
|
||||
dns_rdatatype_t qtype, unsigned int options,
|
||||
isc_stdtime_t now, dns_name_t *target,
|
||||
in_port_t port, dns_adbfind_t **find);
|
||||
isc_result_t
|
||||
dns_adb_createfind2(dns_adb_t *adb, isc_task_t *task, isc_taskaction_t action,
|
||||
void *arg, dns_name_t *name, dns_name_t *qname,
|
||||
dns_rdatatype_t qtype, unsigned int options,
|
||||
isc_stdtime_t now, dns_name_t *target, in_port_t port,
|
||||
unsigned int depth, isc_counter_t *qc,
|
||||
dns_adbfind_t **find);
|
||||
/*%<
|
||||
* Main interface for clients. The adb will look up the name given in
|
||||
* "name" and will build up a list of found addresses, and perhaps start
|
||||
|
||||
@@ -271,6 +271,18 @@ dns_resolver_createfetch2(dns_resolver_t *res, dns_name_t *name,
|
||||
dns_rdataset_t *rdataset,
|
||||
dns_rdataset_t *sigrdataset,
|
||||
dns_fetch_t **fetchp);
|
||||
isc_result_t
|
||||
dns_resolver_createfetch3(dns_resolver_t *res, dns_name_t *name,
|
||||
dns_rdatatype_t type,
|
||||
dns_name_t *domain, dns_rdataset_t *nameservers,
|
||||
dns_forwarders_t *forwarders,
|
||||
isc_sockaddr_t *client, isc_uint16_t id,
|
||||
unsigned int options, unsigned int depth,
|
||||
isc_counter_t *qc, isc_task_t *task,
|
||||
isc_taskaction_t action, void *arg,
|
||||
dns_rdataset_t *rdataset,
|
||||
dns_rdataset_t *sigrdataset,
|
||||
dns_fetch_t **fetchp);
|
||||
/*%<
|
||||
* Recurse to answer a question.
|
||||
*
|
||||
@@ -572,6 +584,30 @@ dns_resolver_printbadcache(dns_resolver_t *resolver, FILE *fp);
|
||||
* \li resolver to be valid.
|
||||
*/
|
||||
|
||||
void
|
||||
dns_resolver_setmaxdepth(dns_resolver_t *resolver, unsigned int maxdepth);
|
||||
unsigned int
|
||||
dns_resolver_getmaxdepth(dns_resolver_t *resolver);
|
||||
/*%
|
||||
* Get and set how many NS indirections will be followed when looking for
|
||||
* nameserver addresses.
|
||||
*
|
||||
* Requires:
|
||||
* \li resolver to be valid.
|
||||
*/
|
||||
|
||||
void
|
||||
dns_resolver_setmaxqueries(dns_resolver_t *resolver, unsigned int queries);
|
||||
unsigned int
|
||||
dns_resolver_getmaxqueries(dns_resolver_t *resolver);
|
||||
/*%
|
||||
* Get and set how many iterative queries will be allowed before
|
||||
* terminating a recursive query.
|
||||
*
|
||||
* Requires:
|
||||
* \li resolver to be valid.
|
||||
*/
|
||||
|
||||
ISC_LANG_ENDDECLS
|
||||
|
||||
#endif /* DNS_RESOLVER_H */
|
||||
@@ -176,7 +176,7 @@ fromwire_keydata(ARGS_FROMWIRE) {
|
||||
UNUSED(options);
|
||||
|
||||
isc_buffer_activeregion(source, &sr);
|
||||
if (sr.length < 4)
|
||||
if (sr.length < 16)
|
||||
return (ISC_R_UNEXPECTEDEND);
|
||||
|
||||
isc_buffer_forward(source, sr.length);
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <isc/counter.h>
|
||||
#include <isc/platform.h>
|
||||
#include <isc/print.h>
|
||||
#include <isc/string.h>
|
||||
@@ -126,6 +127,16 @@
|
||||
#define MAXIMUM_QUERY_TIMEOUT 30 /* The maximum time in seconds for the whole query to live. */
|
||||
#endif
|
||||
|
||||
/* The default maximum number of recursions to follow before giving up. */
|
||||
#ifndef DEFAULT_RECURSION_DEPTH
|
||||
#define DEFAULT_RECURSION_DEPTH 7
|
||||
#endif
|
||||
|
||||
/* The default maximum number of iterative queries to allow before giving up. */
|
||||
#ifndef DEFAULT_MAX_QUERIES
|
||||
#define DEFAULT_MAX_QUERIES 50
|
||||
#endif
|
||||
|
||||
/*%
|
||||
* Maximum EDNS0 input packet size.
|
||||
*/
|
||||
@@ -227,12 +238,13 @@ struct fetchctx {
|
||||
isc_sockaddrlist_t edns;
|
||||
isc_sockaddrlist_t edns512;
|
||||
isc_sockaddrlist_t bad_edns;
|
||||
dns_validator_t *validator;
|
||||
dns_validator_t * validator;
|
||||
ISC_LIST(dns_validator_t) validators;
|
||||
dns_db_t * cache;
|
||||
dns_adb_t * adb;
|
||||
isc_boolean_t ns_ttl_ok;
|
||||
isc_uint32_t ns_ttl;
|
||||
isc_counter_t * qc;
|
||||
|
||||
/*%
|
||||
* The number of events we're waiting for.
|
||||
@@ -300,6 +312,7 @@ struct fetchctx {
|
||||
isc_boolean_t timeout;
|
||||
dns_adbaddrinfo_t *addrinfo;
|
||||
isc_sockaddr_t *client;
|
||||
unsigned int depth;
|
||||
};
|
||||
|
||||
#define FCTX_MAGIC ISC_MAGIC('F', '!', '!', '!')
|
||||
@@ -412,6 +425,8 @@ struct dns_resolver {
|
||||
isc_timer_t * spillattimer;
|
||||
isc_boolean_t zero_no_soa_ttl;
|
||||
unsigned int query_timeout;
|
||||
unsigned int maxdepth;
|
||||
unsigned int maxqueries;
|
||||
|
||||
/* Locked by lock. */
|
||||
unsigned int references;
|
||||
@@ -1569,6 +1584,7 @@ fctx_query(fetchctx_t *fctx, dns_adbaddrinfo_t *addrinfo,
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto cleanup_dispatch;
|
||||
}
|
||||
|
||||
fctx->querysent++;
|
||||
|
||||
ISC_LIST_APPEND(fctx->queries, query, link);
|
||||
@@ -2210,9 +2226,9 @@ fctx_finddone(isc_task_t *task, isc_event_t *event) {
|
||||
*/
|
||||
INSIST(!SHUTTINGDOWN(fctx));
|
||||
fctx->attributes &= ~FCTX_ATTR_ADDRWAIT;
|
||||
if (event->ev_type == DNS_EVENT_ADBMOREADDRESSES)
|
||||
if (event->ev_type == DNS_EVENT_ADBMOREADDRESSES) {
|
||||
want_try = ISC_TRUE;
|
||||
else {
|
||||
} else {
|
||||
fctx->findfail++;
|
||||
if (fctx->pending == 0) {
|
||||
/*
|
||||
@@ -2241,7 +2257,7 @@ fctx_finddone(isc_task_t *task, isc_event_t *event) {
|
||||
else if (want_done)
|
||||
fctx_done(fctx, ISC_R_FAILURE, __LINE__);
|
||||
else if (destroy) {
|
||||
fctx_destroy(fctx);
|
||||
fctx_destroy(fctx);
|
||||
if (bucket_empty)
|
||||
empty_bucket(res);
|
||||
}
|
||||
@@ -2495,12 +2511,13 @@ findname(fetchctx_t *fctx, dns_name_t *name, in_port_t port,
|
||||
* See what we know about this address.
|
||||
*/
|
||||
find = NULL;
|
||||
result = dns_adb_createfind(fctx->adb,
|
||||
res->buckets[fctx->bucketnum].task,
|
||||
fctx_finddone, fctx, name,
|
||||
&fctx->name, fctx->type,
|
||||
options, now, NULL,
|
||||
res->view->dstport, &find);
|
||||
result = dns_adb_createfind2(fctx->adb,
|
||||
res->buckets[fctx->bucketnum].task,
|
||||
fctx_finddone, fctx, name,
|
||||
&fctx->name, fctx->type,
|
||||
options, now, NULL,
|
||||
res->view->dstport,
|
||||
fctx->depth + 1, fctx->qc, &find);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
if (result == DNS_R_ALIAS) {
|
||||
/*
|
||||
@@ -2608,6 +2625,14 @@ fctx_getaddresses(fetchctx_t *fctx, isc_boolean_t badcache) {
|
||||
|
||||
res = fctx->res;
|
||||
|
||||
if (fctx->depth > res->maxdepth) {
|
||||
isc_log_write(dns_lctx, DNS_LOGCATEGORY_RESOLVER,
|
||||
DNS_LOGMODULE_RESOLVER, ISC_LOG_DEBUG(3),
|
||||
"too much NS indirection resolving '%s'",
|
||||
fctx->info);
|
||||
return (DNS_R_SERVFAIL);
|
||||
}
|
||||
|
||||
/*
|
||||
* Forwarders.
|
||||
*/
|
||||
@@ -3083,6 +3108,16 @@ fctx_try(fetchctx_t *fctx, isc_boolean_t retrying, isc_boolean_t badcache) {
|
||||
}
|
||||
}
|
||||
|
||||
result = isc_counter_increment(fctx->qc);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
isc_log_write(dns_lctx, DNS_LOGCATEGORY_RESOLVER,
|
||||
DNS_LOGMODULE_RESOLVER, ISC_LOG_DEBUG(3),
|
||||
"exceeded max queries resolving '%s'",
|
||||
fctx->info);
|
||||
fctx_done(fctx, DNS_R_SERVFAIL, __LINE__);
|
||||
return;
|
||||
}
|
||||
|
||||
result = fctx_query(fctx, addrinfo, fctx->options);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
fctx_done(fctx, result, __LINE__);
|
||||
@@ -3181,6 +3216,7 @@ fctx_destroy(fetchctx_t *fctx) {
|
||||
isc_mem_put(fctx->mctx, sa, sizeof(*sa));
|
||||
}
|
||||
|
||||
isc_counter_detach(&fctx->qc);
|
||||
isc_timer_detach(&fctx->timer);
|
||||
dns_message_destroy(&fctx->rmessage);
|
||||
dns_message_destroy(&fctx->qmessage);
|
||||
@@ -3509,7 +3545,8 @@ log_ns_ttl(fetchctx_t *fctx, const char *where) {
|
||||
static isc_result_t
|
||||
fctx_create(dns_resolver_t *res, dns_name_t *name, dns_rdatatype_t type,
|
||||
dns_name_t *domain, dns_rdataset_t *nameservers,
|
||||
unsigned int options, unsigned int bucketnum, fetchctx_t **fctxp)
|
||||
unsigned int options, unsigned int bucketnum, unsigned int depth,
|
||||
isc_counter_t *qc, fetchctx_t **fctxp)
|
||||
{
|
||||
fetchctx_t *fctx;
|
||||
isc_result_t result;
|
||||
@@ -3531,6 +3568,21 @@ fctx_create(dns_resolver_t *res, dns_name_t *name, dns_rdatatype_t type,
|
||||
fctx = isc_mem_get(mctx, sizeof(*fctx));
|
||||
if (fctx == NULL)
|
||||
return (ISC_R_NOMEMORY);
|
||||
|
||||
fctx->qc = NULL;
|
||||
if (qc != NULL) {
|
||||
isc_counter_attach(qc, &fctx->qc);
|
||||
} else {
|
||||
result = isc_counter_create(res->mctx,
|
||||
res->maxqueries, &fctx->qc);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto cleanup_fetch;
|
||||
}
|
||||
|
||||
/*
|
||||
* Make fctx->info point to a copy of a formatted string
|
||||
* "name/type".
|
||||
*/
|
||||
dns_name_format(name, buf, sizeof(buf));
|
||||
dns_rdatatype_format(type, typebuf, sizeof(typebuf));
|
||||
strcat(buf, "/"); /* checked */
|
||||
@@ -3538,7 +3590,7 @@ fctx_create(dns_resolver_t *res, dns_name_t *name, dns_rdatatype_t type,
|
||||
fctx->info = isc_mem_strdup(mctx, buf);
|
||||
if (fctx->info == NULL) {
|
||||
result = ISC_R_NOMEMORY;
|
||||
goto cleanup_fetch;
|
||||
goto cleanup_counter;
|
||||
}
|
||||
FCTXTRACE("create");
|
||||
dns_name_init(&fctx->name, NULL);
|
||||
@@ -3561,6 +3613,7 @@ fctx_create(dns_resolver_t *res, dns_name_t *name, dns_rdatatype_t type,
|
||||
fctx->state = fetchstate_init;
|
||||
fctx->want_shutdown = ISC_FALSE;
|
||||
fctx->cloned = ISC_FALSE;
|
||||
fctx->depth = depth;
|
||||
ISC_LIST_INIT(fctx->queries);
|
||||
ISC_LIST_INIT(fctx->finds);
|
||||
ISC_LIST_INIT(fctx->altfinds);
|
||||
@@ -3766,6 +3819,9 @@ fctx_create(dns_resolver_t *res, dns_name_t *name, dns_rdatatype_t type,
|
||||
cleanup_info:
|
||||
isc_mem_free(mctx, fctx->info);
|
||||
|
||||
cleanup_counter:
|
||||
isc_counter_detach(&fctx->qc);
|
||||
|
||||
cleanup_fetch:
|
||||
isc_mem_put(mctx, fctx, sizeof(*fctx));
|
||||
|
||||
@@ -5477,7 +5533,7 @@ noanswer_response(fetchctx_t *fctx, dns_name_t *oqname,
|
||||
char qbuf[DNS_NAME_FORMATSIZE];
|
||||
char nbuf[DNS_NAME_FORMATSIZE];
|
||||
char tbuf[DNS_RDATATYPE_FORMATSIZE];
|
||||
dns_rdatatype_format(fctx->type, tbuf,
|
||||
dns_rdatatype_format(type, tbuf,
|
||||
sizeof(tbuf));
|
||||
dns_name_format(name, nbuf,
|
||||
sizeof(nbuf));
|
||||
@@ -5486,7 +5542,7 @@ noanswer_response(fetchctx_t *fctx, dns_name_t *oqname,
|
||||
log_formerr(fctx,
|
||||
"unrelated %s %s in "
|
||||
"%s authority section",
|
||||
tbuf, qbuf, nbuf);
|
||||
tbuf, nbuf, qbuf);
|
||||
return (DNS_R_FORMERR);
|
||||
}
|
||||
if (type == dns_rdatatype_ns) {
|
||||
@@ -7528,6 +7584,8 @@ dns_resolver_create(dns_view_t *view,
|
||||
res->query_timeout = DEFAULT_QUERY_TIMEOUT;
|
||||
res->ndisps = 0;
|
||||
res->nextdisp = 0; /* meaningless at this point, but init it */
|
||||
res->maxdepth = DEFAULT_RECURSION_DEPTH;
|
||||
res->maxqueries = DEFAULT_MAX_QUERIES;
|
||||
res->nbuckets = ntasks;
|
||||
res->activebuckets = ntasks;
|
||||
res->buckets = isc_mem_get(view->mctx,
|
||||
@@ -7967,9 +8025,9 @@ dns_resolver_createfetch(dns_resolver_t *res, dns_name_t *name,
|
||||
dns_rdataset_t *sigrdataset,
|
||||
dns_fetch_t **fetchp)
|
||||
{
|
||||
return (dns_resolver_createfetch2(res, name, type, domain,
|
||||
return (dns_resolver_createfetch3(res, name, type, domain,
|
||||
nameservers, forwarders, NULL, 0,
|
||||
options, task, action, arg,
|
||||
options, 0, NULL, task, action, arg,
|
||||
rdataset, sigrdataset, fetchp));
|
||||
}
|
||||
|
||||
@@ -7984,6 +8042,25 @@ dns_resolver_createfetch2(dns_resolver_t *res, dns_name_t *name,
|
||||
dns_rdataset_t *rdataset,
|
||||
dns_rdataset_t *sigrdataset,
|
||||
dns_fetch_t **fetchp)
|
||||
{
|
||||
return (dns_resolver_createfetch3(res, name, type, domain,
|
||||
nameservers, forwarders, client, id,
|
||||
options, 0, NULL, task, action, arg,
|
||||
rdataset, sigrdataset, fetchp));
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
dns_resolver_createfetch3(dns_resolver_t *res, dns_name_t *name,
|
||||
dns_rdatatype_t type,
|
||||
dns_name_t *domain, dns_rdataset_t *nameservers,
|
||||
dns_forwarders_t *forwarders,
|
||||
isc_sockaddr_t *client, dns_messageid_t id,
|
||||
unsigned int options, unsigned int depth,
|
||||
isc_counter_t *qc, isc_task_t *task,
|
||||
isc_taskaction_t action, void *arg,
|
||||
dns_rdataset_t *rdataset,
|
||||
dns_rdataset_t *sigrdataset,
|
||||
dns_fetch_t **fetchp)
|
||||
{
|
||||
dns_fetch_t *fetch;
|
||||
fetchctx_t *fctx = NULL;
|
||||
@@ -8071,11 +8148,12 @@ dns_resolver_createfetch2(dns_resolver_t *res, dns_name_t *name,
|
||||
|
||||
if (fctx == NULL) {
|
||||
result = fctx_create(res, name, type, domain, nameservers,
|
||||
options, bucketnum, &fctx);
|
||||
options, bucketnum, depth, qc, &fctx);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto unlock;
|
||||
new_fctx = ISC_TRUE;
|
||||
}
|
||||
} else if (fctx->depth > depth)
|
||||
fctx->depth = depth;
|
||||
|
||||
result = fctx_join(fctx, task, client, id, action, arg,
|
||||
rdataset, sigrdataset, fetch);
|
||||
@@ -8847,3 +8925,27 @@ dns_resolver_settimeout(dns_resolver_t *resolver, unsigned int seconds) {
|
||||
|
||||
resolver->query_timeout = seconds;
|
||||
}
|
||||
|
||||
void
|
||||
dns_resolver_setmaxdepth(dns_resolver_t *resolver, unsigned int maxdepth) {
|
||||
REQUIRE(VALID_RESOLVER(resolver));
|
||||
resolver->maxdepth = maxdepth;
|
||||
}
|
||||
|
||||
unsigned int
|
||||
dns_resolver_getmaxdepth(dns_resolver_t *resolver) {
|
||||
REQUIRE(VALID_RESOLVER(resolver));
|
||||
return (resolver->maxdepth);
|
||||
}
|
||||
|
||||
void
|
||||
dns_resolver_setmaxqueries(dns_resolver_t *resolver, unsigned int queries) {
|
||||
REQUIRE(VALID_RESOLVER(resolver));
|
||||
resolver->maxqueries = queries;
|
||||
}
|
||||
|
||||
unsigned int
|
||||
dns_resolver_getmaxqueries(dns_resolver_t *resolver) {
|
||||
REQUIRE(VALID_RESOLVER(resolver));
|
||||
return (resolver->maxqueries);
|
||||
}
|
||||
@@ -650,6 +650,7 @@ dns_tkey_processquery(dns_message_t *msg, dns_tkeyctx_t *tctx,
|
||||
* Try the answer section, since that's where Win2000
|
||||
* puts it.
|
||||
*/
|
||||
name = NULL;
|
||||
if (dns_message_findname(msg, DNS_SECTION_ANSWER, qname,
|
||||
dns_rdatatype_tkey, 0, &name,
|
||||
&tkeyset) != ISC_R_SUCCESS) {
|
||||
|
||||
@@ -1841,7 +1841,6 @@ compute_keytag(dns_rdata_t *rdata, dns_rdata_dnskey_t *key) {
|
||||
*/
|
||||
static isc_boolean_t
|
||||
isselfsigned(dns_validator_t *val) {
|
||||
dns_fixedname_t fixed;
|
||||
dns_rdataset_t *rdataset, *sigrdataset;
|
||||
dns_rdata_t rdata = DNS_RDATA_INIT;
|
||||
dns_rdata_t sigrdata = DNS_RDATA_INIT;
|
||||
@@ -1892,7 +1891,7 @@ isselfsigned(dns_validator_t *val) {
|
||||
|
||||
result = dns_dnssec_verify2(name, rdataset, dstkey,
|
||||
ISC_TRUE, mctx, &sigrdata,
|
||||
dns_fixedname_name(&fixed));
|
||||
NULL);
|
||||
dst_key_free(&dstkey);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
continue;
|
||||
|
||||
@@ -7687,6 +7687,12 @@ keyfetch_done(isc_task_t *task, isc_event_t *event) {
|
||||
namebuf, tag);
|
||||
trustkey = ISC_TRUE;
|
||||
}
|
||||
} else {
|
||||
/*
|
||||
* No previously known key, and the key is not
|
||||
* secure, so skip it.
|
||||
*/
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Delete old version */
|
||||
@@ -7733,7 +7739,7 @@ keyfetch_done(isc_task_t *task, isc_event_t *event) {
|
||||
trust_key(zone, keyname, &dnskey, mctx);
|
||||
}
|
||||
|
||||
if (!deletekey)
|
||||
if (secure && !deletekey)
|
||||
set_refreshkeytimer(zone, &keydata, now);
|
||||
}
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ WIN32OBJS = win32/condition.@O@ win32/dir.@O@ win32/file.@O@ \
|
||||
# Alphabetically
|
||||
OBJS = @ISC_EXTRA_OBJS@ \
|
||||
assertions.@O@ backtrace.@O@ backtrace-emptytbl.@O@ base32.@O@ \
|
||||
base64.@O@ buffer.@O@ bufferlist.@O@ \
|
||||
base64.@O@ buffer.@O@ bufferlist.@O@ counter.@O@ \
|
||||
error.@O@ event.@O@ \
|
||||
hash.@O@ hex.@O@ hmacmd5.@O@ hmacsha.@O@ \
|
||||
inet_aton.@O@ iterated_hash.@O@ lex.@O@ lfsr.@O@ log.@O@ \
|
||||
@@ -86,7 +86,7 @@ ISCDRIVERSRCS = mem.c task.c lib.c timer.c heap.c
|
||||
|
||||
SRCS = @ISC_EXTRA_SRCS@ \
|
||||
assertions.c backtrace.c backtrace-emptytbl.c base32.c \
|
||||
base64.c buffer.c bufferlist.c \
|
||||
base64.c buffer.c bufferlist.c counter.c \
|
||||
error.c event.c \
|
||||
hash.c hex.c hmacmd5.c hmacsha.c \
|
||||
inet_aton.c iterated_hash.c lex.c log.c lfsr.c \
|
||||
|
||||
@@ -13,8 +13,6 @@
|
||||
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
# PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
# $Id$
|
||||
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
@@ -53,7 +51,7 @@ WIN32OBJS = win32/condition.@O@ win32/dir.@O@ win32/file.@O@ \
|
||||
OBJS = @ISC_EXTRA_OBJS@ \
|
||||
assertions.@O@ backtrace.@O@ base32.@O@ base64.@O@ \
|
||||
bitstring.@O@ buffer.@O@ bufferlist.@O@ commandline.@O@ \
|
||||
error.@O@ event.@O@ \
|
||||
counter.@O@ error.@O@ event.@O@ \
|
||||
hash.@O@ heap.@O@ hex.@O@ hmacmd5.@O@ hmacsha.@O@ \
|
||||
httpd.@O@ inet_aton.@O@ iterated_hash.@O@ \
|
||||
lex.@O@ lfsr.@O@ lib.@O@ log.@O@ \
|
||||
@@ -69,8 +67,8 @@ SYMTBLOBJS = backtrace-emptytbl.@O@
|
||||
# Alphabetically
|
||||
SRCS = @ISC_EXTRA_SRCS@ \
|
||||
assertions.c backtrace.c base32.c base64.c bitstring.c \
|
||||
buffer.c bufferlist.c commandline.c error.c event.c \
|
||||
heap.c hex.c hmacmd5.c hmacsha.c \
|
||||
buffer.c bufferlist.c commandline.c counter.c \
|
||||
error.c event.c heap.c hex.c hmacmd5.c hmacsha.c \
|
||||
httpd.c inet_aton.c iterated_hash.c \
|
||||
lex.c lfsr.c lib.c log.c \
|
||||
md5.c mem.c mutexblock.c \
|
||||
|
||||
@@ -0,0 +1,138 @@
|
||||
/*
|
||||
* Copyright (C) 2014 Internet Systems Consortium, Inc. ("ISC")
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
|
||||
* REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
* AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
|
||||
* OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/*! \file */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#include <isc/counter.h>
|
||||
#include <isc/magic.h>
|
||||
#include <isc/mem.h>
|
||||
#include <isc/util.h>
|
||||
|
||||
#define COUNTER_MAGIC ISC_MAGIC('C', 'n', 't', 'r')
|
||||
#define VALID_COUNTER(r) ISC_MAGIC_VALID(r, COUNTER_MAGIC)
|
||||
|
||||
struct isc_counter {
|
||||
unsigned int magic;
|
||||
isc_mem_t *mctx;
|
||||
isc_mutex_t lock;
|
||||
unsigned int references;
|
||||
unsigned int limit;
|
||||
unsigned int used;
|
||||
};
|
||||
|
||||
isc_result_t
|
||||
isc_counter_create(isc_mem_t *mctx, int limit, isc_counter_t **counterp) {
|
||||
isc_result_t result;
|
||||
isc_counter_t *counter;
|
||||
|
||||
REQUIRE(counterp != NULL && *counterp == NULL);
|
||||
|
||||
counter = isc_mem_get(mctx, sizeof(*counter));
|
||||
if (counter == NULL)
|
||||
return (ISC_R_NOMEMORY);
|
||||
|
||||
result = isc_mutex_init(&counter->lock);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
isc_mem_put(mctx, counter, sizeof(*counter));
|
||||
return (result);
|
||||
}
|
||||
|
||||
counter->mctx = NULL;
|
||||
isc_mem_attach(mctx, &counter->mctx);
|
||||
|
||||
counter->references = 1;
|
||||
counter->limit = limit;
|
||||
counter->used = 0;
|
||||
|
||||
counter->magic = COUNTER_MAGIC;
|
||||
*counterp = counter;
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
isc_counter_increment(isc_counter_t *counter) {
|
||||
isc_result_t result = ISC_R_SUCCESS;
|
||||
|
||||
LOCK(&counter->lock);
|
||||
counter->used++;
|
||||
if (counter->limit != 0 && counter->used >= counter->limit)
|
||||
result = ISC_R_QUOTA;
|
||||
UNLOCK(&counter->lock);
|
||||
|
||||
return (result);
|
||||
}
|
||||
|
||||
unsigned int
|
||||
isc_counter_used(isc_counter_t *counter) {
|
||||
REQUIRE(VALID_COUNTER(counter));
|
||||
|
||||
return (counter->used);
|
||||
}
|
||||
|
||||
void
|
||||
isc_counter_setlimit(isc_counter_t *counter, int limit) {
|
||||
REQUIRE(VALID_COUNTER(counter));
|
||||
|
||||
LOCK(&counter->lock);
|
||||
counter->limit = limit;
|
||||
UNLOCK(&counter->lock);
|
||||
}
|
||||
|
||||
void
|
||||
isc_counter_attach(isc_counter_t *source, isc_counter_t **targetp) {
|
||||
REQUIRE(VALID_COUNTER(source));
|
||||
REQUIRE(targetp != NULL && *targetp == NULL);
|
||||
|
||||
LOCK(&source->lock);
|
||||
source->references++;
|
||||
INSIST(source->references > 0);
|
||||
UNLOCK(&source->lock);
|
||||
|
||||
*targetp = source;
|
||||
}
|
||||
|
||||
static void
|
||||
destroy(isc_counter_t *counter) {
|
||||
counter->magic = 0;
|
||||
isc_mutex_destroy(&counter->lock);
|
||||
isc_mem_putanddetach(&counter->mctx, counter, sizeof(*counter));
|
||||
}
|
||||
|
||||
void
|
||||
isc_counter_detach(isc_counter_t **counterp) {
|
||||
isc_counter_t *counter;
|
||||
isc_boolean_t want_destroy = ISC_FALSE;
|
||||
|
||||
REQUIRE(counterp != NULL && *counterp != NULL);
|
||||
counter = *counterp;
|
||||
REQUIRE(VALID_COUNTER(counter));
|
||||
|
||||
*counterp = NULL;
|
||||
|
||||
LOCK(&counter->lock);
|
||||
INSIST(counter->references > 0);
|
||||
counter->references--;
|
||||
if (counter->references == 0)
|
||||
want_destroy = ISC_TRUE;
|
||||
UNLOCK(&counter->lock);
|
||||
|
||||
if (want_destroy)
|
||||
destroy(counter);
|
||||
}
|
||||
@@ -13,8 +13,6 @@
|
||||
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
# PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
# $Id$
|
||||
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
@@ -27,7 +25,8 @@ top_srcdir = @top_srcdir@
|
||||
# install target below.
|
||||
#
|
||||
HEADERS = app.h assertions.h base64.h bind9.h bitstring.h boolean.h \
|
||||
buffer.h bufferlist.h commandline.h entropy.h error.h event.h \
|
||||
buffer.h bufferlist.h \
|
||||
commandline.h counter.h entropy.h error.h event.h \
|
||||
eventclass.h file.h formatcheck.h fsaccess.h \
|
||||
hash.h heap.h hex.h hmacmd5.h hmacsha.h \
|
||||
httpd.h \
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
/*
|
||||
* Copyright (C) 2014 Internet Systems Consortium, Inc. ("ISC")
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
|
||||
* REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
* AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
|
||||
* OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef ISC_COUNTER_H
|
||||
#define ISC_COUNTER_H 1
|
||||
|
||||
/*****
|
||||
***** Module Info
|
||||
*****/
|
||||
|
||||
/*! \file isc/counter.h
|
||||
*
|
||||
* \brief The isc_counter_t object is a simplified version of the
|
||||
* isc_quota_t object; it tracks the consumption of limited
|
||||
* resources, returning an error condition when the quota is
|
||||
* exceeded. However, unlike isc_quota_t, attaching and detaching
|
||||
* from a counter object does not increment or decrement the counter.
|
||||
*/
|
||||
|
||||
/***
|
||||
*** Imports.
|
||||
***/
|
||||
|
||||
#include <isc/lang.h>
|
||||
#include <isc/mutex.h>
|
||||
#include <isc/types.h>
|
||||
|
||||
/*****
|
||||
***** Types.
|
||||
*****/
|
||||
|
||||
ISC_LANG_BEGINDECLS
|
||||
|
||||
isc_result_t
|
||||
isc_counter_create(isc_mem_t *mctx, int limit, isc_counter_t **counterp);
|
||||
/*%<
|
||||
* Allocate and initialize a counter object.
|
||||
*/
|
||||
|
||||
isc_result_t
|
||||
isc_counter_increment(isc_counter_t *counter);
|
||||
/*%<
|
||||
* Increment the counter.
|
||||
*
|
||||
* If the counter limit is nonzero and has been reached, then
|
||||
* return ISC_R_QUOTA, otherwise ISC_R_SUCCESS. (The counter is
|
||||
* incremented regardless of return value.)
|
||||
*/
|
||||
|
||||
unsigned int
|
||||
isc_counter_used(isc_counter_t *counter);
|
||||
/*%<
|
||||
* Return the current counter value.
|
||||
*/
|
||||
|
||||
void
|
||||
isc_counter_setlimit(isc_counter_t *counter, int limit);
|
||||
/*%<
|
||||
* Set the counter limit.
|
||||
*/
|
||||
|
||||
void
|
||||
isc_counter_attach(isc_counter_t *source, isc_counter_t **targetp);
|
||||
/*%<
|
||||
* Attach to a counter object, increasing its reference counter.
|
||||
*/
|
||||
|
||||
void
|
||||
isc_counter_detach(isc_counter_t **counterp);
|
||||
/*%<
|
||||
* Detach (and destroy if reference counter has dropped to zero)
|
||||
* a counter object.
|
||||
*/
|
||||
|
||||
ISC_LANG_ENDDECLS
|
||||
|
||||
#endif /* ISC_COUNTER_H */
|
||||
@@ -50,6 +50,7 @@ typedef struct isc_buffer isc_buffer_t; /*%< Buffer */
|
||||
typedef ISC_LIST(isc_buffer_t) isc_bufferlist_t; /*%< Buffer List */
|
||||
typedef struct isc_constregion isc_constregion_t; /*%< Const region */
|
||||
typedef struct isc_consttextregion isc_consttextregion_t; /*%< Const Text Region */
|
||||
typedef struct isc_counter isc_counter_t; /*%< Counter */
|
||||
typedef struct isc_entropy isc_entropy_t; /*%< Entropy */
|
||||
typedef struct isc_entropysource isc_entropysource_t; /*%< Entropy Source */
|
||||
typedef struct isc_event isc_event_t; /*%< Event */
|
||||
|
||||
@@ -15,8 +15,6 @@
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/*! \file */
|
||||
|
||||
#include <config.h>
|
||||
@@ -1348,6 +1346,8 @@ view_clauses[] = {
|
||||
{ "max-cache-ttl", &cfg_type_uint32, 0 },
|
||||
{ "max-clients-per-query", &cfg_type_uint32, 0 },
|
||||
{ "max-ncache-ttl", &cfg_type_uint32, 0 },
|
||||
{ "max-recursion-depth", &cfg_type_uint32, 0 },
|
||||
{ "max-recursion-queries", &cfg_type_uint32, 0 },
|
||||
{ "max-udp-size", &cfg_type_uint32, 0 },
|
||||
{ "min-roots", &cfg_type_uint32, CFG_CLAUSEFLAG_NOTIMP },
|
||||
{ "minimal-responses", &cfg_type_boolean, 0 },
|
||||
|
||||
@@ -488,6 +488,11 @@ snmp_getbulk(struct snmp_pdu *pdu, struct asn_buf *resp_b,
|
||||
for (cnt = 0; cnt < pdu->error_index; cnt++) {
|
||||
eomib = 1;
|
||||
for (i = non_rep; i < pdu->nbindings; i++) {
|
||||
|
||||
if (resp->nbindings == SNMP_MAX_BINDINGS)
|
||||
/* PDU is full */
|
||||
goto done;
|
||||
|
||||
if (cnt == 0)
|
||||
result = do_getnext(&context, &pdu->bindings[i],
|
||||
&resp->bindings[resp->nbindings], pdu);
|
||||
|
||||
+645
-3
@@ -1,3 +1,645 @@
|
||||
2015-01-02 15:15 Christos Zoulas <[email protected]>
|
||||
|
||||
* release 5.22
|
||||
|
||||
2015-01-01 12:01 Christos Zoulas <[email protected]>
|
||||
|
||||
* add indirect relative for TIFF/Exif
|
||||
|
||||
2014-12-16 18:10 Christos Zoulas <[email protected]>
|
||||
|
||||
* restructure elf note printing to avoid repeated messages
|
||||
* add note limit, suggested by Alexander Cherepanov
|
||||
|
||||
2014-12-16 16:53 Christos Zoulas <[email protected]>
|
||||
|
||||
* Bail out on partial pread()'s (Alexander Cherepanov)
|
||||
* Fix incorrect bounds check in file_printable (Alexander Cherepanov)
|
||||
|
||||
2014-12-11 20:01 Christos Zoulas <[email protected]>
|
||||
|
||||
* PR/405: ignore SIGPIPE from uncompress programs
|
||||
* change printable -> file_printable and use it in
|
||||
more places for safety
|
||||
* in ELF, instead of "(uses dynamic libraries)" when PT_INTERP
|
||||
is present print the interpreter name.
|
||||
|
||||
2014-12-10 20:01 Christos Zoulas <[email protected]>
|
||||
|
||||
* release 5.21
|
||||
|
||||
2014-11-27 18:40 Christos Zoulas <[email protected]>
|
||||
|
||||
* Allow setting more parameters from the command line.
|
||||
* Split name/use and indirect magic recursion limits.
|
||||
|
||||
2014-11-27 11:12 Christos Zoulas <[email protected]>
|
||||
|
||||
* Adjust ELF parameters and the default recursion
|
||||
level.
|
||||
* Allow setting the recursion level dynamically.
|
||||
|
||||
2014-11-24 8:55 Christos Zoulas <[email protected]>
|
||||
|
||||
* The following fixes resulted from Thomas Jarosch's fuzzing
|
||||
tests that revealed severe performance issues on pathological
|
||||
input:
|
||||
- limit number of elf program and sections processing
|
||||
- abort elf note processing quickly
|
||||
- reduce the number of recursion levels from 20 to 10
|
||||
- preserve error messages in indirect magic handling
|
||||
|
||||
This is tracked as CVE-2014-8116 and CVE-2014-8117
|
||||
|
||||
2014-11-12 10:30 Christos Zoulas <[email protected]>
|
||||
|
||||
* fix bogus free in the user buffer case.
|
||||
|
||||
2014-11-11 12:35 Christos Zoulas <[email protected]>
|
||||
|
||||
* fix out of bounds read for pascal strings
|
||||
* fix memory leak (not freeing the head of each mlist)
|
||||
|
||||
2014-11-07 10:25 Christos Zoulas <[email protected]>
|
||||
|
||||
* When printing strings from a file, convert them to printable
|
||||
on a byte by byte basis, so that we don't get issues with
|
||||
locale's trying to interpret random byte streams as UTF-8 and
|
||||
having printf error out with EILSEQ.
|
||||
|
||||
2014-10-17 11:48 Christos Zoulas <[email protected]>
|
||||
|
||||
* fix bounds in note reading (Francisco Alonso / Red Hat)
|
||||
|
||||
2014-10-11 15:02 Christos Zoulas <[email protected]>
|
||||
|
||||
* fix autoconf glue for setlocale and locale_t; some OS's
|
||||
have locale_t in xlocale.h
|
||||
|
||||
2014-10-10 15:01 Christos Zoulas <[email protected]>
|
||||
|
||||
* release 5.20
|
||||
|
||||
2014-08-17 10:01 Christos Zoulas <[email protected]>
|
||||
|
||||
* recognize encrypted CDF documents
|
||||
|
||||
2014-08-04 9:18 Christos Zoulas <[email protected]>
|
||||
|
||||
* add magic_load_buffers from Brooks Davis
|
||||
|
||||
2014-07-24 16:40 Christos Zoulas <[email protected]>
|
||||
|
||||
* add thumbs.db support
|
||||
|
||||
2014-06-12 12:28 Christos Zoulas <[email protected]>
|
||||
|
||||
* release 5.19
|
||||
|
||||
2014-06-09 9:04 Christos Zoulas <[email protected]>
|
||||
|
||||
* Misc buffer overruns and missing buffer size tests in cdf parsing
|
||||
(Francisco Alonso, Jan Kaluza)
|
||||
|
||||
2014-06-02 14:50 Christos Zoulas <[email protected]>
|
||||
|
||||
* Enforce limit of 8K on regex searches that have no limits
|
||||
* Allow the l modifier for regex to mean line count. Default
|
||||
to byte count. If line count is specified, assume a max
|
||||
of 80 characters per line to limit the byte count.
|
||||
* Don't allow conversions to be used for dates, allowing
|
||||
the mask field to be used as an offset.
|
||||
|
||||
2014-05-30 12:51 Christos Zoulas <[email protected]>
|
||||
|
||||
* Make the range operator limit the length of the
|
||||
regex search.
|
||||
|
||||
2014-05-14 19:23 Christos Zoulas <[email protected]>
|
||||
|
||||
* PR/347: Windows fixes
|
||||
* PR/352: Hangul word processor recognition
|
||||
* PR/354: Encoding irregularities in text files
|
||||
|
||||
2014-05-06 6:12 Christos Zoulas <[email protected]>
|
||||
|
||||
* Fix uninitialized title in CDF files (Jan Kaluza)
|
||||
|
||||
2014-05-04 14:55 Christos Zoulas <[email protected]>
|
||||
|
||||
* PR/351: Fix compilation of empty files
|
||||
|
||||
2014-04-30 17:39 Christos Zoulas <[email protected]>
|
||||
|
||||
* Fix integer formats: We don't specify 'l' or
|
||||
'h' and 'hh' specifiers anymore, only 'll' for
|
||||
quads and nothing for the rest. This is so that
|
||||
magic writing is simpler.
|
||||
|
||||
2014-04-01 15:25 Christos Zoulas <[email protected]>
|
||||
|
||||
* PR/341: Jan Kaluza, fix memory leak
|
||||
* PR/342: Jan Kaluza, fix out of bounds read
|
||||
|
||||
2014-03-28 15:25 Christos Zoulas <[email protected]>
|
||||
|
||||
* Fix issue with long formats not matching fmtcheck
|
||||
|
||||
2014-03-26 11:25 Christos Zoulas <[email protected]>
|
||||
|
||||
* release 5.18
|
||||
|
||||
2014-03-15 17:45 Christos Zoulas <[email protected]>
|
||||
|
||||
* add fmtcheck(3) for those who don't have it
|
||||
|
||||
2014-03-14 15:12 Christos Zoulas <[email protected]>
|
||||
|
||||
* prevent mime entries from being attached to magic
|
||||
entries with no descriptions
|
||||
|
||||
* adjust magic strength for regex type
|
||||
|
||||
* remove superfluous ascmagic with encoding test
|
||||
|
||||
2014-03-06 12:01 Christos Zoulas <[email protected]>
|
||||
|
||||
* fix regression fix echo -ne "\012\013\014" | file -i -
|
||||
which printed "binary" instead of "application/octet-stream"
|
||||
|
||||
* add size_t overflow check for magic file size
|
||||
|
||||
2014-02-27 16:01 Christos Zoulas <[email protected]>
|
||||
|
||||
* experimental support for matching with CFD CLSID
|
||||
|
||||
2014-02-18 13:04 Kimmo Suominen ([email protected])
|
||||
|
||||
* Cache old LC_CTYPE locale before setting it to "C", so
|
||||
we can use it to restore LC_CTYPE instead of asking
|
||||
setlocale() to scan the environment variables.
|
||||
|
||||
2014-02-12 18:21 Christos Zoulas <[email protected]>
|
||||
|
||||
* Count recursion levels through indirect magic
|
||||
|
||||
2014-02-11 10:40 Christos Zoulas <[email protected]>
|
||||
|
||||
* Prevent infinite recursion on files with indirect offsets of 0
|
||||
|
||||
2014-01-30 21:00 Christos Zoulas <[email protected]>
|
||||
|
||||
* Add -E flag that makes file print filesystem errors to stderr
|
||||
and exit.
|
||||
|
||||
2014-01-08 17:20 Christos Zoulas <[email protected]>
|
||||
|
||||
* mime printing could print results from multiple magic entries
|
||||
if there were multiple matches.
|
||||
* in some cases overflow was not detected when computing offsets
|
||||
in softmagic.
|
||||
|
||||
2013-12-05 12:00 Christos Zoulas <[email protected]>
|
||||
|
||||
* use strcasestr() to for cdf strings
|
||||
* reset to the "C" locale while doing regex operations, or case
|
||||
insensitive comparisons; this is provisional
|
||||
|
||||
2013-11-19 20:10 Christos Zoulas <[email protected]>
|
||||
|
||||
* always leave magic file loaded, don't unload for magic_check, etc.
|
||||
* fix default encoding to binary instead of unknown which broke recently
|
||||
* handle empty and one byte files, less specially so that
|
||||
--mime-encoding does not break completely.
|
||||
`
|
||||
2013-11-06 14:40 Christos Zoulas <[email protected]>
|
||||
|
||||
* fix erroneous non-zero exit code from non-existant file and message
|
||||
|
||||
2013-10-29 14:25 Christos Zoulas <[email protected]>
|
||||
|
||||
* add CDF MSI file detection (Guy Helmer)
|
||||
|
||||
2013-09-03 11:56 Christos Zoulas <[email protected]>
|
||||
|
||||
* Don't mix errors and regular output if there was an error
|
||||
* in magic_descriptor() don't close the file and try to restore
|
||||
its position
|
||||
|
||||
2013-05-30 17:25 Christos Zoulas <[email protected]>
|
||||
|
||||
* Don't treat magic as an error if offset was past EOF (Christoph Biedl)
|
||||
|
||||
2013-05-28 17:25 Christos Zoulas <[email protected]>
|
||||
|
||||
* Fix spacing issues in softmagic and elf (Jan Kaluza)
|
||||
|
||||
2013-05-02 18:00 Christos Zoulas <[email protected]>
|
||||
|
||||
* Fix segmentation fault with multiple magic_load commands.
|
||||
|
||||
2013-04-22 11:20 Christos Zoulas <[email protected]>
|
||||
|
||||
* The way "default" was implemented was not very useful
|
||||
because the "if something was printed at that level"
|
||||
was not easily controlled by the user, and the format
|
||||
was bound to a string which is too restrictive. Add
|
||||
a "clear" for that level keyword and make "default"
|
||||
void. This way one can do:
|
||||
|
||||
>>13 clear x
|
||||
>>13 lelong 1 foo
|
||||
>>13 lelong 2 bar
|
||||
>>13 default x
|
||||
>>>13 lelong x unknown %x
|
||||
|
||||
2013-03-25 13:20 Christos Zoulas <[email protected]>
|
||||
|
||||
* disallow strength setting in "name" entries
|
||||
|
||||
2013-03-06 21:24 Christos Zoulas <[email protected]>
|
||||
|
||||
* fix recursive magic separator printing
|
||||
|
||||
2013-02-26 19:28 Christos Zoulas <[email protected]>
|
||||
|
||||
* limit recursion level for mget
|
||||
* fix pread() related breakage in cdf
|
||||
* handle offsets properly in recursive "use"
|
||||
|
||||
2013-02-18 10:39 Christos Zoulas <[email protected]>
|
||||
|
||||
* add elf reading of debug info to determine if file is stripped
|
||||
(Jan Kaluza)
|
||||
* use pread()
|
||||
|
||||
2013-01-25 18:05 Christos Zoulas <[email protected]>
|
||||
|
||||
* change mime description size from 64 to 80 to accommodate OOXML.
|
||||
|
||||
2013-01-11 14:50 Christos Zoulas <[email protected]>
|
||||
|
||||
* Warn about inconsistent continuation levels.
|
||||
* Change fsmagic to add a space after it prints.
|
||||
|
||||
2013-01-10 21:00 Christos Zoulas <[email protected]>
|
||||
|
||||
* Make getline public so that file can link against it.
|
||||
Perhaps it is better to rename it, or hide it differently.
|
||||
Fixes builds on platforms that do not provide it.
|
||||
|
||||
2013-01-07 16:30 Christos Zoulas <[email protected]>
|
||||
|
||||
* Add SuS d{,1,2,4,8}, u{,1,2,4,8} and document
|
||||
what long, int, short, etc is (Guy Harris)
|
||||
|
||||
2013-01-06 11:20 Christos Zoulas <[email protected]>
|
||||
|
||||
* add magic_version function and constant
|
||||
* Redo memory allocation and de-allocation.
|
||||
(prevents double frees on non mmap platforms)
|
||||
* Fix bug with name/use having to do with passing
|
||||
found state from the parent to the child and back.
|
||||
|
||||
2012-12-19 8:47 Christos Zoulas <[email protected]>
|
||||
|
||||
* Only print elf capabilities for archs we know (Jan Kaluza)
|
||||
|
||||
2012-10-30 19:14 Christos Zoulas <[email protected]>
|
||||
|
||||
* Add "name" and "use" file types in order to look
|
||||
inside mach-o files.
|
||||
|
||||
2012-09-06 10:40 Christos Zoulas <[email protected]>
|
||||
|
||||
* make --version exit 0 (Matthew Schultz)
|
||||
* add string/T (Jan Kaluza)
|
||||
|
||||
2012-08-09 2:15 Christos Zoulas <[email protected]>
|
||||
|
||||
* add z and t modifiers for our own vasprintf
|
||||
* search for $HOME/.magic.mgc if it is there first
|
||||
* fix reads from a pipe, and preserve errno
|
||||
|
||||
2012-05-15 13:12 Christos Zoulas <[email protected]>
|
||||
|
||||
* use ctime_r, asctime_r
|
||||
|
||||
2012-04-06 17:18 Christos Zoulas <[email protected]>
|
||||
|
||||
* Fixes for indirect offsets to handle apple disk formats
|
||||
|
||||
2012-04-03 18:26 Christos Zoulas <[email protected]>
|
||||
|
||||
* Add windows date field types
|
||||
* More info for windows shortcuts (incomplete)
|
||||
|
||||
2012-02-20 17:33 Christos Zoulas <[email protected]>
|
||||
|
||||
* Fix CDF parsing issues found by CERT's fuzzing tool (Will Dormann)
|
||||
|
||||
2011-12-15 12:17 Chris Metcalf <[email protected]>
|
||||
|
||||
* Support Tilera architectures (tile64, tilepro, tilegx).
|
||||
|
||||
2011-12-16 16:33 Reuben Thomas <[email protected]>
|
||||
|
||||
* Add magic for /usr/bin/env Perl scripts
|
||||
* Weaken generic script magic to avoid clashing with
|
||||
language-specific magic.
|
||||
|
||||
2011-12-08 13:37 Reuben Thomas <[email protected]>
|
||||
|
||||
* Simplify if (p) free(p) to free(p).
|
||||
|
||||
2011-12-08 13:07 Reuben Thomas <[email protected]>
|
||||
|
||||
* Remove hardwired token finding (names.h), turning it into soft
|
||||
magic. Patterns are either anchored regexs or search/8192. English
|
||||
language detection and PL/1 detection have been removed as they
|
||||
were too fragile. -e tokens is still accepted for backwards
|
||||
compatibility.
|
||||
* Move 3ds patterns (which are commented out anyway) into autodesk
|
||||
(they were, oddly, in c-lang).
|
||||
|
||||
2011-12-06 00:16 Reuben Thomas <[email protected]>
|
||||
|
||||
* Tweak strength of generic hash-bang detectors to be less than
|
||||
specific ones.
|
||||
* Make an inconsistent description of Python scripts consistent.
|
||||
|
||||
2011-12-05 23:58 Reuben Thomas <[email protected]>
|
||||
|
||||
* Fix minor error in file(1).
|
||||
|
||||
2011-11-05 00:00 Reuben Thomas <[email protected]>
|
||||
|
||||
* Fix issue #150 (I hope).
|
||||
|
||||
2011-09-22 12:57 Christos Zoulas <[email protected]>
|
||||
|
||||
* Python3 binding fixes from Kelly Anderson
|
||||
|
||||
2011-09-20 11:32 Christos Zoulas <[email protected]>
|
||||
|
||||
* If a string type magic entry is marked as text or binary
|
||||
only match text files against text entries and binary
|
||||
files against binary entries.
|
||||
|
||||
2011-09-01 12:12 Christos Zoulas <[email protected]>
|
||||
|
||||
* Don't wait for any subprocess, just the one we forked.
|
||||
|
||||
2011-08-26 16:40 Christos Zoulas <[email protected]>
|
||||
|
||||
* If the application name is not set in a cdf file, try to see
|
||||
if it has a directory with the application name on it.
|
||||
|
||||
2011-08-17 14:32 Christos Zoulas <[email protected]>
|
||||
|
||||
* Fix ELF lseek(2) madness. Inspired by PR/134 by Jan Kaluza
|
||||
|
||||
2011-08-14 09:03 Christos Zoulas <[email protected]>
|
||||
|
||||
* Don't use variable string formats.
|
||||
|
||||
2011-07-12 12:32 Reuben Thomas <[email protected]>
|
||||
|
||||
* Fix detection of Zip files (Mantis #128).
|
||||
* Make some minor improvements to file(1).
|
||||
* Rename MIME types for filesystem objects for consistency with
|
||||
xdg-utils. Typically this means that application/x-foo becomes
|
||||
inode/foo, but some names also change slightly, e.g.
|
||||
application/x-character-device becomes inode/chardevice.
|
||||
|
||||
2011-05-10 20:57 Christos Zoulas <[email protected]>
|
||||
|
||||
* fix mingw compilation (Abradoks)
|
||||
|
||||
2011-05-10 20:57 Christos Zoulas <[email protected]>
|
||||
|
||||
* remove patchlevel.h
|
||||
* Fix read past allocated memory caused by double-incrementing
|
||||
a pointer in a loop (reported by Roberto Maar)
|
||||
|
||||
2011-03-30 15:45 Christos Zoulas <[email protected]>
|
||||
|
||||
* Fix cdf string buffer setting (Sven Anders)
|
||||
|
||||
2011-03-20 16:35 Christos Zoulas <[email protected]>
|
||||
|
||||
* Eliminate MAXPATHLEN and use dynamic allocation for
|
||||
path and file buffers.
|
||||
|
||||
2011-03-15 18:15 Christos Zoulas <[email protected]>
|
||||
|
||||
* binary tests on magic entries with masks could spuriously
|
||||
get converted to ascii.
|
||||
|
||||
2011-03-12 18:06 Reuben Thomas <[email protected]>
|
||||
|
||||
* Improve file.man (remove BUGS, present email addresses consistently).
|
||||
|
||||
2011-03-07 19:38 Christos Zoulas <[email protected]>
|
||||
|
||||
* add lrzip support (from Ville Skytta)
|
||||
|
||||
2011-02-10 16:36 Christos Zoulas <[email protected]>
|
||||
|
||||
* fix CDF bounds checking (Guy Helmer)
|
||||
|
||||
2011-02-10 12:03 Christos Zoulas <[email protected]>
|
||||
|
||||
* add cdf_ctime() that prints a meaningful error when time cannot
|
||||
be converted.
|
||||
|
||||
2011-02-02 20:40 Christos Zoulas <[email protected]>
|
||||
|
||||
* help and version output to stdout.
|
||||
|
||||
* When matching softmagic for ascii files, don't just print
|
||||
the softmagic classification, keep going and print the
|
||||
text classification too. This fixes broken troff files when
|
||||
we moved them from keyword recognition to softmagic
|
||||
(they stopped printing "with CRLF" etc.)
|
||||
Reported by Doug McIlroy.
|
||||
|
||||
2011-01-16 19:31 Reuben Thomas <[email protected]>
|
||||
|
||||
* Fix two potential buffer overruns in apprentice_list.
|
||||
|
||||
2011-01-14 22:33 Reuben Thomas <[email protected]>
|
||||
|
||||
* New Python binding in pure Python.
|
||||
* Update libmagic(3).
|
||||
|
||||
2011-01-06 21:40 Reuben Thomas <[email protected]>
|
||||
|
||||
* Fix Python bindings (including recent Python 3 compatibility
|
||||
update).
|
||||
|
||||
2011-01-04 18:43 Reuben Thomas <[email protected]>
|
||||
|
||||
* magic/Makefile.am: make it easier to recover from magic build failures.
|
||||
* Fix pstring length specifier parsing to avoid generating invalid
|
||||
magic files.
|
||||
* Add pstring length "J" (for "JPEG") to specify that the length
|
||||
include itself.
|
||||
* Fix JPEG comment parsing at last using pstring/HJ!
|
||||
* Ignore section 5 man pages in doc/.cvsignore.
|
||||
|
||||
2010-12-22 13:12 Christos Zoulas <[email protected]>
|
||||
|
||||
* Add pstring/BHhLl to specify the type of the length of pascal
|
||||
strings.
|
||||
|
||||
2010-11-26 18:39 Reuben Thomas <[email protected]>
|
||||
|
||||
* Fix "-e soft": it was ignored when softmagic was called
|
||||
during asciimagic.
|
||||
* Improve comments and use "unsigned char" in tar.h/is_tar.c.
|
||||
|
||||
2010-11-05 17:26 Reuben Thomas <[email protected]>
|
||||
|
||||
* Make bug reporting addresses more visible.
|
||||
|
||||
2010-11-01 18:35 Reuben Thomas <[email protected]>
|
||||
|
||||
* Add tcl magic from Gustaf Neumann
|
||||
|
||||
2010-10-24 10:42 Christos Zoulas <[email protected]>
|
||||
|
||||
* Fix the whitespace comparing code (Christopher Chittleborough)
|
||||
|
||||
2010-10-06 21:05 Christos Zoulas <[email protected]>
|
||||
|
||||
* allow string/t to work (Jan Kaluza)
|
||||
|
||||
2010-09-20 22:11 Reuben Thomas <[email protected]>
|
||||
|
||||
* Apply some patches from Ubuntu and Fedora.
|
||||
|
||||
2010-09-20 21:16 Reuben Thomas <[email protected]>
|
||||
|
||||
* Apply all patches from Debian package 5.04-6 which have not
|
||||
already been applied and are not Debian-specific.
|
||||
|
||||
2010-09-20 15:24 Reuben Thomas <[email protected]>
|
||||
|
||||
* Minor security fix to softmagic.c (don't use untrusted
|
||||
string as printf format).
|
||||
|
||||
2010-07-21 12:20 Christos Zoulas <[email protected]>
|
||||
|
||||
* MINGW32 portability from LRN
|
||||
|
||||
* Don't warn about escaping magic regex chars when we are in a regex.
|
||||
|
||||
2010-07-19 10:55 Christos Zoulas <[email protected]>
|
||||
|
||||
* Only try to print prpsinfo for core files. (Jan Kaluza)
|
||||
|
||||
2010-04-22 12:55 Christos Zoulas <[email protected]>
|
||||
|
||||
* Try more elf offsets for Debian core files. (Arnaud Giersch)
|
||||
|
||||
2010-02-20 15:18 Reuben Thomas <[email protected]>
|
||||
|
||||
* Clarify which sort of CDF we mean.
|
||||
|
||||
2010-02-14 22:58 Reuben Thomas <[email protected]>
|
||||
|
||||
* Re-jig Zip file type magic so that unsupported special
|
||||
Zip types (those with "mimetype" at offset 30) can be
|
||||
recognized.
|
||||
|
||||
2010-02-02 21:50 Reuben Thomas <[email protected]>
|
||||
|
||||
* Add support for OCF (EPUB) files (application/epub+zip)
|
||||
|
||||
2010-01-28 18:25 Christos Zoulas <[email protected]>
|
||||
|
||||
* Fix core-dump from unbound loop:
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=533245
|
||||
|
||||
2010-01-22 15:45 Christos Zoulas <[email protected]>
|
||||
|
||||
* print proper mime for crystal reports file
|
||||
|
||||
* print the last summary information of a cdf document, not the
|
||||
first so that nested documents print the right info
|
||||
|
||||
2010-01-16 18:42 Charles Longeau <[email protected]>
|
||||
|
||||
* bring back some fixes from OpenBSD:
|
||||
- make gcc2 builds file
|
||||
- fix typos in a magic file comment
|
||||
|
||||
2009-11-17 18:35 Christos Zoulas <[email protected]>
|
||||
|
||||
* ctime/asctime can return NULL on some OS's although
|
||||
they should not (Toshit Antani)
|
||||
|
||||
2009-09-14 13:49 Christos Zoulas <[email protected]>
|
||||
|
||||
* Centralize magic path handling routines and remove the
|
||||
special-casing from file.c so that the python module for
|
||||
example comes up with the same magic path (Fixes ~/.magic
|
||||
handling) (from Gab)
|
||||
|
||||
2009-09-11 23:38 Reuben Thomas <[email protected]>
|
||||
|
||||
* When magic argument is a directory, read the files in
|
||||
strcmp-sorted order (fixes Debian bug #488562 and our own FIXME).
|
||||
|
||||
2009-09-11 13:11 Reuben Thomas <[email protected]>
|
||||
|
||||
* Combine overlapping epoc and psion magic files into one (epoc).
|
||||
|
||||
* Add some more EPOC MIME types.
|
||||
|
||||
2009-08-19 15:55 Christos Zoulas <[email protected]>
|
||||
|
||||
* Fix 3 bugs (From Ian Darwin):
|
||||
- file_showstr could move one past the end of the array
|
||||
- parse_apple did not nul terminate the string in the overflow case
|
||||
- parse_mime truncated the wrong string in the overflow case
|
||||
|
||||
2009-08-12 12:28 Robert Byrnes <[email protected]>
|
||||
|
||||
* Include Localstuff when compiling magic.
|
||||
|
||||
2009-07-15 10:05 Christos Zoulas <[email protected]>
|
||||
|
||||
* Fix logic for including mygetopts.h
|
||||
|
||||
* Make cdf.c compile again with debugging
|
||||
|
||||
* Add the necessary field handling for crystal reports files to work
|
||||
|
||||
2009-06-23 01:34 Reuben Thomas <[email protected]>
|
||||
|
||||
* Stop "(if" identifying Lisp files, that's plain dumb!
|
||||
|
||||
2009-06-09 22:13 Reuben Thomas <[email protected]>
|
||||
|
||||
* Add a couple of missing MP3 MIME types.
|
||||
|
||||
2009-05-27 23:00 Reuben Thomas <[email protected]>
|
||||
|
||||
* Add full range of hash-bang tests for Python and Ruby.
|
||||
|
||||
* Add MIME types for Python and Ruby scripts.
|
||||
|
||||
2009-05-13 10:44 Christos Zoulas <[email protected]>
|
||||
|
||||
* off by one in parsing hw capabilities in elf
|
||||
(Cheng Renquan)
|
||||
|
||||
2009-05-08 13:40 Christos Zoulas <[email protected]>
|
||||
|
||||
* lint fixes and more from NetBSD
|
||||
|
||||
2009-05-06 10:25 Christos Zoulas <[email protected]>
|
||||
|
||||
* Avoid null dereference in cdf code (Drew Yao)
|
||||
@@ -545,7 +1187,7 @@
|
||||
|
||||
* Identify gnu tar vs. posix tar
|
||||
|
||||
* When keep going, don't print spurious newlines (Radek Vokál)
|
||||
* When keep going, don't print spurious newlines (Radek Vokal)
|
||||
|
||||
2006-04-01 12:02 Christos Zoulas <[email protected]>
|
||||
|
||||
@@ -569,7 +1211,7 @@
|
||||
2005-10-31 8:54 Christos Zoulas <[email protected]>
|
||||
|
||||
* Fix regression where the core info was not completely processed
|
||||
(Radek Vokál)
|
||||
(Radek Vokal)
|
||||
|
||||
2005-10-20 11:15 Christos Zoulas <[email protected]>
|
||||
|
||||
@@ -586,7 +1228,7 @@
|
||||
2005-09-20 13:33 Christos Zoulas <[email protected]>
|
||||
|
||||
* Don't print SVR4 Style in core files multiple times
|
||||
(Radek Vokál)
|
||||
(Radek Vokal)
|
||||
|
||||
2005-08-27 04:09 Christos Zoulas <[email protected]>
|
||||
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
# Magic
|
||||
# Magic data for file(1) command.
|
||||
# Machine-generated from src/cmd/file/magdir/*; edit there only!
|
||||
# Format is described in magic(files), where:
|
||||
# files is 5 on V7 and BSD, 4 on SV, and ?? in the SVID.
|
||||
+164
-33
@@ -2,18 +2,24 @@ Installation Instructions
|
||||
*************************
|
||||
|
||||
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
|
||||
2006 Free Software Foundation, Inc.
|
||||
2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is free documentation; the Free Software Foundation gives
|
||||
unlimited permission to copy, distribute and modify it.
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. This file is offered as-is,
|
||||
without warranty of any kind.
|
||||
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
Briefly, the shell commands `./configure; make; make install' should
|
||||
Briefly, the shell commands `./configure; make; make install' should
|
||||
configure, build, and install this package. The following
|
||||
more-detailed instructions are generic; see the `README' file for
|
||||
instructions specific to this package.
|
||||
instructions specific to this package. Some packages provide this
|
||||
`INSTALL' file but do not implement all of the features documented
|
||||
below. The lack of an optional feature in a given package is not
|
||||
necessarily a bug. More recommendations for GNU packages can be found
|
||||
in *note Makefile Conventions: (standards)Makefile Conventions.
|
||||
|
||||
The `configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
@@ -42,7 +48,7 @@ may remove or edit it.
|
||||
you want to change it or regenerate `configure' using a newer version
|
||||
of `autoconf'.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
The simplest way to compile this package is:
|
||||
|
||||
1. `cd' to the directory containing the package's source code and type
|
||||
`./configure' to configure the package for your system.
|
||||
@@ -53,12 +59,22 @@ The simplest way to compile this package is:
|
||||
2. Type `make' to compile the package.
|
||||
|
||||
3. Optionally, type `make check' to run any self-tests that come with
|
||||
the package.
|
||||
the package, generally using the just-built uninstalled binaries.
|
||||
|
||||
4. Type `make install' to install the programs and any data files and
|
||||
documentation.
|
||||
documentation. When installing into a prefix owned by root, it is
|
||||
recommended that the package be configured and built as a regular
|
||||
user, and only the `make install' phase executed with root
|
||||
privileges.
|
||||
|
||||
5. You can remove the program binaries and object files from the
|
||||
5. Optionally, type `make installcheck' to repeat any self-tests, but
|
||||
this time using the binaries in their final installed location.
|
||||
This target does not install anything. Running this target as a
|
||||
regular user, particularly if the prior `make install' required
|
||||
root privileges, verifies that the installation completed
|
||||
correctly.
|
||||
|
||||
6. You can remove the program binaries and object files from the
|
||||
source code directory by typing `make clean'. To also remove the
|
||||
files that `configure' created (so you can compile the package for
|
||||
a different kind of computer), type `make distclean'. There is
|
||||
@@ -67,12 +83,22 @@ The simplest way to compile this package is:
|
||||
all sorts of other programs in order to regenerate files that came
|
||||
with the distribution.
|
||||
|
||||
7. Often, you can also type `make uninstall' to remove the installed
|
||||
files again. In practice, not all packages have tested that
|
||||
uninstallation works correctly, even though it is required by the
|
||||
GNU Coding Standards.
|
||||
|
||||
8. Some packages, particularly those that use Automake, provide `make
|
||||
distcheck', which can by used by developers to test that all other
|
||||
targets like `make install' and `make uninstall' work correctly.
|
||||
This target is generally not run by end users.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that the
|
||||
`configure' script does not know about. Run `./configure --help' for
|
||||
details on some of the pertinent environment variables.
|
||||
Some systems require unusual options for compilation or linking that
|
||||
the `configure' script does not know about. Run `./configure --help'
|
||||
for details on some of the pertinent environment variables.
|
||||
|
||||
You can give `configure' initial values for configuration parameters
|
||||
by setting variables in the command line or in the environment. Here
|
||||
@@ -85,25 +111,41 @@ is an example:
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
You can compile the package for more than one kind of computer at the
|
||||
same time, by placing the object files for each architecture in their
|
||||
own directory. To do this, you can use GNU `make'. `cd' to the
|
||||
directory where you want the object files and executables to go and run
|
||||
the `configure' script. `configure' automatically checks for the
|
||||
source code in the directory that `configure' is in and in `..'.
|
||||
source code in the directory that `configure' is in and in `..'. This
|
||||
is known as a "VPATH" build.
|
||||
|
||||
With a non-GNU `make', it is safer to compile the package for one
|
||||
architecture at a time in the source code directory. After you have
|
||||
installed the package for one architecture, use `make distclean' before
|
||||
reconfiguring for another architecture.
|
||||
|
||||
On MacOS X 10.5 and later systems, you can create libraries and
|
||||
executables that work on multiple system types--known as "fat" or
|
||||
"universal" binaries--by specifying multiple `-arch' options to the
|
||||
compiler but only a single `-arch' option to the preprocessor. Like
|
||||
this:
|
||||
|
||||
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||
CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||
CPP="gcc -E" CXXCPP="g++ -E"
|
||||
|
||||
This is not guaranteed to produce working output in all cases, you
|
||||
may have to build one architecture at a time and combine the results
|
||||
using the `lipo' tool if you have problems.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, `make install' installs the package's commands under
|
||||
By default, `make install' installs the package's commands under
|
||||
`/usr/local/bin', include files under `/usr/local/include', etc. You
|
||||
can specify an installation prefix other than `/usr/local' by giving
|
||||
`configure' the option `--prefix=PREFIX'.
|
||||
`configure' the option `--prefix=PREFIX', where PREFIX must be an
|
||||
absolute file name.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
@@ -114,16 +156,47 @@ Documentation and other data files still use the regular prefix.
|
||||
In addition, if you use an unusual directory layout you can give
|
||||
options like `--bindir=DIR' to specify different values for particular
|
||||
kinds of files. Run `configure --help' for a list of the directories
|
||||
you can set and what kinds of files go in them.
|
||||
you can set and what kinds of files go in them. In general, the
|
||||
default for these options is expressed in terms of `${prefix}', so that
|
||||
specifying just `--prefix' will affect all of the other directory
|
||||
specifications that were not explicitly provided.
|
||||
|
||||
The most portable way to affect installation locations is to pass the
|
||||
correct locations to `configure'; however, many packages provide one or
|
||||
both of the following shortcuts of passing variable assignments to the
|
||||
`make install' command line to change installation locations without
|
||||
having to reconfigure or recompile.
|
||||
|
||||
The first method involves providing an override variable for each
|
||||
affected directory. For example, `make install
|
||||
prefix=/alternate/directory' will choose an alternate location for all
|
||||
directory configuration variables that were expressed in terms of
|
||||
`${prefix}'. Any directories that were specified during `configure',
|
||||
but not in terms of `${prefix}', must each be overridden at install
|
||||
time for the entire installation to be relocated. The approach of
|
||||
makefile variable overrides for each directory variable is required by
|
||||
the GNU Coding Standards, and ideally causes no recompilation.
|
||||
However, some platforms have known limitations with the semantics of
|
||||
shared libraries that end up requiring recompilation when using this
|
||||
method, particularly noticeable in packages that use GNU Libtool.
|
||||
|
||||
The second method involves providing the `DESTDIR' variable. For
|
||||
example, `make install DESTDIR=/alternate/directory' will prepend
|
||||
`/alternate/directory' before all installation names. The approach of
|
||||
`DESTDIR' overrides is not required by the GNU Coding Standards, and
|
||||
does not work on platforms that have drive letters. On the other hand,
|
||||
it does better at avoiding recompilation issues, and works well even
|
||||
when some directory options were not specified in terms of `${prefix}'
|
||||
at `configure' time.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
If the package supports it, you can cause programs to be installed
|
||||
with an extra prefix or suffix on their names by giving `configure' the
|
||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||
is something like `gnu-as' or `x' (for the X Window System). The
|
||||
@@ -135,14 +208,53 @@ find the X include and library files automatically, but if it doesn't,
|
||||
you can use the `configure' options `--x-includes=DIR' and
|
||||
`--x-libraries=DIR' to specify their locations.
|
||||
|
||||
Some packages offer the ability to configure how verbose the
|
||||
execution of `make' will be. For these packages, running `./configure
|
||||
--enable-silent-rules' sets the default to minimal output, which can be
|
||||
overridden with `make V=1'; while running `./configure
|
||||
--disable-silent-rules' sets the default to verbose, which can be
|
||||
overridden with `make V=0'.
|
||||
|
||||
Particular systems
|
||||
==================
|
||||
|
||||
On HP-UX, the default C compiler is not ANSI C compatible. If GNU
|
||||
CC is not installed, it is recommended to use the following options in
|
||||
order to use an ANSI C compiler:
|
||||
|
||||
./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
|
||||
|
||||
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
|
||||
|
||||
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
|
||||
parse its `<wchar.h>' header file. The option `-nodtk' can be used as
|
||||
a workaround. If GNU CC is not installed, it is therefore recommended
|
||||
to try
|
||||
|
||||
./configure CC="cc"
|
||||
|
||||
and if that doesn't work, try
|
||||
|
||||
./configure CC="cc -nodtk"
|
||||
|
||||
On Solaris, don't put `/usr/ucb' early in your `PATH'. This
|
||||
directory contains several dysfunctional programs; working variants of
|
||||
these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
|
||||
in your `PATH', put it _after_ `/usr/bin'.
|
||||
|
||||
On Haiku, software installed for all users goes in `/boot/common',
|
||||
not `/usr/local'. It is recommended to use the following options:
|
||||
|
||||
./configure --prefix=/boot/common
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' cannot figure out automatically,
|
||||
but needs to determine by the type of machine the package will run on.
|
||||
Usually, assuming the package is built to be run on the _same_
|
||||
architectures, `configure' can figure that out, but if it prints a
|
||||
message saying it cannot guess the machine type, give it the
|
||||
There may be some features `configure' cannot figure out
|
||||
automatically, but needs to determine by the type of machine the package
|
||||
will run on. Usually, assuming the package is built to be run on the
|
||||
_same_ architectures, `configure' can figure that out, but if it prints
|
||||
a message saying it cannot guess the machine type, give it the
|
||||
`--build=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name which has the form:
|
||||
|
||||
@@ -150,7 +262,8 @@ type, such as `sun4', or a canonical name which has the form:
|
||||
|
||||
where SYSTEM can have one of these forms:
|
||||
|
||||
OS KERNEL-OS
|
||||
OS
|
||||
KERNEL-OS
|
||||
|
||||
See the file `config.sub' for the possible values of each field. If
|
||||
`config.sub' isn't included in this package, then this package doesn't
|
||||
@@ -168,9 +281,9 @@ eventually be run) with `--host=TYPE'.
|
||||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for `configure' scripts to share, you
|
||||
can create a site shell script called `config.site' that gives default
|
||||
values for variables like `CC', `cache_file', and `prefix'.
|
||||
If you want to set default values for `configure' scripts to share,
|
||||
you can create a site shell script called `config.site' that gives
|
||||
default values for variables like `CC', `cache_file', and `prefix'.
|
||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
`CONFIG_SITE' environment variable to the location of the site script.
|
||||
@@ -179,7 +292,7 @@ A warning: not all `configure' scripts look for a site script.
|
||||
Defining Variables
|
||||
==================
|
||||
|
||||
Variables not defined in a site shell script can be set in the
|
||||
Variables not defined in a site shell script can be set in the
|
||||
environment passed to `configure'. However, some packages may run
|
||||
configure again during the build, and the customized values of these
|
||||
variables may be lost. In order to avoid this problem, you should set
|
||||
@@ -198,11 +311,19 @@ an Autoconf bug. Until the bug is fixed you can use this workaround:
|
||||
`configure' Invocation
|
||||
======================
|
||||
|
||||
`configure' recognizes the following options to control how it operates.
|
||||
`configure' recognizes the following options to control how it
|
||||
operates.
|
||||
|
||||
`--help'
|
||||
`-h'
|
||||
Print a summary of the options to `configure', and exit.
|
||||
Print a summary of all of the options to `configure', and exit.
|
||||
|
||||
`--help=short'
|
||||
`--help=recursive'
|
||||
Print a summary of the options unique to this package's
|
||||
`configure', and exit. The `short' variant lists options used
|
||||
only in the top level, while the `recursive' variant lists options
|
||||
also present in any nested packages.
|
||||
|
||||
`--version'
|
||||
`-V'
|
||||
@@ -229,6 +350,16 @@ an Autoconf bug. Until the bug is fixed you can use this workaround:
|
||||
Look for the package's source code in directory DIR. Usually
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
`--prefix=DIR'
|
||||
Use DIR as the installation prefix. *note Installation Names::
|
||||
for more details, including other options available for fine-tuning
|
||||
the installation locations.
|
||||
|
||||
`--no-create'
|
||||
`-n'
|
||||
Run the configure checks, but stop before creating any output
|
||||
files.
|
||||
|
||||
`configure' also accepts some other, not widely useful, options. Run
|
||||
`configure --help' for more details.
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# alpha architecture description
|
||||
#
|
||||
|
||||
0 leshort 0603 COFF format alpha
|
||||
>22 leshort&030000 !020000 executable
|
||||
>24 leshort 0410 pure
|
||||
>24 leshort 0413 paged
|
||||
>22 leshort&020000 !0 dynamically linked
|
||||
>16 lelong !0 not stripped
|
||||
>16 lelong 0 stripped
|
||||
>22 leshort&030000 020000 shared library
|
||||
>24 leshort 0407 object
|
||||
>27 byte x - version %d
|
||||
>26 byte x .%d
|
||||
>28 byte x -%d
|
||||
|
||||
# Basic recognition of Digital UNIX core dumps - Mike Bremford <[email protected]>
|
||||
#
|
||||
# The actual magic number is just "Core", followed by a 2-byte version
|
||||
# number; however, treating any file that begins with "Core" as a Digital
|
||||
# UNIX core dump file may produce too many false hits, so we include one
|
||||
# byte of the version number as well; DU 5.0 appears only to be up to
|
||||
# version 2.
|
||||
#
|
||||
0 string Core\001 Alpha COFF format core dump (Digital UNIX)
|
||||
>24 string >\0 \b, from '%s'
|
||||
0 string Core\002 Alpha COFF format core dump (Digital UNIX)
|
||||
>24 string >\0 \b, from '%s'
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# c-lang: file(1) magic for C programs (or REXX)
|
||||
#
|
||||
|
||||
# XPM icons (Greg Roelofs, [email protected])
|
||||
# if you uncomment "/*" for C/REXX below, also uncomment this entry
|
||||
#0 string /*\ XPM\ */ X pixmap image data
|
||||
#!:mime image/x-xpmi
|
||||
|
||||
# 3DS (3d Studio files) Conflicts with diff output 0x3d '='
|
||||
#16 beshort 0x3d3d image/x-3ds
|
||||
|
||||
# this first will upset you if you're a PL/1 shop...
|
||||
# in which case rm it; ascmagic will catch real C programs
|
||||
#0 search/1 /* C or REXX program text
|
||||
#0 search/1 // C++ program text
|
||||
|
||||
# From: Mikhail Teterin <[email protected]>
|
||||
0 string cscope cscope reference data
|
||||
>7 string x version %.2s
|
||||
# We skip the path here, because it is often long (so file will
|
||||
# truncate it) and mostly redundant.
|
||||
# The inverted index functionality was added some time betwen
|
||||
# versions 11 and 15, so look for -q if version is above 14:
|
||||
>7 string >14
|
||||
>>10 search/100 \ -q\ with inverted index
|
||||
>10 search/100 \ -c\ text (non-compressed)
|
||||
@@ -1,69 +0,0 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# autocad: file(1) magic for cad files
|
||||
#
|
||||
|
||||
# AutoCAD DWG versions R13/R14 (www.autodesk.com)
|
||||
# Written December 01, 2003 by Lester Hightower
|
||||
# Based on the DWG File Format Specifications at http://www.opendwg.org/
|
||||
0 string \101\103\061\060\061 AutoCAD
|
||||
>5 string \062\000\000\000\000 DWG ver. R13
|
||||
>5 string \064\000\000\000\000 DWG ver. R14
|
||||
|
||||
# Microstation DGN/CIT Files (www.bentley.com)
|
||||
# Last updated July 29, 2005 by Lester Hightower
|
||||
# DGN is the default file extension of Microstation/Intergraph CAD files.
|
||||
# CIT is the proprietary raster format (similar to TIFF) used to attach
|
||||
# raster underlays to Microstation DGN (vector) drawings.
|
||||
#
|
||||
# http://www.wotsit.org/search.asp
|
||||
# http://filext.com/detaillist.php?extdetail=DGN
|
||||
# http://filext.com/detaillist.php?extdetail=CIT
|
||||
#
|
||||
# http://www.bentley.com/products/default.cfm?objectid=97F351F5-9C35-4E5E-89C2
|
||||
# 3F86C928&method=display&p_objectid=97F351F5-9C35-4E5E-89C280A93F86C928
|
||||
# http://www.bentley.com/products/default.cfm?objectid=A5C2FD43-3AC9-4C71-B682
|
||||
# 721C479F&method=display&p_objectid=A5C2FD43-3AC9-4C71-B682C7BE721C479F
|
||||
0 string \010\011\376 Microstation
|
||||
>3 string \002
|
||||
>>30 string \026\105 DGNFile
|
||||
>>30 string \034\105 DGNFile
|
||||
>>30 string \073\107 DGNFile
|
||||
>>30 string \073\110 DGNFile
|
||||
>>30 string \106\107 DGNFile
|
||||
>>30 string \110\103 DGNFile
|
||||
>>30 string \120\104 DGNFile
|
||||
>>30 string \172\104 DGNFile
|
||||
>>30 string \172\105 DGNFile
|
||||
>>30 string \172\106 DGNFile
|
||||
>>30 string \234\106 DGNFile
|
||||
>>30 string \273\105 DGNFile
|
||||
>>30 string \306\106 DGNFile
|
||||
>>30 string \310\104 DGNFile
|
||||
>>30 string \341\104 DGNFile
|
||||
>>30 string \372\103 DGNFile
|
||||
>>30 string \372\104 DGNFile
|
||||
>>30 string \372\106 DGNFile
|
||||
>>30 string \376\103 DGNFile
|
||||
>4 string \030\000\000 CITFile
|
||||
>4 string \030\000\003 CITFile
|
||||
|
||||
# AutoCad, from Nahuel Greco
|
||||
# AutoCAD DWG versions R12/R13/R14 (www.autodesk.com)
|
||||
0 string AC1012 AutoCad (release 12)
|
||||
0 string AC1013 AutoCad (release 13)
|
||||
0 string AC1014 AutoCad (release 14)
|
||||
|
||||
# CAD: file(1) magic for computer aided design files
|
||||
# Phillip Griffith <phillip dot griffith at gmail dot com>
|
||||
# AutoCAD magic taken from the Open Design Alliance's OpenDWG specifications.
|
||||
#
|
||||
0 belong 0x08051700 Bentley/Intergraph MicroStation DGN cell library
|
||||
0 belong 0x0809fe02 Bentley/Intergraph MicroStation DGN vector CAD
|
||||
0 belong 0xc809fe02 Bentley/Intergraph MicroStation DGN vector CAD
|
||||
0 beshort 0x0809 Bentley/Intergraph MicroStation
|
||||
>0x02 byte 0xfe
|
||||
>>0x04 beshort 0x1800 CIT raster CAD
|
||||
0 string AC1012 AutoDesk AutoCAD R13
|
||||
0 string AC1014 AutoDesk AutoCAD R14
|
||||
0 string AC1015 AutoDesk AutoCAD R2000
|
||||
@@ -1,38 +0,0 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# Cafe Babes unite!
|
||||
#
|
||||
# Since Java bytecode and Mach-O fat-files have the same magic number, the test
|
||||
# must be performed in the same "magic" sequence to get both right. The long
|
||||
# at offset 4 in a mach-O fat file tells the number of architectures; the short at
|
||||
# offset 4 in a Java bytecode file is the JVM minor version and the
|
||||
# short at offset 6 is the JVM major version. Since there are only
|
||||
# only 18 labeled Mach-O architectures at current, and the first released
|
||||
# Java class format was version 43.0, we can safely choose any number
|
||||
# between 18 and 39 to test the number of architectures against
|
||||
# (and use as a hack). Let's not use 18, because the Mach-O people
|
||||
# might add another one or two as time goes by...
|
||||
#
|
||||
0 belong 0xcafebabe
|
||||
!:mime application/x-java-applet
|
||||
>4 belong >30 compiled Java class data,
|
||||
>>6 beshort x version %d.
|
||||
>>4 beshort x \b%d
|
||||
# Which is which?
|
||||
#>>4 belong 0x032d (Java 1.0)
|
||||
#>>4 belong 0x032d (Java 1.1)
|
||||
>>4 belong 0x002e (Java 1.2)
|
||||
>>4 belong 0x002f (Java 1.3)
|
||||
>>4 belong 0x0030 (Java 1.4)
|
||||
>>4 belong 0x0031 (Java 1.5)
|
||||
>>4 belong 0x0032 (Java 1.6)
|
||||
|
||||
|
||||
0 belong 0xcafebabe
|
||||
>4 belong 1 Mach-O fat file with 1 architecture
|
||||
>4 belong >1
|
||||
>>4 belong <20 Mach-O fat file with %ld architectures
|
||||
|
||||
0 belong 0xcafed00d JAR compressed with pack200,
|
||||
>>5 byte x version %d.
|
||||
>>4 byte x \b%d
|
||||
!:mime application/x-java-pack200
|
||||
@@ -1,83 +0,0 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# commands: file(1) magic for various shells and interpreters
|
||||
#
|
||||
#0 string : shell archive or script for antique kernel text
|
||||
0 string/b #!\ /bin/sh POSIX shell script text executable
|
||||
!:mime text/x-shellscript
|
||||
0 string/b #!\ /bin/csh C shell script text executable
|
||||
!:mime text/x-shellscript
|
||||
# korn shell magic, sent by George Wu, [email protected]
|
||||
0 string/b #!\ /bin/ksh Korn shell script text executable
|
||||
!:mime text/x-shellscript
|
||||
0 string/b #!\ /bin/tcsh Tenex C shell script text executable
|
||||
!:mime text/x-shellscript
|
||||
0 string/b #!\ /usr/local/tcsh Tenex C shell script text executable
|
||||
!:mime text/x-shellscript
|
||||
0 string/b #!\ /usr/local/bin/tcsh Tenex C shell script text executable
|
||||
!:mime text/x-shellscript
|
||||
|
||||
#
|
||||
# zsh/ash/ae/nawk/gawk magic from [email protected] (Cameron Simpson)
|
||||
0 string/b #!\ /bin/zsh Paul Falstad's zsh script text executable
|
||||
!:mime text/x-shellscript
|
||||
0 string/b #!\ /usr/bin/zsh Paul Falstad's zsh script text executable
|
||||
!:mime text/x-shellscript
|
||||
0 string/b #!\ /usr/local/bin/zsh Paul Falstad's zsh script text executable
|
||||
!:mime text/x-shellscript
|
||||
0 string/b #!\ /usr/local/bin/ash Neil Brown's ash script text executable
|
||||
!:mime text/x-shellscript
|
||||
0 string/b #!\ /usr/local/bin/ae Neil Brown's ae script text executable
|
||||
!:mime text/x-shellscript
|
||||
0 string/b #!\ /bin/nawk new awk script text executable
|
||||
!:mime text/x-nawk
|
||||
0 string/b #!\ /usr/bin/nawk new awk script text executable
|
||||
!:mime text/x-nawk
|
||||
0 string/b #!\ /usr/local/bin/nawk new awk script text executable
|
||||
!:mime text/x-nawk
|
||||
0 string/b #!\ /bin/gawk GNU awk script text executable
|
||||
!:mime text/x-gawk
|
||||
0 string/b #!\ /usr/bin/gawk GNU awk script text executable
|
||||
!:mime text/x-gawk
|
||||
0 string/b #!\ /usr/local/bin/gawk GNU awk script text executable
|
||||
!:mime text/x-gawk
|
||||
#
|
||||
0 string/b #!\ /bin/awk awk script text executable
|
||||
!:mime text/x-awk
|
||||
0 string/b #!\ /usr/bin/awk awk script text executable
|
||||
!:mime text/x-awk
|
||||
# update to distinguish from *.vcf files
|
||||
# this is broken because postscript has /EBEGIN{ for example.
|
||||
#0 search/Bb BEGIN { awk script text
|
||||
|
||||
# AT&T Bell Labs' Plan 9 shell
|
||||
0 string/b #!\ /bin/rc Plan 9 rc shell script text executable
|
||||
|
||||
# bash shell magic, from Peter Tobias ([email protected])
|
||||
0 string/b #!\ /bin/bash Bourne-Again shell script text executable
|
||||
!:mime text/x-shellscript
|
||||
0 string/b #!\ /usr/local/bin/bash Bourne-Again shell script text executable
|
||||
!:mime text/x-shellscript
|
||||
|
||||
# using env
|
||||
0 string #!/usr/bin/env a
|
||||
>15 string >\0 %s script text executable
|
||||
0 string #!\ /usr/bin/env a
|
||||
>16 string >\0 %s script text executable
|
||||
|
||||
# PHP scripts
|
||||
# Ulf Harnhammar <[email protected]>
|
||||
0 search/1/c =<?php PHP script text
|
||||
!:mime text/x-php
|
||||
0 search/1 =<?\n PHP script text
|
||||
!:mime text/x-php
|
||||
0 search/1 =<?\r PHP script text
|
||||
!:mime text/x-php
|
||||
0 search/1/b #!\ /usr/local/bin/php PHP script text executable
|
||||
!:mime text/x-php
|
||||
0 search/1/b #!\ /usr/bin/php PHP script text executable
|
||||
!:mime text/x-php
|
||||
|
||||
0 string Zend\x00 PHP script Zend Optimizer data
|
||||
|
||||
0 string $! DCL command file
|
||||
@@ -1,269 +0,0 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# database: file(1) magic for various databases
|
||||
#
|
||||
# extracted from header/code files by Graeme Wilford ([email protected])
|
||||
#
|
||||
#
|
||||
# GDBM magic numbers
|
||||
# Will be maintained as part of the GDBM distribution in the future.
|
||||
# <[email protected]>
|
||||
0 belong 0x13579ace GNU dbm 1.x or ndbm database, big endian
|
||||
!:mime application/x-gdbm
|
||||
0 lelong 0x13579ace GNU dbm 1.x or ndbm database, little endian
|
||||
!:mime application/x-gdbm
|
||||
0 string GDBM GNU dbm 2.x database
|
||||
!:mime application/x-gdbm
|
||||
#
|
||||
# Berkeley DB
|
||||
#
|
||||
# Ian Darwin's file /etc/magic files: big/little-endian version.
|
||||
#
|
||||
# Hash 1.85/1.86 databases store metadata in network byte order.
|
||||
# Btree 1.85/1.86 databases store the metadata in host byte order.
|
||||
# Hash and Btree 2.X and later databases store the metadata in host byte order.
|
||||
|
||||
0 long 0x00061561 Berkeley DB
|
||||
!:mime application/x-dbm
|
||||
>8 belong 4321
|
||||
>>4 belong >2 1.86
|
||||
>>4 belong <3 1.85
|
||||
>>4 belong >0 (Hash, version %d, native byte-order)
|
||||
>8 belong 1234
|
||||
>>4 belong >2 1.86
|
||||
>>4 belong <3 1.85
|
||||
>>4 belong >0 (Hash, version %d, little-endian)
|
||||
|
||||
0 belong 0x00061561 Berkeley DB
|
||||
>8 belong 4321
|
||||
>>4 belong >2 1.86
|
||||
>>4 belong <3 1.85
|
||||
>>4 belong >0 (Hash, version %d, big-endian)
|
||||
>8 belong 1234
|
||||
>>4 belong >2 1.86
|
||||
>>4 belong <3 1.85
|
||||
>>4 belong >0 (Hash, version %d, native byte-order)
|
||||
|
||||
0 long 0x00053162 Berkeley DB 1.85/1.86
|
||||
>4 long >0 (Btree, version %d, native byte-order)
|
||||
0 belong 0x00053162 Berkeley DB 1.85/1.86
|
||||
>4 belong >0 (Btree, version %d, big-endian)
|
||||
0 lelong 0x00053162 Berkeley DB 1.85/1.86
|
||||
>4 lelong >0 (Btree, version %d, little-endian)
|
||||
|
||||
12 long 0x00061561 Berkeley DB
|
||||
>16 long >0 (Hash, version %d, native byte-order)
|
||||
12 belong 0x00061561 Berkeley DB
|
||||
>16 belong >0 (Hash, version %d, big-endian)
|
||||
12 lelong 0x00061561 Berkeley DB
|
||||
>16 lelong >0 (Hash, version %d, little-endian)
|
||||
|
||||
12 long 0x00053162 Berkeley DB
|
||||
>16 long >0 (Btree, version %d, native byte-order)
|
||||
12 belong 0x00053162 Berkeley DB
|
||||
>16 belong >0 (Btree, version %d, big-endian)
|
||||
12 lelong 0x00053162 Berkeley DB
|
||||
>16 lelong >0 (Btree, version %d, little-endian)
|
||||
|
||||
12 long 0x00042253 Berkeley DB
|
||||
>16 long >0 (Queue, version %d, native byte-order)
|
||||
12 belong 0x00042253 Berkeley DB
|
||||
>16 belong >0 (Queue, version %d, big-endian)
|
||||
12 lelong 0x00042253 Berkeley DB
|
||||
>16 lelong >0 (Queue, version %d, little-endian)
|
||||
|
||||
# From Max Bowsher.
|
||||
12 long 0x00040988 Berkeley DB
|
||||
>16 long >0 (Log, version %d, native byte-order)
|
||||
12 belong 0x00040988 Berkeley DB
|
||||
>16 belong >0 (Log, version %d, big-endian)
|
||||
12 lelong 0x00040988 Berkeley DB
|
||||
>16 lelong >0 (Log, version %d, little-endian)
|
||||
|
||||
#
|
||||
#
|
||||
# Round Robin Database Tool by Tobias Oetiker <[email protected]>
|
||||
0 string RRD RRDTool DB
|
||||
>4 string x version %s
|
||||
#----------------------------------------------------------------------
|
||||
# ROOT: file(1) magic for ROOT databases
|
||||
#
|
||||
0 string root\0 ROOT file
|
||||
>4 belong x Version %d
|
||||
>33 belong x (Compression: %d)
|
||||
|
||||
# XXX: Weak magic.
|
||||
# Alex Ott <[email protected]>
|
||||
## Paradox file formats
|
||||
#2 leshort 0x0800 Paradox
|
||||
#>0x39 byte 3 v. 3.0
|
||||
#>0x39 byte 4 v. 3.5
|
||||
#>0x39 byte 9 v. 4.x
|
||||
#>0x39 byte 10 v. 5.x
|
||||
#>0x39 byte 11 v. 5.x
|
||||
#>0x39 byte 12 v. 7.x
|
||||
#>>0x04 byte 0 indexed .DB data file
|
||||
#>>0x04 byte 1 primary index .PX file
|
||||
#>>0x04 byte 2 non-indexed .DB data file
|
||||
#>>0x04 byte 3 non-incrementing secondary index .Xnn file
|
||||
#>>0x04 byte 4 secondary index .Ynn file
|
||||
#>>0x04 byte 5 incrementing secondary index .Xnn file
|
||||
#>>0x04 byte 6 non-incrementing secondary index .XGn file
|
||||
#>>0x04 byte 7 secondary index .YGn file
|
||||
#>>>0x04 byte 8 incrementing secondary index .XGn file
|
||||
|
||||
## XBase database files
|
||||
#0 byte 0x02
|
||||
#>8 leshort >0
|
||||
#>>12 leshort 0 FoxBase
|
||||
#!:mime application/x-dbf
|
||||
#>>>0x04 lelong 0 (no records)
|
||||
#>>>0x04 lelong >0 (%ld records)
|
||||
#
|
||||
#0 byte 0x03
|
||||
#!:mime application/x-dbf
|
||||
#>8 leshort >0
|
||||
#>>12 leshort 0 FoxBase+, FoxPro, dBaseIII+, dBaseIV, no memo
|
||||
#>>>0x04 lelong 0 (no records)
|
||||
#>>>0x04 lelong >0 (%ld records)
|
||||
#
|
||||
#0 byte 0x04
|
||||
#!:mime application/x-dbf
|
||||
#>8 leshort >0
|
||||
#>>12 leshort 0 dBASE IV no memo file
|
||||
#>>>0x04 lelong 0 (no records)
|
||||
#>>>0x04 lelong >0 (%ld records)
|
||||
#
|
||||
#0 byte 0x05
|
||||
#!:mime application/x-dbf
|
||||
#>8 leshort >0
|
||||
#>>12 leshort 0 dBASE V no memo file
|
||||
#>>>0x04 lelong 0 (no records)
|
||||
#>>>0x04 lelong >0 (%ld records)
|
||||
#
|
||||
#0 byte 0x30
|
||||
#!:mime application/x-dbf
|
||||
#>8 leshort >0
|
||||
#>>12 leshort 0 Visual FoxPro
|
||||
#>>>0x04 lelong 0 (no records)
|
||||
#>>>0x04 lelong >0 (%ld records)
|
||||
#
|
||||
#0 byte 0x43
|
||||
#!:mime application/x-dbf
|
||||
#>8 leshort >0
|
||||
#>>12 leshort 0 FlagShip with memo var size
|
||||
#>>>0x04 lelong 0 (no records)
|
||||
#>>>0x04 lelong >0 (%ld records)
|
||||
#
|
||||
#0 byte 0x7b
|
||||
#!:mime application/x-dbf
|
||||
#>8 leshort >0
|
||||
#>>12 leshort 0 dBASEIV with memo
|
||||
#>>>0x04 lelong 0 (no records)
|
||||
#>>>0x04 lelong >0 (%ld records)
|
||||
#
|
||||
#0 byte 0x83
|
||||
#!:mime application/x-dbf
|
||||
#>8 leshort >0
|
||||
#>>12 leshort 0 FoxBase+, dBaseIII+ with memo
|
||||
#>>>0x04 lelong 0 (no records)
|
||||
#>>>0x04 lelong >0 (%ld records)
|
||||
#
|
||||
#0 byte 0x8b
|
||||
#!:mime application/x-dbf
|
||||
#>8 leshort >0
|
||||
#>>12 leshort 0 dBaseIV with memo
|
||||
#>>>0x04 lelong 0 (no records)
|
||||
#>>>0x04 lelong >0 (%ld records)
|
||||
#
|
||||
#0 byte 0x8e
|
||||
#!:mime application/x-dbf
|
||||
#>8 leshort >0
|
||||
#>>12 leshort 0 dBaseIV with SQL Table
|
||||
#>>>0x04 lelong 0 (no records)
|
||||
#>>>0x04 lelong >0 (%ld records)
|
||||
#
|
||||
#0 byte 0xb3
|
||||
#!:mime application/x-dbf
|
||||
#>8 leshort >0
|
||||
#>>12 leshort 0 FlagShip with .dbt memo
|
||||
#>>>0x04 lelong 0 (no records)
|
||||
#>>>0x04 lelong >0 (%ld records)
|
||||
#
|
||||
#0 byte 0xf5
|
||||
#!:mime application/x-dbf
|
||||
#>8 leshort >0
|
||||
#>>12 leshort 0 FoxPro with memo
|
||||
#>>>0x04 lelong 0 (no records)
|
||||
#>>>0x04 lelong >0 (%ld records)
|
||||
#
|
||||
#0 leshort 0x0006 DBase 3 index file
|
||||
|
||||
# MS Access database
|
||||
4 string Standard\ Jet\ DB Microsoft Access Database
|
||||
!:mime application/x-msaccess
|
||||
|
||||
# TDB database from Samba et al - Martin Pool <[email protected]>
|
||||
0 string TDB\ file TDB database
|
||||
>32 lelong 0x2601196D version 6, little-endian
|
||||
>>36 lelong x hash size %d bytes
|
||||
|
||||
# SE Linux policy database
|
||||
0 lelong 0xf97cff8c SE Linux policy
|
||||
>16 lelong x v%d
|
||||
>20 lelong 1 MLS
|
||||
>24 lelong x %d symbols
|
||||
>28 lelong x %d ocons
|
||||
|
||||
# ICE authority file data (Wolfram Kleff)
|
||||
2 string ICE ICE authority data
|
||||
|
||||
# X11 Xauthority file (Wolfram Kleff)
|
||||
10 string MIT-MAGIC-COOKIE-1 X11 Xauthority data
|
||||
11 string MIT-MAGIC-COOKIE-1 X11 Xauthority data
|
||||
12 string MIT-MAGIC-COOKIE-1 X11 Xauthority data
|
||||
13 string MIT-MAGIC-COOKIE-1 X11 Xauthority data
|
||||
14 string MIT-MAGIC-COOKIE-1 X11 Xauthority data
|
||||
15 string MIT-MAGIC-COOKIE-1 X11 Xauthority data
|
||||
16 string MIT-MAGIC-COOKIE-1 X11 Xauthority data
|
||||
17 string MIT-MAGIC-COOKIE-1 X11 Xauthority data
|
||||
18 string MIT-MAGIC-COOKIE-1 X11 Xauthority data
|
||||
|
||||
# From: Maxime Henrion <[email protected]>
|
||||
# PostgreSQL's custom dump format, Maxime Henrion <[email protected]>
|
||||
0 string PGDMP PostgreSQL custom database dump
|
||||
>5 byte x - v%d
|
||||
>6 byte x \b.%d
|
||||
>5 beshort <0x101 \b-0
|
||||
>5 beshort >0x100
|
||||
>>7 byte x \b-%d
|
||||
|
||||
# Type: Advanced Data Format (ADF) database
|
||||
# URL: http://www.grc.nasa.gov/WWW/cgns/adf/
|
||||
# From: Nicolas Chauvat <[email protected]>
|
||||
0 string @(#)ADF\ Database CGNS Advanced Data Format
|
||||
|
||||
# Tokyo Cabinet magic data
|
||||
# http://tokyocabinet.sourceforge.net/index.html
|
||||
0 string ToKyO\ CaBiNeT\n Tokyo Cabinet
|
||||
>14 string x \b (%s)
|
||||
>32 byte 0 \b, Hash
|
||||
!:mime application/x-tokyocabinet-hash
|
||||
>32 byte 1 \b, B+ tree
|
||||
!:mime application/x-tokyocabinet-btree
|
||||
>32 byte 2 \b, Fixed-length
|
||||
!:mime application/x-tokyocabinet-fixed
|
||||
>32 byte 3 \b, Table
|
||||
!:mime application/x-tokyocabinet-table
|
||||
>33 byte &1 \b, [open]
|
||||
>33 byte &2 \b, [fatal]
|
||||
>34 byte x \b, apow=%d
|
||||
>35 byte x \b, fpow=%d
|
||||
>36 byte &0x01 \b, [large]
|
||||
>36 byte &0x02 \b, [deflate]
|
||||
>36 byte &0x04 \b, [bzip]
|
||||
>36 byte &0x08 \b, [tcbs]
|
||||
>36 byte &0x10 \b, [excodec]
|
||||
>40 lequad x \b, bnum=%lld
|
||||
>48 lequad x \b, rnum=%lld
|
||||
>56 lequad x \b, fsiz=%lld
|
||||
@@ -1,14 +0,0 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# diff: file(1) magic for diff(1) output
|
||||
#
|
||||
0 search/1 diff\ diff output text
|
||||
!:mime text/x-diff
|
||||
0 search/1 ***\ diff output text
|
||||
!:mime text/x-diff
|
||||
0 search/1 Only\ in\ diff output text
|
||||
!:mime text/x-diff
|
||||
0 search/1 Common\ subdirectories:\ diff output text
|
||||
!:mime text/x-diff
|
||||
|
||||
0 search/1 Index: RCS/CVS diff output text
|
||||
!:mime text/x-diff
|
||||
@@ -1,41 +0,0 @@
|
||||
# Digital UNIX - Info
|
||||
#
|
||||
0 string =!<arch>\n________64E Alpha archive
|
||||
>22 string X -- out of date
|
||||
#
|
||||
# Alpha COFF Based Executables
|
||||
# The stripped stuff really needs to be an 8 byte (64 bit) compare,
|
||||
# but this works
|
||||
0 leshort 0x183 COFF format alpha
|
||||
>22 leshort&020000 &010000 sharable library,
|
||||
>22 leshort&020000 ^010000 dynamically linked,
|
||||
>24 leshort 0410 pure
|
||||
>24 leshort 0413 demand paged
|
||||
>8 lelong >0 executable or object module, not stripped
|
||||
>8 lelong 0
|
||||
>>12 lelong 0 executable or object module, stripped
|
||||
>>12 lelong >0 executable or object module, not stripped
|
||||
>27 byte >0 - version %d.
|
||||
>26 byte >0 %d-
|
||||
>28 leshort >0 %d
|
||||
#
|
||||
# The next is incomplete, we could tell more about this format,
|
||||
# but its not worth it.
|
||||
0 leshort 0x188 Alpha compressed COFF
|
||||
0 leshort 0x18f Alpha u-code object
|
||||
#
|
||||
#
|
||||
# Some other interesting Digital formats,
|
||||
0 string \377\377\177 ddis/ddif
|
||||
0 string \377\377\174 ddis/dots archive
|
||||
0 string \377\377\176 ddis/dtif table data
|
||||
0 string \033c\033 LN03 output
|
||||
0 long 04553207 X image
|
||||
#
|
||||
0 string =!<PDF>!\n profiling data file
|
||||
#
|
||||
# Locale data tables (MIPS and Alpha).
|
||||
#
|
||||
0 short 0x0501 locale data table
|
||||
>6 short 0x24 for MIPS
|
||||
>6 short 0x40 for Alpha
|
||||
@@ -1,57 +0,0 @@
|
||||
# ATSC A/53 aka AC-3 aka Dolby Digital <[email protected]>
|
||||
# from http://www.atsc.org/standards/a_52a.pdf
|
||||
# corrections, additions, etc. are always welcome!
|
||||
#
|
||||
# syncword
|
||||
0 beshort 0x0b77 ATSC A/52 aka AC-3 aka Dolby Digital stream,
|
||||
# fscod
|
||||
>4 byte&0xc0 0x00 48 kHz,
|
||||
>4 byte&0xc0 0x40 44.1 kHz,
|
||||
>4 byte&0xc0 0x80 32 kHz,
|
||||
# is this one used for 96 kHz?
|
||||
>4 byte&0xc0 0xc0 reserved frequency,
|
||||
#
|
||||
>5 byte&7 = 0 \b, complete main (CM)
|
||||
>5 byte&7 = 1 \b, music and effects (ME)
|
||||
>5 byte&7 = 2 \b, visually impaired (VI)
|
||||
>5 byte&7 = 3 \b, hearing impaired (HI)
|
||||
>5 byte&7 = 4 \b, dialogue (D)
|
||||
>5 byte&7 = 5 \b, commentary (C)
|
||||
>5 byte&7 = 6 \b, emergency (E)
|
||||
# acmod
|
||||
>6 byte&0xe0 0x00 1+1 front,
|
||||
>6 byte&0xe0 0x20 1 front/0 rear,
|
||||
>6 byte&0xe0 0x40 2 front/0 rear,
|
||||
>6 byte&0xe0 0x60 3 front/0 rear,
|
||||
>6 byte&0xe0 0x80 2 front/1 rear,
|
||||
>6 byte&0xe0 0xa0 3 front/1 rear,
|
||||
>6 byte&0xe0 0xc0 2 front/2 rear,
|
||||
>6 byte&0xe0 0xe0 3 front/2 rear,
|
||||
# lfeon (these may be incorrect)
|
||||
>7 byte&0x40 0x00 LFE off,
|
||||
>7 byte&0x40 0x40 LFE on,
|
||||
#
|
||||
>4 byte&0x3e = 0x00 \b, 32 kbit/s
|
||||
>4 byte&0x3e = 0x02 \b, 40 kbit/s
|
||||
>4 byte&0x3e = 0x04 \b, 48 kbit/s
|
||||
>4 byte&0x3e = 0x06 \b, 56 kbit/s
|
||||
>4 byte&0x3e = 0x08 \b, 64 kbit/s
|
||||
>4 byte&0x3e = 0x0a \b, 80 kbit/s
|
||||
>4 byte&0x3e = 0x0c \b, 96 kbit/s
|
||||
>4 byte&0x3e = 0x0e \b, 112 kbit/s
|
||||
>4 byte&0x3e = 0x10 \b, 128 kbit/s
|
||||
>4 byte&0x3e = 0x12 \b, 160 kbit/s
|
||||
>4 byte&0x3e = 0x14 \b, 192 kbit/s
|
||||
>4 byte&0x3e = 0x16 \b, 224 kbit/s
|
||||
>4 byte&0x3e = 0x18 \b, 256 kbit/s
|
||||
>4 byte&0x3e = 0x1a \b, 320 kbit/s
|
||||
>4 byte&0x3e = 0x1c \b, 384 kbit/s
|
||||
>4 byte&0x3e = 0x1e \b, 448 kbit/s
|
||||
>4 byte&0x3e = 0x20 \b, 512 kbit/s
|
||||
>4 byte&0x3e = 0x22 \b, 576 kbit/s
|
||||
>4 byte&0x3e = 0x24 \b, 640 kbit/s
|
||||
# dsurmod (these may be incorrect)
|
||||
>6 beshort&0x0180 0x0000 Dolby Surround not indicated
|
||||
>6 beshort&0x0180 0x0080 not Dolby Surround encoded
|
||||
>6 beshort&0x0180 0x0100 Dolby Surround encoded
|
||||
>6 beshort&0x0180 0x0180 reserved Dolby Surround mode
|
||||
@@ -1,12 +0,0 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Dyadic: file(1) magic for Dyalog APL.
|
||||
#
|
||||
0 byte 0xaa
|
||||
>1 byte <4 Dyalog APL
|
||||
>>1 byte 0x00 incomplete workspace
|
||||
>>1 byte 0x01 component file
|
||||
>>1 byte 0x02 external variable
|
||||
>>1 byte 0x03 workspace
|
||||
>>2 byte x version %d
|
||||
>>3 byte x .%d
|
||||
@@ -1,288 +0,0 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# elf: file(1) magic for ELF executables
|
||||
#
|
||||
# We have to check the byte order flag to see what byte order all the
|
||||
# other stuff in the header is in.
|
||||
#
|
||||
# What're the correct byte orders for the nCUBE and the Fujitsu VPP500?
|
||||
#
|
||||
# Created by: unknown
|
||||
# Modified by (1): Daniel Quinlan <[email protected]>
|
||||
# Modified by (2): Peter Tobias <[email protected]> (core support)
|
||||
# Modified by (3): Christian 'Dr. Disk' Hechelmann <[email protected]> (fix of core support)
|
||||
# Modified by (4): <[email protected]> (VMS Itanium)
|
||||
# Modified by (5): Matthias Urlichs <[email protected]> (Listing of many architectures)
|
||||
0 string \177ELF ELF
|
||||
>4 byte 0 invalid class
|
||||
>4 byte 1 32-bit
|
||||
>4 byte 2 64-bit
|
||||
>5 byte 0 invalid byte order
|
||||
>5 byte 1 LSB
|
||||
>>16 leshort 0 no file type,
|
||||
!:strength *2
|
||||
!:mime application/octet-stream
|
||||
>>16 leshort 1 relocatable,
|
||||
!:mime application/x-object
|
||||
>>16 leshort 2 executable,
|
||||
!:mime application/x-executable
|
||||
>>16 leshort 3 shared object,
|
||||
!:mime application/x-sharedlib
|
||||
>>16 leshort 4 core file
|
||||
!:mime application/x-coredump
|
||||
# Core file detection is not reliable.
|
||||
#>>>(0x38+0xcc) string >\0 of '%s'
|
||||
#>>>(0x38+0x10) lelong >0 (signal %d),
|
||||
>>16 leshort &0xff00 processor-specific,
|
||||
>>18 leshort 0 no machine,
|
||||
>>18 leshort 1 AT&T WE32100 - invalid byte order,
|
||||
>>18 leshort 2 SPARC - invalid byte order,
|
||||
>>18 leshort 3 Intel 80386,
|
||||
>>18 leshort 4 Motorola
|
||||
>>>36 lelong &0x01000000 68000 - invalid byte order,
|
||||
>>>36 lelong &0x00810000 CPU32 - invalid byte order,
|
||||
>>>36 lelong 0 68020 - invalid byte order,
|
||||
>>18 leshort 5 Motorola 88000 - invalid byte order,
|
||||
>>18 leshort 6 Intel 80486,
|
||||
>>18 leshort 7 Intel 80860,
|
||||
# The official e_machine number for MIPS is now #8, regardless of endianness.
|
||||
# The second number (#10) will be deprecated later. For now, we still
|
||||
# say something if #10 is encountered, but only gory details for #8.
|
||||
>>18 leshort 8 MIPS,
|
||||
>>>36 lelong &0x20 N32
|
||||
>>18 leshort 10 MIPS,
|
||||
>>>36 lelong &0x20 N32
|
||||
>>18 leshort 8
|
||||
# only for 32-bit
|
||||
>>>4 byte 1
|
||||
>>>>36 lelong&0xf0000000 0x00000000 MIPS-I
|
||||
>>>>36 lelong&0xf0000000 0x10000000 MIPS-II
|
||||
>>>>36 lelong&0xf0000000 0x20000000 MIPS-III
|
||||
>>>>36 lelong&0xf0000000 0x30000000 MIPS-IV
|
||||
>>>>36 lelong&0xf0000000 0x40000000 MIPS-V
|
||||
>>>>36 lelong&0xf0000000 0x50000000 MIPS32
|
||||
>>>>36 lelong&0xf0000000 0x60000000 MIPS64
|
||||
>>>>36 lelong&0xf0000000 0x70000000 MIPS32 rel2
|
||||
>>>>36 lelong&0xf0000000 0x80000000 MIPS64 rel2
|
||||
# only for 64-bit
|
||||
>>>4 byte 2
|
||||
>>>>48 lelong&0xf0000000 0x00000000 MIPS-I
|
||||
>>>>48 lelong&0xf0000000 0x10000000 MIPS-II
|
||||
>>>>48 lelong&0xf0000000 0x20000000 MIPS-III
|
||||
>>>>48 lelong&0xf0000000 0x30000000 MIPS-IV
|
||||
>>>>48 lelong&0xf0000000 0x40000000 MIPS-V
|
||||
>>>>48 lelong&0xf0000000 0x50000000 MIPS32
|
||||
>>>>48 lelong&0xf0000000 0x60000000 MIPS64
|
||||
>>>>48 lelong&0xf0000000 0x70000000 MIPS32 rel2
|
||||
>>>>48 lelong&0xf0000000 0x80000000 MIPS64 rel2
|
||||
>>18 leshort 9 Amdahl - invalid byte order,
|
||||
>>18 leshort 10 MIPS (deprecated),
|
||||
>>18 leshort 11 RS6000 - invalid byte order,
|
||||
>>18 leshort 15 PA-RISC - invalid byte order,
|
||||
>>>50 leshort 0x0214 2.0
|
||||
>>>48 leshort &0x0008 (LP64),
|
||||
>>18 leshort 16 nCUBE,
|
||||
>>18 leshort 17 Fujitsu VPP500,
|
||||
>>18 leshort 18 SPARC32PLUS - invalid byte order,
|
||||
>>18 leshort 20 PowerPC,
|
||||
>>18 leshort 22 IBM S/390,
|
||||
>>18 leshort 36 NEC V800,
|
||||
>>18 leshort 37 Fujitsu FR20,
|
||||
>>18 leshort 38 TRW RH-32,
|
||||
>>18 leshort 39 Motorola RCE,
|
||||
>>18 leshort 40 ARM,
|
||||
>>18 leshort 41 Alpha,
|
||||
>>18 leshort 0xa390 IBM S/390 (obsolete),
|
||||
>>18 leshort 42 Renesas SH,
|
||||
>>18 leshort 43 SPARC V9 - invalid byte order,
|
||||
>>18 leshort 44 Siemens Tricore Embedded Processor,
|
||||
>>18 leshort 45 Argonaut RISC Core, Argonaut Technologies Inc.,
|
||||
>>18 leshort 46 Renesas H8/300,
|
||||
>>18 leshort 47 Renesas H8/300H,
|
||||
>>18 leshort 48 Renesas H8S,
|
||||
>>18 leshort 49 Renesas H8/500,
|
||||
>>18 leshort 50 IA-64,
|
||||
>>18 leshort 51 Stanford MIPS-X,
|
||||
>>18 leshort 52 Motorola Coldfire,
|
||||
>>18 leshort 53 Motorola M68HC12,
|
||||
>>18 leshort 54 Fujitsu MMA,
|
||||
>>18 leshort 55 Siemens PCP,
|
||||
>>18 leshort 56 Sony nCPU,
|
||||
>>18 leshort 57 Denso NDR1,
|
||||
>>18 leshort 58 Start*Core,
|
||||
>>18 leshort 59 Toyota ME16,
|
||||
>>18 leshort 60 ST100,
|
||||
>>18 leshort 61 Tinyj emb.,
|
||||
>>18 leshort 62 x86-64,
|
||||
>>18 leshort 63 Sony DSP,
|
||||
>>18 leshort 66 FX66,
|
||||
>>18 leshort 67 ST9+ 8/16 bit,
|
||||
>>18 leshort 68 ST7 8 bit,
|
||||
>>18 leshort 69 MC68HC16,
|
||||
>>18 leshort 70 MC68HC11,
|
||||
>>18 leshort 71 MC68HC08,
|
||||
>>18 leshort 72 MC68HC05,
|
||||
>>18 leshort 73 SGI SVx,
|
||||
>>18 leshort 74 ST19 8 bit,
|
||||
>>18 leshort 75 Digital VAX,
|
||||
>>18 leshort 76 Axis cris,
|
||||
>>18 leshort 77 Infineon 32-bit embedded,
|
||||
>>18 leshort 78 Element 14 64-bit DSP,
|
||||
>>18 leshort 79 LSI Logic 16-bit DSP,
|
||||
>>18 leshort 80 MMIX,
|
||||
>>18 leshort 81 Harvard machine-independent,
|
||||
>>18 leshort 82 SiTera Prism,
|
||||
>>18 leshort 83 Atmel AVR 8-bit,
|
||||
>>18 leshort 84 Fujitsu FR30,
|
||||
>>18 leshort 85 Mitsubishi D10V,
|
||||
>>18 leshort 86 Mitsubishi D30V,
|
||||
>>18 leshort 87 NEC v850,
|
||||
>>18 leshort 88 Renesas M32R,
|
||||
>>18 leshort 89 Matsushita MN10300,
|
||||
>>18 leshort 90 Matsushita MN10200,
|
||||
>>18 leshort 91 picoJava,
|
||||
>>18 leshort 92 OpenRISC,
|
||||
>>18 leshort 93 ARC Cores Tangent-A5,
|
||||
>>18 leshort 94 Tensilica Xtensa,
|
||||
>>18 leshort 97 NatSemi 32k,
|
||||
>>18 leshort 106 Analog Devices Blackfin,
|
||||
>>18 leshort 113 Altera Nios II,
|
||||
>>18 leshort 0xae META,
|
||||
>>18 leshort 0x3426 OpenRISC (obsolete),
|
||||
>>18 leshort 0x8472 OpenRISC (obsolete),
|
||||
>>18 leshort 0x9026 Alpha (unofficial),
|
||||
>>20 lelong 0 invalid version
|
||||
>>20 lelong 1 version 1
|
||||
>>36 lelong 1 MathCoPro/FPU/MAU Required
|
||||
>5 byte 2 MSB
|
||||
>>16 beshort 0 no file type,
|
||||
!:mime application/octet-stream
|
||||
>>16 beshort 1 relocatable,
|
||||
!:mime application/x-object
|
||||
>>16 beshort 2 executable,
|
||||
!:mime application/x-executable
|
||||
>>16 beshort 3 shared object,
|
||||
!:mime application/x-sharedlib
|
||||
>>16 beshort 4 core file,
|
||||
!:mime application/x-coredump
|
||||
#>>>(0x38+0xcc) string >\0 of '%s'
|
||||
#>>>(0x38+0x10) belong >0 (signal %d),
|
||||
>>16 beshort &0xff00 processor-specific,
|
||||
>>18 beshort 0 no machine,
|
||||
>>18 beshort 1 AT&T WE32100,
|
||||
>>18 beshort 2 SPARC,
|
||||
>>18 beshort 3 Intel 80386 - invalid byte order,
|
||||
>>18 beshort 4 Motorola
|
||||
>>>36 belong &0x01000000 68000,
|
||||
>>>36 belong &0x00810000 CPU32,
|
||||
>>>36 belong 0 68020,
|
||||
>>18 beshort 5 Motorola 88000,
|
||||
>>18 beshort 6 Intel 80486 - invalid byte order,
|
||||
>>18 beshort 7 Intel 80860,
|
||||
# only for MIPS - see comment in little-endian section above.
|
||||
>>18 beshort 8 MIPS,
|
||||
>>>36 belong &0x20 N32
|
||||
>>18 beshort 10 MIPS,
|
||||
>>>36 belong &0x20 N32
|
||||
>>18 beshort 8
|
||||
# only for 32-bit
|
||||
>>>4 byte 1
|
||||
>>>>36 belong&0xf0000000 0x00000000 MIPS-I
|
||||
>>>>36 belong&0xf0000000 0x10000000 MIPS-II
|
||||
>>>>36 belong&0xf0000000 0x20000000 MIPS-III
|
||||
>>>>36 belong&0xf0000000 0x30000000 MIPS-IV
|
||||
>>>>36 belong&0xf0000000 0x40000000 MIPS-V
|
||||
>>>>36 belong&0xf0000000 0x50000000 MIPS32
|
||||
>>>>36 belong&0xf0000000 0x60000000 MIPS64
|
||||
>>>>36 belong&0xf0000000 0x70000000 MIPS32 rel2
|
||||
>>>>36 belong&0xf0000000 0x80000000 MIPS64 rel2
|
||||
# only for 64-bit
|
||||
>>>4 byte 2
|
||||
>>>>48 belong&0xf0000000 0x00000000 MIPS-I
|
||||
>>>>48 belong&0xf0000000 0x10000000 MIPS-II
|
||||
>>>>48 belong&0xf0000000 0x20000000 MIPS-III
|
||||
>>>>48 belong&0xf0000000 0x30000000 MIPS-IV
|
||||
>>>>48 belong&0xf0000000 0x40000000 MIPS-V
|
||||
>>>>48 belong&0xf0000000 0x50000000 MIPS32
|
||||
>>>>48 belong&0xf0000000 0x60000000 MIPS64
|
||||
>>>>48 belong&0xf0000000 0x70000000 MIPS32 rel2
|
||||
>>>>48 belong&0xf0000000 0x80000000 MIPS64 rel2
|
||||
>>18 beshort 9 Amdahl,
|
||||
>>18 beshort 10 MIPS (deprecated),
|
||||
>>18 beshort 11 RS6000,
|
||||
>>18 beshort 15 PA-RISC
|
||||
>>>50 beshort 0x0214 2.0
|
||||
>>>48 beshort &0x0008 (LP64)
|
||||
>>18 beshort 16 nCUBE,
|
||||
>>18 beshort 17 Fujitsu VPP500,
|
||||
>>18 beshort 18 SPARC32PLUS,
|
||||
>>>36 belong&0xffff00 0x000100 V8+ Required,
|
||||
>>>36 belong&0xffff00 0x000200 Sun UltraSPARC1 Extensions Required,
|
||||
>>>36 belong&0xffff00 0x000400 HaL R1 Extensions Required,
|
||||
>>>36 belong&0xffff00 0x000800 Sun UltraSPARC3 Extensions Required,
|
||||
>>18 beshort 20 PowerPC or cisco 4500,
|
||||
>>18 beshort 21 64-bit PowerPC or cisco 7500,
|
||||
>>18 beshort 22 IBM S/390,
|
||||
>>18 beshort 23 Cell SPU,
|
||||
>>18 beshort 24 cisco SVIP,
|
||||
>>18 beshort 25 cisco 7200,
|
||||
>>18 beshort 36 NEC V800 or cisco 12000,
|
||||
>>18 beshort 37 Fujitsu FR20,
|
||||
>>18 beshort 38 TRW RH-32,
|
||||
>>18 beshort 39 Motorola RCE,
|
||||
>>18 beshort 40 ARM,
|
||||
>>18 beshort 41 Alpha,
|
||||
>>18 beshort 42 Renesas SH,
|
||||
>>18 beshort 43 SPARC V9,
|
||||
>>>48 belong&0xffff00 0x000200 Sun UltraSPARC1 Extensions Required,
|
||||
>>>48 belong&0xffff00 0x000400 HaL R1 Extensions Required,
|
||||
>>>48 belong&0xffff00 0x000800 Sun UltraSPARC3 Extensions Required,
|
||||
>>>48 belong&0x3 0 total store ordering,
|
||||
>>>48 belong&0x3 1 partial store ordering,
|
||||
>>>48 belong&0x3 2 relaxed memory ordering,
|
||||
>>18 beshort 44 Siemens Tricore Embedded Processor,
|
||||
>>18 beshort 45 Argonaut RISC Core, Argonaut Technologies Inc.,
|
||||
>>18 beshort 46 Renesas H8/300,
|
||||
>>18 beshort 47 Renesas H8/300H,
|
||||
>>18 beshort 48 Renesas H8S,
|
||||
>>18 beshort 49 Renesas H8/500,
|
||||
>>18 beshort 50 IA-64,
|
||||
>>18 beshort 51 Stanford MIPS-X,
|
||||
>>18 beshort 52 Motorola Coldfire,
|
||||
>>18 beshort 53 Motorola M68HC12,
|
||||
>>18 beshort 73 Cray NV1,
|
||||
>>18 beshort 75 Digital VAX,
|
||||
>>18 beshort 88 Renesas M32R,
|
||||
>>18 leshort 92 OpenRISC,
|
||||
>>18 leshort 0x3426 OpenRISC (obsolete),
|
||||
>>18 leshort 0x8472 OpenRISC (obsolete),
|
||||
>>18 beshort 94 Tensilica Xtensa,
|
||||
>>18 beshort 97 NatSemi 32k,
|
||||
>>18 beshort 0x18ad AVR32 (unofficial),
|
||||
>>18 beshort 0x9026 Alpha (unofficial),
|
||||
>>18 beshort 0xa390 IBM S/390 (obsolete),
|
||||
>>20 belong 0 invalid version
|
||||
>>20 belong 1 version 1
|
||||
>>36 belong 1 MathCoPro/FPU/MAU Required
|
||||
# Up to now only 0, 1 and 2 are defined; I've seen a file with 0x83, it seemed
|
||||
# like proper ELF, but extracting the string had bad results.
|
||||
>4 byte <0x80
|
||||
>>8 string >\0 (%s)
|
||||
>8 string \0
|
||||
>>7 byte 0 (SYSV)
|
||||
>>7 byte 1 (HP-UX)
|
||||
>>7 byte 2 (NetBSD)
|
||||
>>7 byte 3 (GNU/Linux)
|
||||
>>7 byte 4 (GNU/Hurd)
|
||||
>>7 byte 5 (86Open)
|
||||
>>7 byte 6 (Solaris)
|
||||
>>7 byte 7 (Monterey)
|
||||
>>7 byte 8 (IRIX)
|
||||
>>7 byte 9 (FreeBSD)
|
||||
>>7 byte 10 (Tru64)
|
||||
>>7 byte 11 (Novell Modesto)
|
||||
>>7 byte 12 (OpenBSD)
|
||||
>8 string \2
|
||||
>>7 byte 13 (OpenVMS)
|
||||
>>7 byte 97 (ARM)
|
||||
>>7 byte 255 (embedded)
|
||||
@@ -1,11 +0,0 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# EPOC : file(1) magic for EPOC documents [Psion Series 5/Osaris/Geofox 1]
|
||||
# Stefan Praszalowicz ([email protected])
|
||||
# Useful information for improving this file can be found at:
|
||||
# http://software.frodo.looijaard.name/psiconv/formats/Index.html
|
||||
0 lelong 0x10000037
|
||||
>4 lelong 0x1000006D
|
||||
>>8 lelong 0x1000007F Psion Word
|
||||
>>8 lelong 0x10000088 Psion Sheet
|
||||
>>8 lelong 0x1000007D Psion Sketch
|
||||
>>8 lelong 0x10000085 Psion TextEd
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,21 +0,0 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# flash: file(1) magic for Macromedia Flash file format
|
||||
#
|
||||
# See
|
||||
#
|
||||
# http://www.macromedia.com/software/flash/open/
|
||||
#
|
||||
0 string FWS Macromedia Flash data,
|
||||
>3 byte x version %d
|
||||
!:mime application/x-shockwave-flash
|
||||
0 string CWS Macromedia Flash data (compressed),
|
||||
!:mime application/x-shockwave-flash
|
||||
>3 byte x version %d
|
||||
# From: Cal Peake <[email protected]>
|
||||
0 string FLV Macromedia Flash Video
|
||||
!:mime video/x-flv
|
||||
|
||||
#
|
||||
# From Dave Wilson
|
||||
0 string AGD4\xbe\xb8\xbb\xcb\x00 Macromedia Freehand 9 Document
|
||||
@@ -1,3 +0,0 @@
|
||||
# FORTRAN source
|
||||
0 regex/100 \^[Cc][\ \t] FORTRAN program
|
||||
!:mime text/x-fortran
|
||||
@@ -1,23 +0,0 @@
|
||||
# GNOME keyring
|
||||
# Contributed by Josh Triplett
|
||||
# FIXME: Could be simplified if pstring supported two-byte counts
|
||||
0 string GnomeKeyring\n\r\0\n GNOME keyring
|
||||
>&0 ubyte 0 \b, major version 0
|
||||
>>&0 ubyte 0 \b, minor version 0
|
||||
>>>&0 ubyte 0 \b, crypto type 0 (AEL)
|
||||
>>>&0 ubyte >0 \b, crypto type %hhu (unknown)
|
||||
>>>&1 ubyte 0 \b, hash type 0 (MD5)
|
||||
>>>&1 ubyte >0 \b, hash type %hhu (unknown)
|
||||
>>>&2 ubelong 0xFFFFFFFF \b, name NULL
|
||||
>>>&2 ubelong !0xFFFFFFFF
|
||||
>>>>&-4 ubelong >255 \b, name too long for file's pstring type
|
||||
>>>>&-4 ubelong <256
|
||||
>>>>>&-1 pstring x \b, name "%s"
|
||||
>>>>>>&0 ubeqdate x \b, last modified %s
|
||||
>>>>>>&8 ubeqdate x \b, created %s
|
||||
>>>>>>&16 ubelong &1
|
||||
>>>>>>>&0 ubelong x \b, locked if idle for %u seconds
|
||||
>>>>>>&16 ubelong ^1 \b, not locked if idle
|
||||
>>>>>>&24 ubelong x \b, hash iterations %u
|
||||
>>>>>>&28 ubequad x \b, salt %llu
|
||||
>>>>>>&52 ubelong x \b, %u item(s)
|
||||
@@ -1,42 +0,0 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# gnu: file(1) magic for various GNU tools
|
||||
#
|
||||
# GNU nlsutils message catalog file format
|
||||
#
|
||||
0 string \336\22\4\225 GNU message catalog (little endian),
|
||||
>4 lelong x revision %d,
|
||||
>8 lelong x %d messages
|
||||
0 string \225\4\22\336 GNU message catalog (big endian),
|
||||
>4 belong x revision %d,
|
||||
>8 belong x %d messages
|
||||
# message catalogs, from Mitchum DSouza <[email protected]>
|
||||
0 string *nazgul* Nazgul style compiled message catalog
|
||||
>8 lelong >0 \b, version %ld
|
||||
|
||||
# GnuPG
|
||||
# The format is very similar to pgp
|
||||
0 string \001gpg GPG key trust database
|
||||
>4 byte x version %d
|
||||
# Note: magic.mime had 0x8501 for the next line instead of 0x8502
|
||||
0 beshort 0x8502 GPG encrypted data
|
||||
!:mime text/PGP # encoding: data
|
||||
|
||||
# This magic is not particularly good, as the keyrings don't have true
|
||||
# magic. Nevertheless, it covers many keyrings.
|
||||
0 beshort 0x9901 GPG key public ring
|
||||
!:mime application/x-gnupg-keyring
|
||||
|
||||
# Gnumeric spreadsheet
|
||||
# This entry is only semi-helpful, as Gnumeric compresses its files, so
|
||||
# they will ordinarily reported as "compressed", but at least -z helps
|
||||
39 string =<gmr:Workbook Gnumeric spreadsheet
|
||||
|
||||
# From: James Youngman <[email protected]>
|
||||
# gnu find magic
|
||||
0 string \0LOCATE GNU findutils locate database data
|
||||
>7 string >\0 \b, format %s
|
||||
>7 string 02 \b (frcode)
|
||||
|
||||
# Files produced by GNU gettext
|
||||
0 long 0xDE120495 GNU-format message catalog data
|
||||
0 long 0x950412DE GNU-format message catalog data
|
||||
@@ -1,165 +0,0 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# JPEG images
|
||||
# SunOS 5.5.1 had
|
||||
#
|
||||
# 0 string \377\330\377\340 JPEG file
|
||||
# 0 string \377\330\377\356 JPG file
|
||||
#
|
||||
# both of which turn into "JPEG image data" here.
|
||||
#
|
||||
0 beshort 0xffd8 JPEG image data
|
||||
!:mime image/jpeg
|
||||
!:apple 8BIMJPEG
|
||||
!:strength +1
|
||||
>6 string JFIF \b, JFIF standard
|
||||
# The following added by Erik Rossen <[email protected]> 1999-09-06
|
||||
# in a vain attempt to add image size reporting for JFIF. Note that these
|
||||
# tests are not fool-proof since some perfectly valid JPEGs are currently
|
||||
# impossible to specify in magic(4) format.
|
||||
# First, a little JFIF version info:
|
||||
>>11 byte x \b %d.
|
||||
>>12 byte x \b%02d
|
||||
# Next, the resolution or aspect ratio of the image:
|
||||
#>>13 byte 0 \b, aspect ratio
|
||||
#>>13 byte 1 \b, resolution (DPI)
|
||||
#>>13 byte 2 \b, resolution (DPCM)
|
||||
#>>4 beshort x \b, segment length %d
|
||||
# Next, show thumbnail info, if it exists:
|
||||
>>18 byte !0 \b, thumbnail %dx
|
||||
>>>19 byte x \b%d
|
||||
|
||||
# EXIF moved down here to avoid reporting a bogus version number,
|
||||
# and EXIF version number printing added.
|
||||
# - Patrik R=E5dman <[email protected]>
|
||||
>6 string Exif \b, EXIF standard
|
||||
# Look for EXIF IFD offset in IFD 0, and then look for EXIF version tag in EXIF IFD.
|
||||
# All possible combinations of entries have to be enumerated, since no looping
|
||||
# is possible. And both endians are possible...
|
||||
# The combinations included below are from real-world JPEGs.
|
||||
# Little-endian
|
||||
>>12 string II
|
||||
# IFD 0 Entry #5:
|
||||
>>>70 leshort 0x8769
|
||||
# EXIF IFD Entry #1:
|
||||
>>>>(78.l+14) leshort 0x9000
|
||||
>>>>>(78.l+23) byte x %c
|
||||
>>>>>(78.l+24) byte x \b.%c
|
||||
>>>>>(78.l+25) byte !0x30 \b%c
|
||||
# IFD 0 Entry #9:
|
||||
>>>118 leshort 0x8769
|
||||
# EXIF IFD Entry #3:
|
||||
>>>>(126.l+38) leshort 0x9000
|
||||
>>>>>(126.l+47) byte x %c
|
||||
>>>>>(126.l+48) byte x \b.%c
|
||||
>>>>>(126.l+49) byte !0x30 \b%c
|
||||
# IFD 0 Entry #10
|
||||
>>>130 leshort 0x8769
|
||||
# EXIF IFD Entry #3:
|
||||
>>>>(138.l+38) leshort 0x9000
|
||||
>>>>>(138.l+47) byte x %c
|
||||
>>>>>(138.l+48) byte x \b.%c
|
||||
>>>>>(138.l+49) byte !0x30 \b%c
|
||||
# EXIF IFD Entry #4:
|
||||
>>>>(138.l+50) leshort 0x9000
|
||||
>>>>>(138.l+59) byte x %c
|
||||
>>>>>(138.l+60) byte x \b.%c
|
||||
>>>>>(138.l+61) byte !0x30 \b%c
|
||||
# EXIF IFD Entry #5:
|
||||
>>>>(138.l+62) leshort 0x9000
|
||||
>>>>>(138.l+71) byte x %c
|
||||
>>>>>(138.l+72) byte x \b.%c
|
||||
>>>>>(138.l+73) byte !0x30 \b%c
|
||||
# IFD 0 Entry #11
|
||||
>>>142 leshort 0x8769
|
||||
# EXIF IFD Entry #3:
|
||||
>>>>(150.l+38) leshort 0x9000
|
||||
>>>>>(150.l+47) byte x %c
|
||||
>>>>>(150.l+48) byte x \b.%c
|
||||
>>>>>(150.l+49) byte !0x30 \b%c
|
||||
# EXIF IFD Entry #4:
|
||||
>>>>(150.l+50) leshort 0x9000
|
||||
>>>>>(150.l+59) byte x %c
|
||||
>>>>>(150.l+60) byte x \b.%c
|
||||
>>>>>(150.l+61) byte !0x30 \b%c
|
||||
# EXIF IFD Entry #5:
|
||||
>>>>(150.l+62) leshort 0x9000
|
||||
>>>>>(150.l+71) byte x %c
|
||||
>>>>>(150.l+72) byte x \b.%c
|
||||
>>>>>(150.l+73) byte !0x30 \b%c
|
||||
# Big-endian
|
||||
>>12 string MM
|
||||
# IFD 0 Entry #9:
|
||||
>>>118 beshort 0x8769
|
||||
# EXIF IFD Entry #1:
|
||||
>>>>(126.L+14) beshort 0x9000
|
||||
>>>>>(126.L+23) byte x %c
|
||||
>>>>>(126.L+24) byte x \b.%c
|
||||
>>>>>(126.L+25) byte !0x30 \b%c
|
||||
# EXIF IFD Entry #3:
|
||||
>>>>(126.L+38) beshort 0x9000
|
||||
>>>>>(126.L+47) byte x %c
|
||||
>>>>>(126.L+48) byte x \b.%c
|
||||
>>>>>(126.L+49) byte !0x30 \b%c
|
||||
# IFD 0 Entry #10
|
||||
>>>130 beshort 0x8769
|
||||
# EXIF IFD Entry #3:
|
||||
>>>>(138.L+38) beshort 0x9000
|
||||
>>>>>(138.L+47) byte x %c
|
||||
>>>>>(138.L+48) byte x \b.%c
|
||||
>>>>>(138.L+49) byte !0x30 \b%c
|
||||
# EXIF IFD Entry #5:
|
||||
>>>>(138.L+62) beshort 0x9000
|
||||
>>>>>(138.L+71) byte x %c
|
||||
>>>>>(138.L+72) byte x \b.%c
|
||||
>>>>>(138.L+73) byte !0x30 \b%c
|
||||
# IFD 0 Entry #11
|
||||
>>>142 beshort 0x8769
|
||||
# EXIF IFD Entry #4:
|
||||
>>>>(150.L+50) beshort 0x9000
|
||||
>>>>>(150.L+59) byte x %c
|
||||
>>>>>(150.L+60) byte x \b.%c
|
||||
>>>>>(150.L+61) byte !0x30 \b%c
|
||||
# Here things get sticky. We can do ONE MORE marker segment with
|
||||
# indirect addressing, and that's all. It would be great if we could
|
||||
# do pointer arithemetic like in an assembler language. Christos?
|
||||
# And if there was some sort of looping construct to do searches, plus a few
|
||||
# named accumulators, it would be even more effective...
|
||||
# At least we can show a comment if no other segments got inserted before:
|
||||
>(4.S+5) byte 0xFE
|
||||
>>(4.S+8) string >\0 \b, comment: "%s"
|
||||
# FIXME: When we can do non-byte counted strings, we can use that to get
|
||||
# the string's count, and fix Debian bug #283760
|
||||
#>(4.S+5) byte 0xFE \b, comment
|
||||
#>>(4.S+6) beshort x \b length=%d
|
||||
#>>(4.S+8) string >\0 \b, "%s"
|
||||
# Or, we can show the encoding type (I've included only the three most common)
|
||||
# and image dimensions if we are lucky and the SOFn (image segment) is here:
|
||||
>(4.S+5) byte 0xC0 \b, baseline
|
||||
>>(4.S+6) byte x \b, precision %d
|
||||
>>(4.S+7) beshort x \b, %dx
|
||||
>>(4.S+9) beshort x \b%d
|
||||
>(4.S+5) byte 0xC1 \b, extended sequential
|
||||
>>(4.S+6) byte x \b, precision %d
|
||||
>>(4.S+7) beshort x \b, %dx
|
||||
>>(4.S+9) beshort x \b%d
|
||||
>(4.S+5) byte 0xC2 \b, progressive
|
||||
>>(4.S+6) byte x \b, precision %d
|
||||
>>(4.S+7) beshort x \b, %dx
|
||||
>>(4.S+9) beshort x \b%d
|
||||
# I've commented-out quantisation table reporting. I doubt anyone cares yet.
|
||||
#>(4.S+5) byte 0xDB \b, quantisation table
|
||||
#>>(4.S+6) beshort x \b length=%d
|
||||
#>14 beshort x \b, %d x
|
||||
#>16 beshort x \b %d
|
||||
|
||||
# HSI is Handmade Software's proprietary JPEG encoding scheme
|
||||
0 string hsi1 JPEG image data, HSI proprietary
|
||||
|
||||
# From: David Santinoli <[email protected]>
|
||||
0 string \x00\x00\x00\x0C\x6A\x50\x20\x20\x0D\x0A\x87\x0A JPEG 2000 image data
|
||||
|
||||
# Type: JPEG 2000 codesream
|
||||
# From: Mathieu Malaterre <[email protected]>
|
||||
0 belong 0xff4fff51 JPEG 2000 codestream
|
||||
45 beshort 0xff52
|
||||
@@ -1,10 +0,0 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# kde: file(1) magic for KDE
|
||||
|
||||
0 string [KDE\ Desktop\ Entry] KDE desktop entry
|
||||
!:mime application/x-kdelnk
|
||||
0 string #\ KDE\ Config\ File KDE config file
|
||||
!:mime application/x-kdelnk
|
||||
0 string #\ xmcd xmcd database file for kscd
|
||||
!:mime text/x-xmcd
|
||||
@@ -1,264 +0,0 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# linux: file(1) magic for Linux files
|
||||
#
|
||||
# Values for Linux/i386 binaries, from Daniel Quinlan <[email protected]>
|
||||
# The following basic Linux magic is useful for reference, but using
|
||||
# "long" magic is a better practice in order to avoid collisions.
|
||||
#
|
||||
# 2 leshort 100 Linux/i386
|
||||
# >0 leshort 0407 impure executable (OMAGIC)
|
||||
# >0 leshort 0410 pure executable (NMAGIC)
|
||||
# >0 leshort 0413 demand-paged executable (ZMAGIC)
|
||||
# >0 leshort 0314 demand-paged executable (QMAGIC)
|
||||
#
|
||||
0 lelong 0x00640107 Linux/i386 impure executable (OMAGIC)
|
||||
>16 lelong 0 \b, stripped
|
||||
0 lelong 0x00640108 Linux/i386 pure executable (NMAGIC)
|
||||
>16 lelong 0 \b, stripped
|
||||
0 lelong 0x0064010b Linux/i386 demand-paged executable (ZMAGIC)
|
||||
>16 lelong 0 \b, stripped
|
||||
0 lelong 0x006400cc Linux/i386 demand-paged executable (QMAGIC)
|
||||
>16 lelong 0 \b, stripped
|
||||
#
|
||||
0 string \007\001\000 Linux/i386 object file
|
||||
>20 lelong >0x1020 \b, DLL library
|
||||
# Linux-8086 stuff:
|
||||
0 string \01\03\020\04 Linux-8086 impure executable
|
||||
>28 long !0 not stripped
|
||||
0 string \01\03\040\04 Linux-8086 executable
|
||||
>28 long !0 not stripped
|
||||
#
|
||||
0 string \243\206\001\0 Linux-8086 object file
|
||||
#
|
||||
0 string \01\03\020\20 Minix-386 impure executable
|
||||
>28 long !0 not stripped
|
||||
0 string \01\03\040\20 Minix-386 executable
|
||||
>28 long !0 not stripped
|
||||
# core dump file, from Bill Reynolds <[email protected]>
|
||||
216 lelong 0421 Linux/i386 core file
|
||||
>220 string >\0 of '%s'
|
||||
>200 lelong >0 (signal %d)
|
||||
#
|
||||
# LILO boot/chain loaders, from Daniel Quinlan <[email protected]>
|
||||
# this can be overridden by the DOS executable (COM) entry
|
||||
2 string LILO Linux/i386 LILO boot/chain loader
|
||||
#
|
||||
# PSF fonts, from H. Peter Anvin <[email protected]>
|
||||
0 leshort 0x0436 Linux/i386 PC Screen Font data,
|
||||
>2 byte 0 256 characters, no directory,
|
||||
>2 byte 1 512 characters, no directory,
|
||||
>2 byte 2 256 characters, Unicode directory,
|
||||
>2 byte 3 512 characters, Unicode directory,
|
||||
>3 byte >0 8x%d
|
||||
# Linux swap file, from Daniel Quinlan <[email protected]>
|
||||
4086 string SWAP-SPACE Linux/i386 swap file
|
||||
# From: Jeff Bailey <[email protected]>
|
||||
# Linux swap file with swsusp1 image, from Jeff Bailey <[email protected]>
|
||||
4076 string SWAPSPACE2S1SUSPEND Linux/i386 swap file (new style) with SWSUSP1 image
|
||||
# according to man page of mkswap (8) March 1999
|
||||
4086 string SWAPSPACE2 Linux/i386 swap file (new style)
|
||||
>0x400 long x %d (4K pages)
|
||||
>0x404 long x size %d pages
|
||||
>>4086 string SWAPSPACE2
|
||||
>>>1052 string >\0 Label %s
|
||||
# ECOFF magic for OSF/1 and Linux (only tested under Linux though)
|
||||
#
|
||||
# from Erik Troan ([email protected]) examining od dumps, so this
|
||||
# could be wrong
|
||||
# updated by David Mosberger ([email protected]) based on
|
||||
# GNU BFD and MIPS info found below.
|
||||
#
|
||||
0 leshort 0x0183 ECOFF alpha
|
||||
>24 leshort 0407 executable
|
||||
>24 leshort 0410 pure
|
||||
>24 leshort 0413 demand paged
|
||||
>8 long >0 not stripped
|
||||
>8 long 0 stripped
|
||||
>23 leshort >0 - version %ld.
|
||||
#
|
||||
# Linux kernel boot images, from Albert Cahalan <[email protected]>
|
||||
# and others such as Axel Kohlmeyer <[email protected]>
|
||||
# and Nicolás Lichtmaier <[email protected]>
|
||||
# All known start with: b8 c0 07 8e d8 b8 00 90 8e c0 b9 00 01 29 f6 29
|
||||
# Linux kernel boot images (i386 arch) (Wolfram Kleff)
|
||||
514 string HdrS Linux kernel
|
||||
>510 leshort 0xAA55 x86 boot executable
|
||||
>>518 leshort >0x1ff
|
||||
>>>529 byte 0 zImage,
|
||||
>>>529 byte 1 bzImage,
|
||||
>>>(526.s+0x200) string >\0 version %s,
|
||||
>>498 leshort 1 RO-rootFS,
|
||||
>>498 leshort 0 RW-rootFS,
|
||||
>>508 leshort >0 root_dev 0x%X,
|
||||
>>502 leshort >0 swap_dev 0x%X,
|
||||
>>504 leshort >0 RAMdisksize %u KB,
|
||||
>>506 leshort 0xFFFF Normal VGA
|
||||
>>506 leshort 0xFFFE Extended VGA
|
||||
>>506 leshort 0xFFFD Prompt for Videomode
|
||||
>>506 leshort >0 Video mode %d
|
||||
# This also matches new kernels, which were caught above by "HdrS".
|
||||
0 belong 0xb8c0078e Linux kernel
|
||||
>0x1e3 string Loading version 1.3.79 or older
|
||||
>0x1e9 string Loading from prehistoric times
|
||||
|
||||
# System.map files - Nicolás Lichtmaier <[email protected]>
|
||||
8 search/1 \ A\ _text Linux kernel symbol map text
|
||||
|
||||
# LSM entries - Nicolás Lichtmaier <[email protected]>
|
||||
0 search/1 Begin3 Linux Software Map entry text
|
||||
0 search/1 Begin4 Linux Software Map entry text (new format)
|
||||
|
||||
# From Matt Zimmerman, enhanced for v3 by Matthew Palmer
|
||||
0 belong 0x4f4f4f4d User-mode Linux COW file
|
||||
>4 belong <3 \b, version %d
|
||||
>>8 string >\0 \b, backing file %s
|
||||
>4 belong >2 \b, version %d
|
||||
>>32 string >\0 \b, backing file %s
|
||||
|
||||
############################################################################
|
||||
# Linux kernel versions
|
||||
|
||||
0 string \xb8\xc0\x07\x8e\xd8\xb8\x00\x90 Linux
|
||||
>497 leshort 0 x86 boot sector
|
||||
>>514 belong 0x8e of a kernel from the dawn of time!
|
||||
>>514 belong 0x908ed8b4 version 0.99-1.1.42
|
||||
>>514 belong 0x908ed8b8 for memtest86
|
||||
|
||||
>497 leshort !0 x86 kernel
|
||||
>>504 leshort >0 RAMdisksize=%u KB
|
||||
>>502 leshort >0 swap=0x%X
|
||||
>>508 leshort >0 root=0x%X
|
||||
>>>498 leshort 1 \b-ro
|
||||
>>>498 leshort 0 \b-rw
|
||||
>>506 leshort 0xFFFF vga=normal
|
||||
>>506 leshort 0xFFFE vga=extended
|
||||
>>506 leshort 0xFFFD vga=ask
|
||||
>>506 leshort >0 vga=%d
|
||||
>>514 belong 0x908ed881 version 1.1.43-1.1.45
|
||||
>>514 belong 0x15b281cd
|
||||
>>>0xa8e belong 0x55AA5a5a version 1.1.46-1.2.13,1.3.0
|
||||
>>>0xa99 belong 0x55AA5a5a version 1.3.1,2
|
||||
>>>0xaa3 belong 0x55AA5a5a version 1.3.3-1.3.30
|
||||
>>>0xaa6 belong 0x55AA5a5a version 1.3.31-1.3.41
|
||||
>>>0xb2b belong 0x55AA5a5a version 1.3.42-1.3.45
|
||||
>>>0xaf7 belong 0x55AA5a5a version 1.3.46-1.3.72
|
||||
>>514 string HdrS
|
||||
>>>518 leshort >0x1FF
|
||||
>>>>529 byte 0 \b, zImage
|
||||
>>>>529 byte 1 \b, bzImage
|
||||
>>>>(526.s+0x200) string >\0 \b, version %s
|
||||
|
||||
# Linux boot sector thefts.
|
||||
0 belong 0xb8c0078e Linux
|
||||
>0x1e6 belong 0x454c4b53 ELKS Kernel
|
||||
>0x1e6 belong !0x454c4b53 style boot sector
|
||||
|
||||
############################################################################
|
||||
# Linux 8086 executable
|
||||
0 lelong&0xFF0000FF 0xC30000E9 Linux-Dev86 executable, headerless
|
||||
>5 string .
|
||||
>>4 string >\0 \b, libc version %s
|
||||
|
||||
0 lelong&0xFF00FFFF 0x4000301 Linux-8086 executable
|
||||
>2 byte&0x01 !0 \b, unmapped zero page
|
||||
>2 byte&0x20 0 \b, impure
|
||||
>2 byte&0x20 !0
|
||||
>>2 byte&0x10 !0 \b, A_EXEC
|
||||
>2 byte&0x02 !0 \b, A_PAL
|
||||
>2 byte&0x04 !0 \b, A_NSYM
|
||||
>2 byte&0x08 !0 \b, A_STAND
|
||||
>2 byte&0x40 !0 \b, A_PURE
|
||||
>2 byte&0x80 !0 \b, A_TOVLY
|
||||
>28 long !0 \b, not stripped
|
||||
>37 string .
|
||||
>>36 string >\0 \b, libc version %s
|
||||
|
||||
# 0 lelong&0xFF00FFFF 0x10000301 ld86 I80386 executable
|
||||
# 0 lelong&0xFF00FFFF 0xB000301 ld86 M68K executable
|
||||
# 0 lelong&0xFF00FFFF 0xC000301 ld86 NS16K executable
|
||||
# 0 lelong&0xFF00FFFF 0x17000301 ld86 SPARC executable
|
||||
|
||||
# SYSLINUX boot logo files (from 'ppmtolss16' sources)
|
||||
# http://syslinux.zytor.com/
|
||||
#
|
||||
0 lelong =0x1413f33d SYSLINUX' LSS16 image data
|
||||
>4 leshort x \b, width %d
|
||||
>6 leshort x \b, height %d
|
||||
|
||||
0 string OOOM User-Mode-Linux's Copy-On-Write disk image
|
||||
>4 belong x version %d
|
||||
|
||||
# SE Linux policy database
|
||||
# From: Mike Frysinger <[email protected]>
|
||||
0 lelong 0xf97cff8c SE Linux policy
|
||||
>16 lelong x v%d
|
||||
>20 lelong 1 MLS
|
||||
>24 lelong x %d symbols
|
||||
>28 lelong x %d ocons
|
||||
|
||||
# Linux Logical Volume Manager (LVM)
|
||||
# Emmanuel VARAGNAT <[email protected]>
|
||||
#
|
||||
# System ID, UUID and volume group name are 128 bytes long
|
||||
# but they should never be full and initialized with zeros...
|
||||
#
|
||||
# LVM1
|
||||
#
|
||||
0x0 string HM\001 LVM1 (Linux Logical Volume Manager), version 1
|
||||
>0x12c string >\0 , System ID: %s
|
||||
|
||||
0x0 string HM\002 LVM1 (Linux Logical Volume Manager), version 2
|
||||
>0x12c string >\0 , System ID: %s
|
||||
|
||||
# LVM2
|
||||
#
|
||||
# It seems that the label header can be in one the four first sector
|
||||
# of the disk... (from _find_labeller in lib/label/label.c of LVM2)
|
||||
#
|
||||
# 0x200 seems to be the common case
|
||||
|
||||
0x218 string LVM2\ 001 LVM2 (Linux Logical Volume Manager)
|
||||
# read the offset to add to the start of the header, and the header
|
||||
# start in 0x200
|
||||
>(0x214.l+0x200) string >\0 , UUID: %s
|
||||
|
||||
0x018 string LVM2\ 001 LVM2 (Linux Logical Volume Manager)
|
||||
>(0x014.l) string >\0 , UUID: %s
|
||||
|
||||
0x418 string LVM2\ 001 LVM2 (Linux Logical Volume Manager)
|
||||
>(0x414.l+0x400) string >\0 , UUID: %s
|
||||
|
||||
0x618 string LVM2\ 001 LVM2 (Linux Logical Volume Manager)
|
||||
>(0x614.l+0x600) string >\0 , UUID: %s
|
||||
|
||||
# LVM snapshot
|
||||
# from Jason Farrel
|
||||
0 string SnAp LVM Snapshot (CopyOnWrite store)
|
||||
>4 lelong !0 - valid,
|
||||
>4 lelong 0 - invalid,
|
||||
>8 lelong x version %d,
|
||||
>12 lelong x chunk_size %d
|
||||
|
||||
# SE Linux policy database
|
||||
0 lelong 0xf97cff8c SE Linux policy
|
||||
>16 lelong x v%d
|
||||
>20 lelong 1 MLS
|
||||
>24 lelong x %d symbols
|
||||
>28 lelong x %d ocons
|
||||
|
||||
# LUKS: Linux Unified Key Setup, On-Disk Format, http://luks.endorphin.org/spec
|
||||
# Anthon van der Neut ([email protected])
|
||||
0 string LUKS\xba\xbe LUKS encrypted file,
|
||||
>6 beshort x ver %d
|
||||
>8 string x [%s,
|
||||
>40 string x %s,
|
||||
>72 string x %s]
|
||||
>168 string x UUID: %s
|
||||
|
||||
|
||||
# Summary: Xen saved domain file
|
||||
# Created by: Radek Vokal <[email protected]>
|
||||
0 string LinuxGuestRecord Xen saved domain
|
||||
>20 search/256 (name
|
||||
>>&1 string x (name %s)
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# llvm: file(1) magic for LLVM byte-codes
|
||||
# URL: http://llvm.cs.uiuc.edu/docs/BytecodeFormat.html#signature
|
||||
# From: Al Stone <[email protected]>
|
||||
|
||||
0 string llvm LLVM byte-codes, uncompressed
|
||||
0 string llvc0 LLVM byte-codes, null compression
|
||||
0 string llvc1 LLVM byte-codes, gzip compression
|
||||
0 string llvc2 LLVM byte-codes, bzip2 compression
|
||||
@@ -1,84 +0,0 @@
|
||||
#------------------------------------------------------------
|
||||
# Mach has two magic numbers, 0xcafebabe and 0xfeedface.
|
||||
# Unfortunately the first, cafebabe, is shared with
|
||||
# Java ByteCode, so they are both handled in the file "cafebabe".
|
||||
# The "feedface" ones are handled herein.
|
||||
#------------------------------------------------------------
|
||||
0 lelong&0xfffffffe 0xfeedface Mach-O
|
||||
>0 byte 0xcf 64-bit
|
||||
>12 lelong 1 object
|
||||
>12 lelong 2 executable
|
||||
>12 lelong 3 fixed virtual memory shared library
|
||||
>12 lelong 4 core
|
||||
>12 lelong 5 preload executable
|
||||
>12 lelong 6 dynamically linked shared library
|
||||
>12 lelong 7 dynamic linker
|
||||
>12 lelong 8 bundle
|
||||
>12 lelong 9 dynamically linked shared library stub
|
||||
>12 lelong >9
|
||||
>>12 lelong x filetype=%ld
|
||||
>4 lelong <0
|
||||
>>4 lelong x architecture=%ld
|
||||
>4 lelong 1 vax
|
||||
>4 lelong 2 romp
|
||||
>4 lelong 3 architecture=3
|
||||
>4 lelong 4 ns32032
|
||||
>4 lelong 5 ns32332
|
||||
>4 lelong 6 m68k
|
||||
>4 lelong 7 i386
|
||||
>4 lelong 8 mips
|
||||
>4 lelong 9 ns32532
|
||||
>4 lelong 10 architecture=10
|
||||
>4 lelong 11 hppa
|
||||
>4 lelong 12 acorn
|
||||
>4 lelong 13 m88k
|
||||
>4 lelong 14 sparc
|
||||
>4 lelong 15 i860-big
|
||||
>4 lelong 16 i860
|
||||
>4 lelong 17 rs6000
|
||||
>4 lelong 18 ppc
|
||||
>4 lelong 16777234 ppc64
|
||||
>4 lelong >16777234
|
||||
>>4 lelong x architecture=%ld
|
||||
#
|
||||
0 belong&0xfffffffe 0xfeedface Mach-O
|
||||
>3 byte 0xcf 64-bit
|
||||
>12 belong 1 object
|
||||
>12 belong 2 executable
|
||||
>12 belong 3 fixed virtual memory shared library
|
||||
>12 belong 4 core
|
||||
>12 belong 5 preload executable
|
||||
>12 belong 6 dynamically linked shared library
|
||||
>12 belong 7 dynamic linker
|
||||
>12 belong 8 bundle
|
||||
>12 belong 9 dynamically linked shared library stub
|
||||
>12 belong >9
|
||||
>>12 belong x filetype=%ld
|
||||
>4 belong <0
|
||||
>>4 belong x architecture=%ld
|
||||
>4 belong 1 vax
|
||||
>4 belong 2 romp
|
||||
>4 belong 3 architecture=3
|
||||
>4 belong 4 ns32032
|
||||
>4 belong 5 ns32332
|
||||
>4 belong 6 for m68k architecture
|
||||
# from NeXTstep 3.0 <mach/machine.h>
|
||||
# i.e. mc680x0_all, ignore
|
||||
# >>8 belong 1 (mc68030)
|
||||
>>8 belong 2 (mc68040)
|
||||
>>8 belong 3 (mc68030 only)
|
||||
>4 belong 7 i386
|
||||
>4 belong 8 mips
|
||||
>4 belong 9 ns32532
|
||||
>4 belong 10 architecture=10
|
||||
>4 belong 11 hppa
|
||||
>4 belong 12 acorn
|
||||
>4 belong 13 m88k
|
||||
>4 belong 14 sparc
|
||||
>4 belong 15 i860-big
|
||||
>4 belong 16 i860
|
||||
>4 belong 17 rs6000
|
||||
>4 belong 18 ppc
|
||||
>4 belong 16777234 ppc64
|
||||
>4 belong >16777234
|
||||
>>4 belong x architecture=%ld
|
||||
@@ -1,53 +0,0 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# mail.news: file(1) magic for mail and news
|
||||
#
|
||||
# Unfortunately, saved netnews also has From line added in some news software.
|
||||
#0 string From mail text
|
||||
# There are tests to ascmagic.c to cope with mail and news.
|
||||
0 string Relay-Version: old news text
|
||||
!:mime message/rfc822
|
||||
0 string #!\ rnews batched news text
|
||||
!:mime message/rfc822
|
||||
0 string N#!\ rnews mailed, batched news text
|
||||
!:mime message/rfc822
|
||||
0 string Forward\ to mail forwarding text
|
||||
!:mime message/rfc822
|
||||
0 string Pipe\ to mail piping text
|
||||
!:mime message/rfc822
|
||||
0 string Return-Path: smtp mail text
|
||||
!:mime message/rfc822
|
||||
0 string Path: news text
|
||||
!:mime message/news
|
||||
0 string Xref: news text
|
||||
!:mime message/news
|
||||
0 string From: news or mail text
|
||||
!:mime message/rfc822
|
||||
0 string Article saved news text
|
||||
!:mime message/news
|
||||
0 string BABYL Emacs RMAIL text
|
||||
0 string Received: RFC 822 mail text
|
||||
!:mime message/rfc822
|
||||
0 string MIME-Version: MIME entity text
|
||||
#0 string Content- MIME entity text
|
||||
|
||||
# TNEF files...
|
||||
0 lelong 0x223E9F78 Transport Neutral Encapsulation Format
|
||||
|
||||
# From: Kevin Sullivan <[email protected]>
|
||||
0 string *mbx* MBX mail folder
|
||||
|
||||
# From: Simon Matter <[email protected]>
|
||||
0 string \241\002\213\015skiplist\ file\0\0\0 Cyrus skiplist DB
|
||||
|
||||
# JAM(mbp) Fidonet message area databases
|
||||
# JHR file
|
||||
0 string JAM\0 JAM message area header file
|
||||
>12 leshort >0 (%d messages)
|
||||
|
||||
# Squish Fidonet message area databases
|
||||
# SQD file (requires at least one message in the area)
|
||||
# XXX: Weak magic
|
||||
#256 leshort 0xAFAE4453 Squish message area data file
|
||||
#>4 leshort >0 (%d messages)
|
||||
|
||||
#0 string \<!--\ MHonArc text/html; x-type=mhonarc
|
||||
@@ -1,7 +0,0 @@
|
||||
#
|
||||
# Mach magic number info
|
||||
#
|
||||
0 long 0xefbe OSF/Rose object
|
||||
# I386 magic number info
|
||||
#
|
||||
0 short 0565 i386 COFF object
|
||||
@@ -1,91 +0,0 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# palm: file(1) magic for PalmOS {.prc,.pdb}: applications, docfiles, and hacks
|
||||
#
|
||||
# Brian Lalor <[email protected]>
|
||||
|
||||
# appl
|
||||
60 belong 0x6170706c PalmOS application
|
||||
>0 string >\0 "%s"
|
||||
# TEXt
|
||||
60 belong 0x54455874 AportisDoc file
|
||||
>0 string >\0 "%s"
|
||||
# HACK
|
||||
60 belong 0x4841434b HackMaster hack
|
||||
>0 string >\0 "%s"
|
||||
|
||||
# Variety of PalmOS document types
|
||||
# Michael-John Turner <[email protected]>
|
||||
# Thanks to Hasan Umit Ezerce <[email protected]> for his DocType
|
||||
60 string BVokBDIC BDicty PalmOS document
|
||||
>0 string >\0 "%s"
|
||||
60 string DB99DBOS DB PalmOS document
|
||||
>0 string >\0 "%s"
|
||||
60 string vIMGView FireViewer/ImageViewer PalmOS document
|
||||
>0 string >\0 "%s"
|
||||
60 string PmDBPmDB HanDBase PalmOS document
|
||||
>0 string >\0 "%s"
|
||||
60 string InfoINDB InfoView PalmOS document
|
||||
>0 string >\0 "%s"
|
||||
60 string ToGoToGo iSilo PalmOS document
|
||||
>0 string >\0 "%s"
|
||||
60 string JfDbJBas JFile PalmOS document
|
||||
>0 string >\0 "%s"
|
||||
60 string JfDbJFil JFile Pro PalmOS document
|
||||
>0 string >\0 "%s"
|
||||
60 string DATALSdb List PalmOS document
|
||||
>0 string >\0 "%s"
|
||||
60 string Mdb1Mdb1 MobileDB PalmOS document
|
||||
>0 string >\0 "%s"
|
||||
60 string PNRdPPrs PeanutPress PalmOS document
|
||||
>0 string >\0 "%s"
|
||||
60 string DataPlkr Plucker PalmOS document
|
||||
>0 string >\0 "%s"
|
||||
60 string DataSprd QuickSheet PalmOS document
|
||||
>0 string >\0 "%s"
|
||||
60 string SM01SMem SuperMemo PalmOS document
|
||||
>0 string >\0 "%s"
|
||||
60 string TEXtTlDc TealDoc PalmOS document
|
||||
>0 string >\0 "%s"
|
||||
60 string InfoTlIf TealInfo PalmOS document
|
||||
>0 string >\0 "%s"
|
||||
60 string DataTlMl TealMeal PalmOS document
|
||||
>0 string >\0 "%s"
|
||||
60 string DataTlPt TealPaint PalmOS document
|
||||
>0 string >\0 "%s"
|
||||
60 string dataTDBP ThinkDB PalmOS document
|
||||
>0 string >\0 "%s"
|
||||
60 string TdatTide Tides PalmOS document
|
||||
>0 string >\0 "%s"
|
||||
60 string ToRaTRPW TomeRaider PalmOS document
|
||||
>0 string >\0 "%s"
|
||||
|
||||
# A GutenPalm zTXT etext for use on Palm Pilots (http://gutenpalm.sf.net)
|
||||
# For version 1.xx zTXTs, outputs version and numbers of bookmarks and
|
||||
# annotations.
|
||||
# For other versions, just outputs version.
|
||||
#
|
||||
60 string zTXT A GutenPalm zTXT e-book
|
||||
>0 string >\0 "%s"
|
||||
>(0x4E.L) byte 0
|
||||
>>(0x4E.L+1) byte x (v0.%02d)
|
||||
>(0x4E.L) byte 1
|
||||
>>(0x4E.L+1) byte x (v1.%02d)
|
||||
>>>(0x4E.L+10) beshort >0
|
||||
>>>>(0x4E.L+10) beshort <2 - 1 bookmark
|
||||
>>>>(0x4E.L+10) beshort >1 - %d bookmarks
|
||||
>>>(0x4E.L+14) beshort >0
|
||||
>>>>(0x4E.L+14) beshort <2 - 1 annotation
|
||||
>>>>(0x4E.L+14) beshort >1 - %d annotations
|
||||
>(0x4E.L) byte >1 (v%d.
|
||||
>>(0x4E.L+1) byte x %02d)
|
||||
|
||||
# Palm OS .prc file types
|
||||
60 string libr Palm OS dynamic library data
|
||||
>0 string >\0 "%s"
|
||||
60 string ptch Palm OS operating system patch data
|
||||
>0 string >\0 "%s"
|
||||
|
||||
# Mobipocket (www.mobipocket.com), donated by Carl Witty
|
||||
60 string BOOKMOBI Mobipocket E-book
|
||||
>0 string >\0 "%s"
|
||||
@@ -1,55 +0,0 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# perl: file(1) magic for Larry Wall's perl language.
|
||||
#
|
||||
# The `eval' lines recognizes an outrageously clever hack.
|
||||
# Keith Waclena <[email protected]>
|
||||
# Send additions to <[email protected]>
|
||||
0 search/1/b #!\ /bin/perl Perl script text executable
|
||||
!:mime text/x-perl
|
||||
0 search/1 eval\ "exec\ /bin/perl Perl script text
|
||||
!:mime text/x-perl
|
||||
0 search/1/b #!\ /usr/bin/perl Perl script text executable
|
||||
!:mime text/x-perl
|
||||
0 search/1 eval\ "exec\ /usr/bin/perl Perl script text
|
||||
!:mime text/x-perl
|
||||
0 search/1/b #!\ /usr/local/bin/perl Perl script text executable
|
||||
!:mime text/x-perl
|
||||
0 search/1 eval\ "exec\ /usr/local/bin/perl Perl script text
|
||||
!:mime text/x-perl
|
||||
0 search/1 eval\ '(exit\ $?0)'\ &&\ eval\ 'exec Perl script text
|
||||
!:mime text/x-perl
|
||||
|
||||
|
||||
# by Dmitry V. Levin and Alexey Tourbin
|
||||
# check the first line
|
||||
0 search/1 package
|
||||
>0 regex \^package[\ \t]+[0-9A-Za-z_:]+\ *; Perl5 module source text
|
||||
# not 'p', check other lines
|
||||
0 search/1 !p
|
||||
>0 regex \^package[\ \t]+[0-9A-Za-z_:]+\ *;
|
||||
>>0 regex \^1\ *;|\^(use|sub|my)\ .*[(;{=] Perl5 module source text
|
||||
|
||||
|
||||
|
||||
# Perl POD documents
|
||||
# From: Tom Hukins <[email protected]>
|
||||
0 search/1/B \=pod\n Perl POD document text
|
||||
0 search/1/B \n\=pod\n Perl POD document text
|
||||
0 search/1/B \=head1\ Perl POD document text
|
||||
0 search/1/B \n\=head1\ Perl POD document text
|
||||
0 search/1/B \=head2\ Perl POD document text
|
||||
0 search/1/B \n\=head2\ Perl POD document text
|
||||
|
||||
# Perl Storable data files.
|
||||
0 string perl-store perl Storable (v0.6) data
|
||||
>4 byte >0 (net-order %d)
|
||||
>>4 byte &01 (network-ordered)
|
||||
>>4 byte =3 (major 1)
|
||||
>>4 byte =2 (major 1)
|
||||
|
||||
0 string pst0 perl Storable (v0.7) data
|
||||
>4 byte >0
|
||||
>>4 byte &01 (network-ordered)
|
||||
>>4 byte =5 (major 2)
|
||||
>>4 byte =4 (major 2)
|
||||
>>5 byte >0 (minor %d)
|
||||
@@ -1,26 +0,0 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# pgp: file(1) magic for Pretty Good Privacy
|
||||
# see http://lists.gnupg.org/pipermail/gnupg-devel/1999-September/016052.html
|
||||
#
|
||||
0 beshort 0x9900 PGP key public ring
|
||||
!:mime application/x-pgp-keyring
|
||||
0 beshort 0x9501 PGP key security ring
|
||||
!:mime application/x-pgp-keyring
|
||||
0 beshort 0x9500 PGP key security ring
|
||||
!:mime application/x-pgp-keyring
|
||||
0 beshort 0xa600 PGP encrypted data
|
||||
#!:mime application/pgp-encrypted
|
||||
#0 string -----BEGIN\040PGP text/PGP armored data
|
||||
!:mime text/PGP # encoding: armored data
|
||||
#>15 string PUBLIC\040KEY\040BLOCK- public key block
|
||||
#>15 string MESSAGE- message
|
||||
#>15 string SIGNED\040MESSAGE- signed message
|
||||
#>15 string PGP\040SIGNATURE- signature
|
||||
|
||||
2 string ---BEGIN\ PGP\ PUBLIC\ KEY\ BLOCK- PGP public key block
|
||||
!:mime application/pgp-keys
|
||||
0 string -----BEGIN\040PGP\40MESSAGE- PGP message
|
||||
!:mime application/pgp
|
||||
0 string -----BEGIN\040PGP\40SIGNATURE- PGP signature
|
||||
!:mime application/pgp-signature
|
||||
@@ -1,21 +0,0 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# python: file(1) magic for python
|
||||
#
|
||||
# From: David Necas <[email protected]>
|
||||
# often the module starts with a multiline string
|
||||
0 string """ a python script text executable
|
||||
# MAGIC as specified in Python/import.c (1.5 to 2.3.0a)
|
||||
# 20121 ( YEAR - 1995 ) + MONTH + DAY (little endian followed by "\r\n"
|
||||
0 belong 0x994e0d0a python 1.5/1.6 byte-compiled
|
||||
0 belong 0x87c60d0a python 2.0 byte-compiled
|
||||
0 belong 0x2aeb0d0a python 2.1 byte-compiled
|
||||
0 belong 0x2ded0d0a python 2.2 byte-compiled
|
||||
0 belong 0x3bf20d0a python 2.3 byte-compiled
|
||||
0 belong 0x6df20d0a python 2.4 byte-compiled
|
||||
0 belong 0xb3f20d0a python 2.5 byte-compiled
|
||||
0 belong 0xd1f20d0a python 2.6 byte-compiled
|
||||
|
||||
|
||||
0 string/b #!\ /usr/bin/python python script text executable
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# file(1) magic for revision control files
|
||||
# From Hendrik Scholz <[email protected]>
|
||||
0 string /1\ :pserver: cvs password text file
|
||||
|
||||
# Conary changesets
|
||||
# From: Jonathan Smith <[email protected]>
|
||||
0 belong 0xea3f81bb Conary changeset data
|
||||
|
||||
# Type: Git bundles (git-bundle)
|
||||
# From: Josh Triplett <[email protected]>
|
||||
0 string #\ v2\ git\ bundle\n Git bundle
|
||||
|
||||
# Type: Mercurial bundles
|
||||
# From: Seo Sanghyeon <[email protected]>
|
||||
0 string HG10 Mercurial bundle,
|
||||
>4 string UN uncompressed
|
||||
>4 string BZ bzip2 compressed
|
||||
@@ -1,23 +0,0 @@
|
||||
#------------------------------------------------------------------------------
|
||||
#
|
||||
# RPM: file(1) magic for Red Hat Packages Erik Troan ([email protected])
|
||||
#
|
||||
0 beshort 0xedab
|
||||
>2 beshort 0xeedb RPM
|
||||
!:mime application/x-rpm
|
||||
>>4 byte x v%d
|
||||
>>6 beshort 0 bin
|
||||
>>6 beshort 1 src
|
||||
>>8 beshort 1 i386
|
||||
>>8 beshort 2 Alpha
|
||||
>>8 beshort 3 Sparc
|
||||
>>8 beshort 4 MIPS
|
||||
>>8 beshort 5 PowerPC
|
||||
>>8 beshort 6 68000
|
||||
>>8 beshort 7 SGI
|
||||
>>8 beshort 8 RS6000
|
||||
>>8 beshort 9 IA64
|
||||
>>8 beshort 10 Sparc64
|
||||
>>8 beshort 11 MIPSel
|
||||
>>8 beshort 12 ARM
|
||||
>>10 string x %s
|
||||
@@ -1,10 +0,0 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# ruby: file(1) magic for Lua scripting language
|
||||
# URL: http://www.ruby-lang.org/
|
||||
# From: Reuben Thomas <[email protected]>
|
||||
|
||||
# Ruby scripts
|
||||
0 search/1/b #!\ /usr/bin/ruby Ruby script text executable
|
||||
0 search/1/b #!\ /usr/local/bin/ruby Ruby script text executable
|
||||
0 search/1 #!/usr/bin/env\ ruby Ruby script text executable
|
||||
0 search/1 #!\ /usr/bin/env\ ruby Ruby script text executable
|
||||
@@ -1,70 +0,0 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# sgi: file(1) magic for Silicon Graphics applications
|
||||
|
||||
#
|
||||
#
|
||||
# Performance Co-Pilot file types
|
||||
0 string PmNs PCP compiled namespace (V.0)
|
||||
0 string PmN PCP compiled namespace
|
||||
>3 string >\0 (V.%1.1s)
|
||||
#3 lelong 0x84500526 PCP archive
|
||||
3 belong 0x84500526 PCP archive
|
||||
>7 byte x (V.%d)
|
||||
#>20 lelong -2 temporal index
|
||||
#>20 lelong -1 metadata
|
||||
#>20 lelong 0 log volume #0
|
||||
#>20 lelong >0 log volume #%ld
|
||||
>20 belong -2 temporal index
|
||||
>20 belong -1 metadata
|
||||
>20 belong 0 log volume #0
|
||||
>20 belong >0 log volume #%ld
|
||||
>24 string >\0 host: %s
|
||||
0 string PCPFolio PCP
|
||||
>9 string Version: Archive Folio
|
||||
>18 string >\0 (V.%s)
|
||||
0 string #pmchart PCP pmchart view
|
||||
>9 string Version
|
||||
>17 string >\0 (V%-3.3s)
|
||||
0 string #kmchart PCP kmchart view
|
||||
>9 string Version
|
||||
>17 string >\0 (V.%s)
|
||||
0 string pmview PCP pmview config
|
||||
>7 string Version
|
||||
>15 string >\0 (V%-3.3s)
|
||||
0 string #pmlogger PCP pmlogger config
|
||||
>10 string Version
|
||||
>18 string >\0 (V%1.1s)
|
||||
0 string #pmdahotproc PCP pmdahotproc config
|
||||
>13 string Version
|
||||
>21 string >\0 (V%-3.3s)
|
||||
0 string PcPh PCP Help
|
||||
>4 string 1 Index
|
||||
>4 string 2 Text
|
||||
>5 string >\0 (V.%1.1s)
|
||||
0 string #pmieconf-rules PCP pmieconf rules
|
||||
>16 string >\0 (V.%1.1s)
|
||||
3 string pmieconf-pmie PCP pmie config
|
||||
>17 string >\0 (V.%1.1s)
|
||||
|
||||
# SpeedShop data files
|
||||
0 lelong 0x13130303 SpeedShop data file
|
||||
|
||||
# mdbm files
|
||||
0 lelong 0x01023962 mdbm file, version 0 (obsolete)
|
||||
0 string mdbm mdbm file,
|
||||
>5 byte x version %d,
|
||||
>6 byte x 2^%d pages,
|
||||
>7 byte x pagesize 2^%d,
|
||||
>17 byte x hash %d,
|
||||
>11 byte x dataformat %d
|
||||
|
||||
# Alias Maya files
|
||||
0 string //Maya ASCII Alias Maya Ascii File,
|
||||
>13 string >\0 version %s
|
||||
8 string MAYAFOR4 Alias Maya Binary File,
|
||||
>32 string >\0 version %s scene
|
||||
8 string MayaFOR4 Alias Maya Binary File,
|
||||
>32 string >\0 version %s scene
|
||||
8 string CIMG Alias Maya Image File
|
||||
8 string DEEP Alias Maya Image File
|
||||
@@ -1,63 +0,0 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# Type: SVG Vectorial Graphics
|
||||
# From: Noel Torres <[email protected]>
|
||||
0 string \<?xml\ version="
|
||||
>15 string >\0
|
||||
>>23 search/400 \<svg SVG Scalable Vector Graphics image
|
||||
!:mime image/svg+xml
|
||||
>>23 search/400 \<gnc-v2 GnuCash file
|
||||
!:mime application/x-gnucash
|
||||
|
||||
# Sitemap file
|
||||
0 string \<?xml\ version="
|
||||
>15 string >\0
|
||||
>>23 search/400 \<urlset XML Sitemap document text
|
||||
!:mime application/xml-sitemap
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# sgml: file(1) magic for Standard Generalized Markup Language
|
||||
# HyperText Markup Language (HTML) is an SGML document type,
|
||||
# from Daniel Quinlan ([email protected])
|
||||
# adapted to string extenstions by Anthon van der Neut <[email protected])
|
||||
0 search/1/cB \<!doctype\ html HTML document text
|
||||
!:mime text/html
|
||||
0 search/1/cb \<head HTML document text
|
||||
!:mime text/html
|
||||
0 search/1/cb \<title HTML document text
|
||||
!:mime text/html
|
||||
0 search/1/cb \<html HTML document text
|
||||
!:mime text/html
|
||||
|
||||
# Extensible markup language (XML), a subset of SGML
|
||||
# from Marc Prud'hommeaux ([email protected])
|
||||
0 search/1/cb \<?xml XML document text
|
||||
!:mime application/xml
|
||||
0 string \<?xml\ version\ " XML
|
||||
!:mime application/xml
|
||||
0 string \<?xml\ version=" XML
|
||||
!:mime application/xml
|
||||
>15 search/1 >\0 %.3s document text
|
||||
>>23 search/1 \<xsl:stylesheet (XSL stylesheet)
|
||||
>>24 search/1 \<xsl:stylesheet (XSL stylesheet)
|
||||
0 string \<?xml\ version=' XML
|
||||
!:mime application/xml
|
||||
>15 search/1 >\0 %.3s document text
|
||||
>>23 search/1 \<xsl:stylesheet (XSL stylesheet)
|
||||
>>24 search/1 \<xsl:stylesheet (XSL stylesheet)
|
||||
0 search/1/b \<?xml XML document text
|
||||
!:mime application/xml
|
||||
0 search/1/b \<?XML broken XML document text
|
||||
!:mime application/xml
|
||||
|
||||
|
||||
# SGML, mostly from rph@sq
|
||||
0 search/1/cb \<!doctype exported SGML document text
|
||||
0 search/1/cb \<!subdoc exported SGML subdocument text
|
||||
0 search/1/cb \<!-- exported SGML document text
|
||||
|
||||
# Web browser cookie files
|
||||
# (Mozilla, Galeon, Netscape 4, Konqueror..)
|
||||
# Ulf Harnhammar <[email protected]>
|
||||
0 search/1 #\ HTTP\ Cookie\ File Web browser cookie text
|
||||
0 search/1 #\ Netscape\ HTTP\ Cookie\ File Netscape cookie text
|
||||
0 search/1 #\ KDE\ Cookie\ File Konqueror cookie text
|
||||
@@ -1,45 +0,0 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# sql: file(1) magic for SQL files
|
||||
#
|
||||
# From: "Marty Leisner" <[email protected]>
|
||||
# Recognize some MySQL files.
|
||||
#
|
||||
0 beshort 0xfe01 MySQL table definition file
|
||||
>2 byte x Version %d
|
||||
0 belong&0xffffff00 0xfefe0300 MySQL MISAM index file
|
||||
>3 byte x Version %d
|
||||
0 belong&0xffffff00 0xfefe0700 MySQL MISAM compressed data file
|
||||
>3 byte x Version %d
|
||||
0 belong&0xffffff00 0xfefe0500 MySQL ISAM index file
|
||||
>3 byte x Version %d
|
||||
0 belong&0xffffff00 0xfefe0600 MySQL ISAM compressed data file
|
||||
>3 byte x Version %d
|
||||
0 string \376bin MySQL replication log
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# iRiver H Series database file
|
||||
# From Ken Guest <[email protected]>
|
||||
# As observed from iRivNavi.iDB and unencoded firmware
|
||||
#
|
||||
0 string iRivDB iRiver Database file
|
||||
>11 string >\0 Version %s
|
||||
>39 string iHP-100 [H Series]
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# SQLite database files
|
||||
# Ken Guest <[email protected]>, Ty Sarna, Zack Weinberg
|
||||
#
|
||||
# Version 1 used GDBM internally; its files cannot be distinguished
|
||||
# from other GDBM files.
|
||||
#
|
||||
# Version 2 used this format:
|
||||
0 string **\ This\ file\ contains\ an\ SQLite SQLite 2.x database
|
||||
|
||||
# Version 3 of SQLite allows applications to embed their own "user version"
|
||||
# number in the database. Detect this and distinguish those files.
|
||||
|
||||
0 string SQLite\ format\ 3
|
||||
>60 string _MTN Monotone source repository
|
||||
>60 belong !0 SQLite 3.x database, user version %u
|
||||
>60 belong 0 SQLite 3.x database
|
||||
@@ -1,34 +0,0 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# unknown: file(1) magic for unknown machines
|
||||
#
|
||||
# XXX - this probably should be pruned, as it'll match PDP-11 and
|
||||
# VAX image formats.
|
||||
#
|
||||
# 0x107 is 0407; 0x108 is 0410; both are PDP-11 (executable and pure,
|
||||
# respectively).
|
||||
#
|
||||
# 0x109 is 0411; that's PDP-11 split I&D, but the PDP-11 version doesn't
|
||||
# have the "version %ld", which may be a bogus COFFism (I don't think
|
||||
# there ever was COFF for the PDP-11).
|
||||
#
|
||||
# 0x10B is 0413; that's VAX demand-paged, but this is a short, not a
|
||||
# long, as it would be on a VAX.
|
||||
#
|
||||
# 0x10C is 0414 and 0x10E is 416; those *are* unknown.
|
||||
#
|
||||
0 short 0x107 unknown machine executable
|
||||
>8 short >0 not stripped
|
||||
>15 byte >0 - version %ld
|
||||
0 short 0x108 unknown pure executable
|
||||
>8 short >0 not stripped
|
||||
>15 byte >0 - version %ld
|
||||
0 short 0x109 PDP-11 separate I&D
|
||||
>8 short >0 not stripped
|
||||
>15 byte >0 - version %ld
|
||||
0 short 0x10b unknown pure executable
|
||||
>8 short >0 not stripped
|
||||
>15 byte >0 - version %ld
|
||||
0 long 0x10c unknown demand paged pure executable
|
||||
>16 long >0 not stripped
|
||||
0 long 0x10e unknown readable demand paged pure executable
|
||||
@@ -1,18 +0,0 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# varied.script: file(1) magic for various interpreter scripts
|
||||
|
||||
0 string #!\ / a
|
||||
>3 string >\0 %s script text executable
|
||||
0 string #!\t/ a
|
||||
>3 string >\0 %s script text executable
|
||||
0 string #!/ a
|
||||
>2 string >\0 %s script text executable
|
||||
0 string #!\ script text executable
|
||||
>3 string >\0 for %s
|
||||
|
||||
# From: arno <[email protected]>
|
||||
# mozilla xpconnect typelib
|
||||
# see http://www.mozilla.org/scriptable/typelib_file.html
|
||||
0 string XPCOM\nTypeLib\r\n\032 XPConnect Typelib
|
||||
>0x10 byte x version %d
|
||||
>>0x11 byte x \b.%d
|
||||
@@ -1,6 +0,0 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# warc: file(1) magic for WARC files
|
||||
|
||||
0 string WARC/ WARC Archive
|
||||
>5 string x version %.4s
|
||||
@@ -1,121 +0,0 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# windows: file(1) magic for Microsoft Windows
|
||||
#
|
||||
# This file is mainly reserved for files where programs
|
||||
# using them are run almost always on MS Windows 3.x or
|
||||
# above, or files only used exclusively in Windows OS,
|
||||
# where there is no better category to allocate for.
|
||||
# For example, even though WinZIP almost run on Windows
|
||||
# only, it is better to treat them as "archive" instead.
|
||||
# For format usable in DOS, such as generic executable
|
||||
# format, please specify under "msdos" file.
|
||||
#
|
||||
|
||||
|
||||
# Summary: Outlook Express DBX file
|
||||
# Extension: .dbx
|
||||
# Created by: Christophe Monniez
|
||||
0 string \xCF\xAD\x12\xFE MS Outlook Express DBX file
|
||||
>4 byte =0xC5 \b, message database
|
||||
>4 byte =0xC6 \b, folder database
|
||||
>4 byte =0xC7 \b, account information
|
||||
>4 byte =0x30 \b, offline database
|
||||
|
||||
|
||||
# Summary: Windows crash dump
|
||||
# Extension: .dmp
|
||||
# Created by: Andreas Schuster (http://computer.forensikblog.de/)
|
||||
# Reference (1): http://computer.forensikblog.de/en/2008/02/64bit_magic.html
|
||||
# Modified by (1): Abel Cheung (Avoid match with first 4 bytes only)
|
||||
0 string PAGE
|
||||
>4 string DUMP MS Windows 32bit crash dump
|
||||
>>0x05c byte 0 \b, no PAE
|
||||
>>0x05c byte 1 \b, PAE
|
||||
>>0xf88 lelong 1 \b, full dump
|
||||
>>0xf88 lelong 2 \b, kernel dump
|
||||
>>0xf88 lelong 3 \b, small dump
|
||||
>>0x068 lelong x \b, %ld pages
|
||||
>4 string DU64 MS Windows 64bit crash dump
|
||||
>>0xf98 lelong 1 \b, full dump
|
||||
>>0xf98 lelong 2 \b, kernel dump
|
||||
>>0xf98 lelong 3 \b, small dump
|
||||
>>0x090 lequad x \b, %lld pages
|
||||
|
||||
|
||||
# Summary: Vista Event Log
|
||||
# Extension: .evtx
|
||||
# Created by: Andreas Schuster (http://computer.forensikblog.de/)
|
||||
# Reference (1): http://computer.forensikblog.de/en/2007/05/some_magic.html
|
||||
0 string ElfFile\0 MS Windows Vista Event Log
|
||||
>0x2a leshort x \b, %d chunks
|
||||
>>0x10 lelong x \b (no. %d in use)
|
||||
>0x18 lelong >1 \b, next record no. %d
|
||||
>0x18 lelong =1 \b, empty
|
||||
>0x78 lelong &1 \b, DIRTY
|
||||
>0x78 lelong &2 \b, FULL
|
||||
|
||||
|
||||
# Summary: Windows 3.1 group files
|
||||
# Extension: .grp
|
||||
# Created by: unknown
|
||||
0 string \120\115\103\103 MS Windows 3.1 group files
|
||||
|
||||
|
||||
# Summary: Old format help files
|
||||
# Extension: .hlp
|
||||
# Created by: Dirk Jagdmann <[email protected]>
|
||||
0 lelong 0x00035f3f MS Windows 3.x help file
|
||||
|
||||
|
||||
# Summary: Hyper terminal
|
||||
# Extension: .ht
|
||||
# Created by: unknown
|
||||
0 string HyperTerminal\
|
||||
>15 string 1.0\ --\ HyperTerminal\ data\ file MS Windows HyperTerminal profile
|
||||
|
||||
|
||||
# Summary: Windows shortcut
|
||||
# Extension: .lnk
|
||||
# Created by: unknown
|
||||
0 string \114\0\0\0\001\024\002\0\0\0\0\0\300\0\0\0\0\0\0\106 MS Windows shortcut
|
||||
|
||||
|
||||
# Summary: Outlook Personal Folders
|
||||
# Created by: unknown
|
||||
0 lelong 0x4E444221 Microsoft Outlook email folder
|
||||
>10 leshort 0x0e (<=2002)
|
||||
>10 leshort 0x17 (>=2003)
|
||||
|
||||
|
||||
# Summary: Windows help cache
|
||||
# Created by: unknown
|
||||
0 string \164\146\115\122\012\000\000\000\001\000\000\000 MS Windows help cache
|
||||
|
||||
|
||||
# Summary: IE cache file
|
||||
# Created by: Christophe Monniez
|
||||
0 string Client\ UrlCache\ MMF Internet Explorer cache file
|
||||
>20 string >\0 version %s
|
||||
|
||||
|
||||
# Summary: Registry files
|
||||
# Created by: unknown
|
||||
# Modified by (1): Joerg Jenderek
|
||||
0 string regf MS Windows registry file, NT/2000 or above
|
||||
0 string CREG MS Windows 95/98/ME registry file
|
||||
0 string SHCC3 MS Windows 3.1 registry file
|
||||
|
||||
|
||||
# Summary: Windows Registry text
|
||||
# Extension: .reg
|
||||
# Submitted by: Abel Cheung <[email protected]>
|
||||
0 string REGEDIT4\r\n\r\n Windows Registry text (Win95 or above)
|
||||
0 string Windows\ Registry\ Editor\
|
||||
>&0 string Version\ 5.00\r\n\r\n Windows Registry text (Win2K or above)
|
||||
|
||||
|
||||
# From: Pal Tamas <[email protected]>
|
||||
# Autorun File
|
||||
0 string/c [autorun]\r\n Microsoft Windows Autorun file.
|
||||
!:mime application/x-setupscript.
|
||||
@@ -1,34 +0,0 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# This is Aaron's attempt at a MAGIC file for Xilinx .bit files.
|
||||
# [email protected]
|
||||
# Got the info from FPGA-FAQ 0026
|
||||
#
|
||||
# First there is the sync header and its length
|
||||
0 beshort 0x0009
|
||||
>2 belong =0x0ff00ff0
|
||||
>>&0 belong =0x0ff00ff0
|
||||
>>>&0 beshort =0x0000
|
||||
>>>>&0 pstring a Xilinx BIT data
|
||||
# Next is a Pascal-style string with the NCD name. We want to capture that.
|
||||
>>>>0x0F pstring x - from %s
|
||||
# It is followed by a NUL
|
||||
>>>>>&1 byte 0x00
|
||||
# And then 'b'
|
||||
>>>>>&2 string b
|
||||
# With the part number:
|
||||
#>>>>>&5 string 4v (Virtex4)
|
||||
#>>>>>&5 string 2v (Virtex II
|
||||
#>>>>>>&0 string !p \b)
|
||||
#>>>>>>&0 string p Pro)
|
||||
>>>>>&4 pstring x - for %s
|
||||
# And then NUL / 'c' / Build Data / NUL / 'd' / Date / NUL / 'e' / Data Length
|
||||
>>>>>>&1 byte 0x00
|
||||
>>>>>>&2 string c
|
||||
>>>>>>&4 pstring x - built %s
|
||||
>>>>>>>&1 byte 0x00
|
||||
>>>>>>>&2 string d
|
||||
>>>>>>>&4 pstring x \b(%s)
|
||||
>>>>>>>>&1 byte 0x00
|
||||
>>>>>>>>&2 string e
|
||||
>>>>>>>>&4 belong x - data length 0x%lx
|
||||
+3
-236
@@ -1,238 +1,5 @@
|
||||
#
|
||||
# $File: Makefile.am,v 1.45 2009/03/05 22:40:59 christos Exp $
|
||||
#
|
||||
MAGIC_FRAGMENT_BASE = Magdir
|
||||
MAGIC_FRAGMENT_DIR = $(top_srcdir)/magic/$(MAGIC_FRAGMENT_BASE)
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
pkgdata_DATA = magic.mgc
|
||||
EXTRA_DIST = MAINT
|
||||
|
||||
EXTRA_DIST = Header Localstuff \
|
||||
$(MAGIC_FRAGMENT_DIR)/acorn \
|
||||
$(MAGIC_FRAGMENT_DIR)/adi \
|
||||
$(MAGIC_FRAGMENT_DIR)/adventure \
|
||||
$(MAGIC_FRAGMENT_DIR)/allegro \
|
||||
$(MAGIC_FRAGMENT_DIR)/alliant \
|
||||
$(MAGIC_FRAGMENT_DIR)/alpha \
|
||||
$(MAGIC_FRAGMENT_DIR)/amanda \
|
||||
$(MAGIC_FRAGMENT_DIR)/amigaos \
|
||||
$(MAGIC_FRAGMENT_DIR)/animation \
|
||||
$(MAGIC_FRAGMENT_DIR)/apl \
|
||||
$(MAGIC_FRAGMENT_DIR)/apple \
|
||||
$(MAGIC_FRAGMENT_DIR)/applix \
|
||||
$(MAGIC_FRAGMENT_DIR)/archive \
|
||||
$(MAGIC_FRAGMENT_DIR)/asterix \
|
||||
$(MAGIC_FRAGMENT_DIR)/att3b \
|
||||
$(MAGIC_FRAGMENT_DIR)/audio \
|
||||
$(MAGIC_FRAGMENT_DIR)/basis \
|
||||
$(MAGIC_FRAGMENT_DIR)/bflt \
|
||||
$(MAGIC_FRAGMENT_DIR)/blender \
|
||||
$(MAGIC_FRAGMENT_DIR)/blit \
|
||||
$(MAGIC_FRAGMENT_DIR)/bout \
|
||||
$(MAGIC_FRAGMENT_DIR)/bsdi \
|
||||
$(MAGIC_FRAGMENT_DIR)/btsnoop \
|
||||
$(MAGIC_FRAGMENT_DIR)/c-lang \
|
||||
$(MAGIC_FRAGMENT_DIR)/c64 \
|
||||
$(MAGIC_FRAGMENT_DIR)/cad \
|
||||
$(MAGIC_FRAGMENT_DIR)/cafebabe \
|
||||
$(MAGIC_FRAGMENT_DIR)/cddb \
|
||||
$(MAGIC_FRAGMENT_DIR)/chord \
|
||||
$(MAGIC_FRAGMENT_DIR)/cisco \
|
||||
$(MAGIC_FRAGMENT_DIR)/citrus \
|
||||
$(MAGIC_FRAGMENT_DIR)/clarion \
|
||||
$(MAGIC_FRAGMENT_DIR)/claris \
|
||||
$(MAGIC_FRAGMENT_DIR)/clipper \
|
||||
$(MAGIC_FRAGMENT_DIR)/commands \
|
||||
$(MAGIC_FRAGMENT_DIR)/communications \
|
||||
$(MAGIC_FRAGMENT_DIR)/compress \
|
||||
$(MAGIC_FRAGMENT_DIR)/console \
|
||||
$(MAGIC_FRAGMENT_DIR)/convex \
|
||||
$(MAGIC_FRAGMENT_DIR)/cracklib \
|
||||
$(MAGIC_FRAGMENT_DIR)/ctags \
|
||||
$(MAGIC_FRAGMENT_DIR)/dact \
|
||||
$(MAGIC_FRAGMENT_DIR)/database \
|
||||
$(MAGIC_FRAGMENT_DIR)/diamond \
|
||||
$(MAGIC_FRAGMENT_DIR)/diff \
|
||||
$(MAGIC_FRAGMENT_DIR)/digital \
|
||||
$(MAGIC_FRAGMENT_DIR)/dolby \
|
||||
$(MAGIC_FRAGMENT_DIR)/dump \
|
||||
$(MAGIC_FRAGMENT_DIR)/dyadic \
|
||||
$(MAGIC_FRAGMENT_DIR)/editors \
|
||||
$(MAGIC_FRAGMENT_DIR)/efi \
|
||||
$(MAGIC_FRAGMENT_DIR)/elf \
|
||||
$(MAGIC_FRAGMENT_DIR)/encore \
|
||||
$(MAGIC_FRAGMENT_DIR)/epoc \
|
||||
$(MAGIC_FRAGMENT_DIR)/erlang \
|
||||
$(MAGIC_FRAGMENT_DIR)/esri \
|
||||
$(MAGIC_FRAGMENT_DIR)/fcs \
|
||||
$(MAGIC_FRAGMENT_DIR)/filesystems \
|
||||
$(MAGIC_FRAGMENT_DIR)/flash \
|
||||
$(MAGIC_FRAGMENT_DIR)/fonts \
|
||||
$(MAGIC_FRAGMENT_DIR)/fortran \
|
||||
$(MAGIC_FRAGMENT_DIR)/frame \
|
||||
$(MAGIC_FRAGMENT_DIR)/freebsd \
|
||||
$(MAGIC_FRAGMENT_DIR)/fsav \
|
||||
$(MAGIC_FRAGMENT_DIR)/games \
|
||||
$(MAGIC_FRAGMENT_DIR)/gcc \
|
||||
$(MAGIC_FRAGMENT_DIR)/geos \
|
||||
$(MAGIC_FRAGMENT_DIR)/gimp \
|
||||
$(MAGIC_FRAGMENT_DIR)/gnome-keyring \
|
||||
$(MAGIC_FRAGMENT_DIR)/gnu \
|
||||
$(MAGIC_FRAGMENT_DIR)/gnumeric \
|
||||
$(MAGIC_FRAGMENT_DIR)/grace \
|
||||
$(MAGIC_FRAGMENT_DIR)/graphviz \
|
||||
$(MAGIC_FRAGMENT_DIR)/gringotts \
|
||||
$(MAGIC_FRAGMENT_DIR)/hitachi-sh \
|
||||
$(MAGIC_FRAGMENT_DIR)/hp \
|
||||
$(MAGIC_FRAGMENT_DIR)/human68k \
|
||||
$(MAGIC_FRAGMENT_DIR)/ibm370 \
|
||||
$(MAGIC_FRAGMENT_DIR)/ibm6000 \
|
||||
$(MAGIC_FRAGMENT_DIR)/iff \
|
||||
$(MAGIC_FRAGMENT_DIR)/images \
|
||||
$(MAGIC_FRAGMENT_DIR)/inform \
|
||||
$(MAGIC_FRAGMENT_DIR)/intel \
|
||||
$(MAGIC_FRAGMENT_DIR)/interleaf \
|
||||
$(MAGIC_FRAGMENT_DIR)/island \
|
||||
$(MAGIC_FRAGMENT_DIR)/ispell \
|
||||
$(MAGIC_FRAGMENT_DIR)/java \
|
||||
$(MAGIC_FRAGMENT_DIR)/jpeg \
|
||||
$(MAGIC_FRAGMENT_DIR)/karma \
|
||||
$(MAGIC_FRAGMENT_DIR)/kde \
|
||||
$(MAGIC_FRAGMENT_DIR)/kml \
|
||||
$(MAGIC_FRAGMENT_DIR)/lecter \
|
||||
$(MAGIC_FRAGMENT_DIR)/lex \
|
||||
$(MAGIC_FRAGMENT_DIR)/lif \
|
||||
$(MAGIC_FRAGMENT_DIR)/linux \
|
||||
$(MAGIC_FRAGMENT_DIR)/lisp \
|
||||
$(MAGIC_FRAGMENT_DIR)/llvm \
|
||||
$(MAGIC_FRAGMENT_DIR)/lua \
|
||||
$(MAGIC_FRAGMENT_DIR)/luks \
|
||||
$(MAGIC_FRAGMENT_DIR)/mach \
|
||||
$(MAGIC_FRAGMENT_DIR)/macintosh \
|
||||
$(MAGIC_FRAGMENT_DIR)/magic \
|
||||
$(MAGIC_FRAGMENT_DIR)/mail.news \
|
||||
$(MAGIC_FRAGMENT_DIR)/maple \
|
||||
$(MAGIC_FRAGMENT_DIR)/mathcad \
|
||||
$(MAGIC_FRAGMENT_DIR)/mathematica \
|
||||
$(MAGIC_FRAGMENT_DIR)/matroska \
|
||||
$(MAGIC_FRAGMENT_DIR)/mcrypt \
|
||||
$(MAGIC_FRAGMENT_DIR)/mercurial \
|
||||
$(MAGIC_FRAGMENT_DIR)/mime \
|
||||
$(MAGIC_FRAGMENT_DIR)/mips \
|
||||
$(MAGIC_FRAGMENT_DIR)/mirage \
|
||||
$(MAGIC_FRAGMENT_DIR)/misctools \
|
||||
$(MAGIC_FRAGMENT_DIR)/mkid \
|
||||
$(MAGIC_FRAGMENT_DIR)/mlssa \
|
||||
$(MAGIC_FRAGMENT_DIR)/mmdf \
|
||||
$(MAGIC_FRAGMENT_DIR)/modem \
|
||||
$(MAGIC_FRAGMENT_DIR)/motorola \
|
||||
$(MAGIC_FRAGMENT_DIR)/mozilla \
|
||||
$(MAGIC_FRAGMENT_DIR)/msdos \
|
||||
$(MAGIC_FRAGMENT_DIR)/msvc \
|
||||
$(MAGIC_FRAGMENT_DIR)/mup \
|
||||
$(MAGIC_FRAGMENT_DIR)/natinst \
|
||||
$(MAGIC_FRAGMENT_DIR)/ncr \
|
||||
$(MAGIC_FRAGMENT_DIR)/netbsd \
|
||||
$(MAGIC_FRAGMENT_DIR)/netscape \
|
||||
$(MAGIC_FRAGMENT_DIR)/netware \
|
||||
$(MAGIC_FRAGMENT_DIR)/news \
|
||||
$(MAGIC_FRAGMENT_DIR)/nitpicker \
|
||||
$(MAGIC_FRAGMENT_DIR)/ocaml \
|
||||
$(MAGIC_FRAGMENT_DIR)/octave \
|
||||
$(MAGIC_FRAGMENT_DIR)/ole2compounddocs \
|
||||
$(MAGIC_FRAGMENT_DIR)/olf \
|
||||
$(MAGIC_FRAGMENT_DIR)/os2 \
|
||||
$(MAGIC_FRAGMENT_DIR)/os400 \
|
||||
$(MAGIC_FRAGMENT_DIR)/os9 \
|
||||
$(MAGIC_FRAGMENT_DIR)/osf1 \
|
||||
$(MAGIC_FRAGMENT_DIR)/palm \
|
||||
$(MAGIC_FRAGMENT_DIR)/parix \
|
||||
$(MAGIC_FRAGMENT_DIR)/pbm \
|
||||
$(MAGIC_FRAGMENT_DIR)/pdf \
|
||||
$(MAGIC_FRAGMENT_DIR)/pdp \
|
||||
$(MAGIC_FRAGMENT_DIR)/perl \
|
||||
$(MAGIC_FRAGMENT_DIR)/pgp \
|
||||
$(MAGIC_FRAGMENT_DIR)/pkgadd \
|
||||
$(MAGIC_FRAGMENT_DIR)/plan9 \
|
||||
$(MAGIC_FRAGMENT_DIR)/plus5 \
|
||||
$(MAGIC_FRAGMENT_DIR)/printer \
|
||||
$(MAGIC_FRAGMENT_DIR)/project \
|
||||
$(MAGIC_FRAGMENT_DIR)/psdbms \
|
||||
$(MAGIC_FRAGMENT_DIR)/psion \
|
||||
$(MAGIC_FRAGMENT_DIR)/pulsar \
|
||||
$(MAGIC_FRAGMENT_DIR)/pyramid \
|
||||
$(MAGIC_FRAGMENT_DIR)/python \
|
||||
$(MAGIC_FRAGMENT_DIR)/revision \
|
||||
$(MAGIC_FRAGMENT_DIR)/riff \
|
||||
$(MAGIC_FRAGMENT_DIR)/rpm \
|
||||
$(MAGIC_FRAGMENT_DIR)/rtf \
|
||||
$(MAGIC_FRAGMENT_DIR)/ruby \
|
||||
$(MAGIC_FRAGMENT_DIR)/sc \
|
||||
$(MAGIC_FRAGMENT_DIR)/sccs \
|
||||
$(MAGIC_FRAGMENT_DIR)/scientific \
|
||||
$(MAGIC_FRAGMENT_DIR)/securitycerts \
|
||||
$(MAGIC_FRAGMENT_DIR)/sendmail \
|
||||
$(MAGIC_FRAGMENT_DIR)/sequent \
|
||||
$(MAGIC_FRAGMENT_DIR)/sgi \
|
||||
$(MAGIC_FRAGMENT_DIR)/sgml \
|
||||
$(MAGIC_FRAGMENT_DIR)/sharc \
|
||||
$(MAGIC_FRAGMENT_DIR)/sinclair \
|
||||
$(MAGIC_FRAGMENT_DIR)/sketch \
|
||||
$(MAGIC_FRAGMENT_DIR)/smalltalk \
|
||||
$(MAGIC_FRAGMENT_DIR)/sniffer \
|
||||
$(MAGIC_FRAGMENT_DIR)/softquad \
|
||||
$(MAGIC_FRAGMENT_DIR)/spec \
|
||||
$(MAGIC_FRAGMENT_DIR)/spectrum \
|
||||
$(MAGIC_FRAGMENT_DIR)/sql \
|
||||
$(MAGIC_FRAGMENT_DIR)/sun \
|
||||
$(MAGIC_FRAGMENT_DIR)/sysex \
|
||||
$(MAGIC_FRAGMENT_DIR)/teapot \
|
||||
$(MAGIC_FRAGMENT_DIR)/terminfo \
|
||||
$(MAGIC_FRAGMENT_DIR)/tex \
|
||||
$(MAGIC_FRAGMENT_DIR)/tgif \
|
||||
$(MAGIC_FRAGMENT_DIR)/ti-8x \
|
||||
$(MAGIC_FRAGMENT_DIR)/timezone \
|
||||
$(MAGIC_FRAGMENT_DIR)/troff \
|
||||
$(MAGIC_FRAGMENT_DIR)/tuxedo \
|
||||
$(MAGIC_FRAGMENT_DIR)/typeset \
|
||||
$(MAGIC_FRAGMENT_DIR)/unicode \
|
||||
$(MAGIC_FRAGMENT_DIR)/unknown \
|
||||
$(MAGIC_FRAGMENT_DIR)/uuencode \
|
||||
$(MAGIC_FRAGMENT_DIR)/varied.out \
|
||||
$(MAGIC_FRAGMENT_DIR)/varied.script \
|
||||
$(MAGIC_FRAGMENT_DIR)/vax \
|
||||
$(MAGIC_FRAGMENT_DIR)/vicar \
|
||||
$(MAGIC_FRAGMENT_DIR)/virtutech \
|
||||
$(MAGIC_FRAGMENT_DIR)/visx \
|
||||
$(MAGIC_FRAGMENT_DIR)/vms \
|
||||
$(MAGIC_FRAGMENT_DIR)/vmware \
|
||||
$(MAGIC_FRAGMENT_DIR)/vorbis \
|
||||
$(MAGIC_FRAGMENT_DIR)/vxl \
|
||||
$(MAGIC_FRAGMENT_DIR)/warc \
|
||||
$(MAGIC_FRAGMENT_DIR)/weak \
|
||||
$(MAGIC_FRAGMENT_DIR)/windows \
|
||||
$(MAGIC_FRAGMENT_DIR)/wireless \
|
||||
$(MAGIC_FRAGMENT_DIR)/wordprocessors \
|
||||
$(MAGIC_FRAGMENT_DIR)/xdelta \
|
||||
$(MAGIC_FRAGMENT_DIR)/xenix \
|
||||
$(MAGIC_FRAGMENT_DIR)/xilinx \
|
||||
$(MAGIC_FRAGMENT_DIR)/xo65 \
|
||||
$(MAGIC_FRAGMENT_DIR)/xwindows \
|
||||
$(MAGIC_FRAGMENT_DIR)/zilog \
|
||||
$(MAGIC_FRAGMENT_DIR)/zyxel
|
||||
|
||||
MAGIC = magic.mgc
|
||||
CLEANFILES = ${MAGIC}
|
||||
|
||||
# FIXME: Build file natively as well so that it can be used to compile
|
||||
# the target's magic file
|
||||
if IS_CROSS_COMPILE
|
||||
FILE_COMPILE = file
|
||||
FILE_COMPILE_DEP =
|
||||
else
|
||||
FILE_COMPILE = $(top_builddir)/src/file
|
||||
FILE_COMPILE_DEP = $(FILE_COMPILE)
|
||||
endif
|
||||
|
||||
${MAGIC}: $(EXTRA_DIST) $(FILE_COMPILE_DEP)
|
||||
$(FILE_COMPILE) -C -m $(MAGIC_FRAGMENT_DIR)
|
||||
@mv $(MAGIC_FRAGMENT_BASE).mgc $@
|
||||
SUBDIRS = src magic tests doc python
|
||||
+554
-342
File diff suppressed because it is too large.
Load diff
+64
-64
@@ -1,23 +1,38 @@
|
||||
** README for file(1) Command **
|
||||
@(#) $File: README,v 1.42 2009/02/14 15:16:24 christos Exp $
|
||||
## README for file(1) Command ##
|
||||
|
||||
@(#) $File: README,v 1.49 2015/01/02 20:23:04 christos Exp $
|
||||
|
||||
Mailing List: [email protected]
|
||||
Mailing List archives: http://mx.gw.com/pipermail/file/
|
||||
Bug tracker: http://bugs.gw.com/
|
||||
E-mail: [email protected]
|
||||
Mailing List: [email protected]
|
||||
|
||||
[](https://travis-ci.org/file/file)
|
||||
|
||||
Phone: Do not even think of telephoning me about this program. Send cash first!
|
||||
|
||||
This is Release 5.x of Ian Darwin's (copyright but distributable)
|
||||
file(1) command. This version is the standard "file" command for Linux,
|
||||
file(1) command, an implementation of the Unix File(1) command.
|
||||
It knows the 'magic number' of several thousands of file types.
|
||||
This version is the standard "file" command for Linux,
|
||||
*BSD, and other systems. (See "patchlevel.h" for the exact release number).
|
||||
|
||||
The major changes for 5.x are CDF file parsing, indirect magic, and
|
||||
overhaul in mime and ascii encoding handling.
|
||||
You can download the latest version of the original sources for file from:
|
||||
|
||||
ftp://ftp.astron.com/pub/file/
|
||||
|
||||
A public read-only git repository of the same sources is available at:
|
||||
|
||||
https://github.com/file/file
|
||||
|
||||
The major changes for 5.x are CDF file parsing, indirect magic, name/use
|
||||
(recursion) and overhaul in mime and ascii encoding handling.
|
||||
|
||||
The major feature of 4.x is the refactoring of the code into a library,
|
||||
and the re-write of the file command in terms of that library. The library
|
||||
itself, libmagic can be used by 3rd party programs that wish to identify
|
||||
file types without having to fork() and exec() file. The prime contributor
|
||||
for 4.0 was M\xe5ns Rullg\xe5rd.
|
||||
for 4.0 was Mans Rullgard.
|
||||
|
||||
UNIX is a trademark of UNIX System Laboratories.
|
||||
|
||||
@@ -49,38 +64,50 @@ magic numbers assigned to all sorts of data files that
|
||||
are in reasonable circulation. Send your magic numbers,
|
||||
in magic(5) format please, to the maintainer, Christos Zoulas.
|
||||
|
||||
COPYING - read this first.
|
||||
README - read this second (you are currently reading this file).
|
||||
COPYING - read this first.
|
||||
README - read this second (you are currently reading this file).
|
||||
INSTALL - read on how to install
|
||||
|
||||
src/apprentice.c - parses /etc/magic to learn magic
|
||||
src/apptype.c - used for OS/2 specific application type magic
|
||||
src/asprintf.c - replacement for OS's that don't have it.
|
||||
src/ascmagic.c - third & last set of tests, based on hardwired assumptions.
|
||||
src/cdf.c - parser for Microsoft Compound Document Files
|
||||
src/cdf_time.c - time converter for CDF.
|
||||
src/compress.c - handles decompressing files to look inside.
|
||||
src/encoding.c - handles unicode encodings
|
||||
src/file.c - the main program
|
||||
src/file.h - header file
|
||||
src/fsmagic.c - first set of tests the program runs, based on filesystem info
|
||||
src/funcs.c - utilility functions
|
||||
src/getopt_long.c - used for OS/2 specific application type magic
|
||||
src/is_tar.c, tar.h - knows about tarchives (courtesy John Gilmore).
|
||||
src/names.h - header file for ascmagic.c
|
||||
src/magic.c - the libmagic api
|
||||
src/print.c - print results, errors, warnings.
|
||||
src/readcdf.c - CDF wrapper.
|
||||
src/readelf.[ch] - Stand-alone elf parsing code.
|
||||
src/softmagic.c - 2nd set of tests, based on /etc/magic
|
||||
src/strlcat.c - used for OS/2 specific application type magic
|
||||
src/strlcpy.c - used for OS/2 specific application type magic
|
||||
src/vasprintf.c - used for OS/2 specific application type magic
|
||||
doc/file.1 - man page for the command
|
||||
doc/magic.4 - man page for the magic file, courtesy Guy Harris.
|
||||
src/apprentice.c - parses /etc/magic to learn magic
|
||||
src/asctime_r.c - replacement for OS's that don't have it.
|
||||
src/apptype.c - used for OS/2 specific application type magic
|
||||
src/asprintf.c - replacement for OS's that don't have it.
|
||||
src/ascmagic.c - third & last set of tests, based on hardwired assumptions.
|
||||
src/asctime_r.c - replacement for OS's that don't have it.
|
||||
src/asprintf.c - replacement for OS's that don't have it.
|
||||
src/cdf.[ch] - parser for Microsoft Compound Document Files
|
||||
src/cdf_time.c - time converter for CDF.
|
||||
src/compress.c - handles decompressing files to look inside.
|
||||
src/ctime_r.c - replacement for OS's that don't have it.
|
||||
src/elfclass.h - common code for elf 32/64.
|
||||
src/encoding.c - handles unicode encodings
|
||||
src/file.c - the main program
|
||||
src/file.h - header file
|
||||
src/file_opts.h - list of options
|
||||
src/fmtcheck.c - replacement for OS's that don't have it.
|
||||
src/fsmagic.c - first set of tests the program runs, based on filesystem info
|
||||
src/funcs.c - utilility functions
|
||||
src/getline.c - replacement for OS's that don't have it.
|
||||
src/getopt_long.c - replacement for OS's that don't have it.
|
||||
src/is_tar.c, tar.h - knows about tarchives (courtesy John Gilmore).
|
||||
src/names.h - header file for ascmagic.c
|
||||
src/magic.h.in - source file for magic.h
|
||||
src/magic.c - the libmagic api
|
||||
src/pread.c - replacement for OS's that don't have it.
|
||||
src/print.c - print results, errors, warnings.
|
||||
src/readcdf.c - CDF wrapper.
|
||||
src/readelf.[ch] - Stand-alone elf parsing code.
|
||||
src/softmagic.c - 2nd set of tests, based on /etc/magic
|
||||
src/mygetopt.h - replacement for OS's that don't have it.
|
||||
src/strcasestr.c - replacement for OS's that don't have it.
|
||||
src/strlcat.c - replacement for OS's that don't have it.
|
||||
src/strlcpy.c - replacement for OS's that don't have it.
|
||||
src/tar.h - tar file definitions
|
||||
src/vasprintf.c - for systems that don't have it.
|
||||
doc/file.man - man page for the command
|
||||
doc/magic.man - man page for the magic file, courtesy Guy Harris.
|
||||
Install as magic.4 on USG and magic.5 on V7 or Berkeley; cf Makefile.
|
||||
Magdir - directory of /etc/magic pieces
|
||||
|
||||
Magdir - directory of /etc/magic pieces
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
If you submit a new magic entry please make sure you read the following
|
||||
@@ -102,33 +129,6 @@ guidelines:
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
You can download the latest version of file from:
|
||||
|
||||
ftp://ftp.astron.com/pub/file/
|
||||
|
||||
If your gzip sometimes fails to decompress things complaining about a short
|
||||
file, apply this patch [which is going to be in the next version of gzip]:
|
||||
*** - Tue Oct 29 02:06:35 1996
|
||||
--- util.c Sun Jul 21 21:51:38 1996
|
||||
*** 106,111 ****
|
||||
--- 108,114 ----
|
||||
|
||||
if (insize == 0) {
|
||||
if (eof_ok) return EOF;
|
||||
+ flush_window();
|
||||
read_error();
|
||||
}
|
||||
bytes_in += (ulg)insize;
|
||||
|
||||
Parts of this software were developed at SoftQuad Inc., developers
|
||||
of SGML/HTML/XML publishing software, in Toronto, Canada.
|
||||
SoftQuad was swallowed up by Corel in 2002
|
||||
and does not exist any longer.
|
||||
|
||||
From: Kees Zeelenberg
|
||||
|
||||
An MS-Windows (Win32) port of File-4.17 is available from
|
||||
http://gnuwin32.sourceforge.net/
|
||||
|
||||
File is an implementation of the Unix File(1) command.
|
||||
It knows the 'magic number' of several thousands of file types.
|
||||
SoftQuad was swallowed up by Corel in 2002 and does not exist any longer.
|
||||
+15
-11
@@ -1,15 +1,19 @@
|
||||
Fix output so that tests for MIME and APPLE flags are not needed all
|
||||
over the place, and actual output is only done in one place. This
|
||||
needs a design. Suggestion: push possible outputs on to a list, then
|
||||
pick the last-pushed (most specific, one hopes) value at the end, or
|
||||
use a default if the list is empty.
|
||||
Most TODOs live in the TODO section of doc/file.man (i.e. file(1)).
|
||||
They are more visible there, so please add any further TODOs to that
|
||||
file, not here. More speculative material can live here.
|
||||
|
||||
Continue to squash all magic bugs. See Debian BTS for a good source.
|
||||
(This change was made when Reuben Thomas noticed that all the bugs
|
||||
listed in the BUGS section of the man page had been fixed!)
|
||||
|
||||
Store arbitrarily long strings, for example for %s patterns, so that
|
||||
they can be printed out. Fixes Debian bug #271672.
|
||||
---
|
||||
|
||||
Add syntax for other sorts of counted string (Debian bug #466032). Use
|
||||
to fix bug #283760.
|
||||
It would be nice to simplify file considerably. For example,
|
||||
reimplement the apprentice and non-pattern magic methods in Python,
|
||||
and compile the magic patterns to a giant regex (or something similar;
|
||||
maybe using Ragel (http://www.complang.org/ragel/)) so that only a
|
||||
small amount of C is needed (because fast execution is typically only
|
||||
required for soft magic, not the more detailed information given by
|
||||
hard-wired routines). In this regard, note that hplip, which is
|
||||
BSD-licensed, has a magic reimplementation in Python.
|
||||
|
||||
Add syntax for relative offsets after current level (Debian bug #466037).
|
||||
Read the kerberos magic entry for more ideas.
|
||||
@@ -10,15 +10,16 @@ if test "$ac_cv_struct_tm_zone" = yes; then
|
||||
AC_DEFINE(HAVE_TM_ZONE,1,[HAVE_TM_ZONE])
|
||||
fi
|
||||
|
||||
# On SGI, apparently tzname is a #define, but that's ok, AC_CHECK_DECL will
|
||||
# consider it declared and we won't give our own extern.
|
||||
AC_CHECK_DECLS([tzname], , , [#include <time.h>])
|
||||
AC_CACHE_CHECK(for tzname, ac_cv_var_tzname,
|
||||
[AC_TRY_LINK(
|
||||
changequote(<<, >>)dnl
|
||||
<<#include <time.h>
|
||||
#ifndef tzname /* For SGI. */
|
||||
extern char *tzname[]; /* RS6000 and others reject char **tzname. */
|
||||
#endif>>,
|
||||
changequote([, ])dnl
|
||||
[atoi(*tzname);], ac_cv_var_tzname=yes, ac_cv_var_tzname=no)])
|
||||
[#include <time.h>
|
||||
#if !HAVE_DECL_TZNAME
|
||||
extern char *tzname[];
|
||||
#endif],
|
||||
[return tzname[0][0];], [ac_cv_var_tzname=yes], [ac_cv_var_tzname=no])])
|
||||
if test $ac_cv_var_tzname = yes; then
|
||||
AC_DEFINE(HAVE_TZNAME,1,[HAVE_TZNAME])
|
||||
fi
|
||||
@@ -31,11 +32,13 @@ if test "$ac_cv_struct_tm_isdst" = yes; then
|
||||
AC_DEFINE(HAVE_TM_ISDST,1,[HAVE_TM_ISDST])
|
||||
fi
|
||||
|
||||
|
||||
AC_CHECK_DECLS([daylight], , , [#include <time.h>])
|
||||
AC_CACHE_CHECK(for daylight, ac_cv_var_daylight,
|
||||
[AC_TRY_LINK(
|
||||
changequote(<<, >>)dnl
|
||||
<<#include <time.h>
|
||||
#ifndef daylight /* In case IRIX #defines this, too */
|
||||
#if !HAVE_DECL_DAYLIGHT
|
||||
extern int daylight;
|
||||
#endif>>,
|
||||
changequote([, ])dnl
|
||||
|
||||
Vendored
+662
-6974
File diff suppressed because it is too large.
Load diff
+225
-20
@@ -1,9 +1,9 @@
|
||||
#! /bin/sh
|
||||
# Wrapper for compilers which do not understand `-c -o'.
|
||||
# Wrapper for compilers which do not understand '-c -o'.
|
||||
|
||||
scriptversion=2005-05-14.22
|
||||
scriptversion=2012-10-14.11; # UTC
|
||||
|
||||
# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||
# Written by Tom Tromey <[email protected]>.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
@@ -17,8 +17,7 @@ scriptversion=2005-05-14.22
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
@@ -29,21 +28,224 @@ scriptversion=2005-05-14.22
|
||||
# bugs to <[email protected]> or send patches to
|
||||
# <[email protected]>.
|
||||
|
||||
nl='
|
||||
'
|
||||
|
||||
# We need space, tab and new line, in precisely that order. Quoting is
|
||||
# there to prevent tools from complaining about whitespace usage.
|
||||
IFS=" "" $nl"
|
||||
|
||||
file_conv=
|
||||
|
||||
# func_file_conv build_file lazy
|
||||
# Convert a $build file to $host form and store it in $file
|
||||
# Currently only supports Windows hosts. If the determined conversion
|
||||
# type is listed in (the comma separated) LAZY, no conversion will
|
||||
# take place.
|
||||
func_file_conv ()
|
||||
{
|
||||
file=$1
|
||||
case $file in
|
||||
/ | /[!/]*) # absolute file, and not a UNC file
|
||||
if test -z "$file_conv"; then
|
||||
# lazily determine how to convert abs files
|
||||
case `uname -s` in
|
||||
MINGW*)
|
||||
file_conv=mingw
|
||||
;;
|
||||
CYGWIN*)
|
||||
file_conv=cygwin
|
||||
;;
|
||||
*)
|
||||
file_conv=wine
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
case $file_conv/,$2, in
|
||||
*,$file_conv,*)
|
||||
;;
|
||||
mingw/*)
|
||||
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
|
||||
;;
|
||||
cygwin/*)
|
||||
file=`cygpath -m "$file" || echo "$file"`
|
||||
;;
|
||||
wine/*)
|
||||
file=`winepath -w "$file" || echo "$file"`
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# func_cl_dashL linkdir
|
||||
# Make cl look for libraries in LINKDIR
|
||||
func_cl_dashL ()
|
||||
{
|
||||
func_file_conv "$1"
|
||||
if test -z "$lib_path"; then
|
||||
lib_path=$file
|
||||
else
|
||||
lib_path="$lib_path;$file"
|
||||
fi
|
||||
linker_opts="$linker_opts -LIBPATH:$file"
|
||||
}
|
||||
|
||||
# func_cl_dashl library
|
||||
# Do a library search-path lookup for cl
|
||||
func_cl_dashl ()
|
||||
{
|
||||
lib=$1
|
||||
found=no
|
||||
save_IFS=$IFS
|
||||
IFS=';'
|
||||
for dir in $lib_path $LIB
|
||||
do
|
||||
IFS=$save_IFS
|
||||
if $shared && test -f "$dir/$lib.dll.lib"; then
|
||||
found=yes
|
||||
lib=$dir/$lib.dll.lib
|
||||
break
|
||||
fi
|
||||
if test -f "$dir/$lib.lib"; then
|
||||
found=yes
|
||||
lib=$dir/$lib.lib
|
||||
break
|
||||
fi
|
||||
if test -f "$dir/lib$lib.a"; then
|
||||
found=yes
|
||||
lib=$dir/lib$lib.a
|
||||
break
|
||||
fi
|
||||
done
|
||||
IFS=$save_IFS
|
||||
|
||||
if test "$found" != yes; then
|
||||
lib=$lib.lib
|
||||
fi
|
||||
}
|
||||
|
||||
# func_cl_wrapper cl arg...
|
||||
# Adjust compile command to suit cl
|
||||
func_cl_wrapper ()
|
||||
{
|
||||
# Assume a capable shell
|
||||
lib_path=
|
||||
shared=:
|
||||
linker_opts=
|
||||
for arg
|
||||
do
|
||||
if test -n "$eat"; then
|
||||
eat=
|
||||
else
|
||||
case $1 in
|
||||
-o)
|
||||
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||
eat=1
|
||||
case $2 in
|
||||
*.o | *.[oO][bB][jJ])
|
||||
func_file_conv "$2"
|
||||
set x "$@" -Fo"$file"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
func_file_conv "$2"
|
||||
set x "$@" -Fe"$file"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
-I)
|
||||
eat=1
|
||||
func_file_conv "$2" mingw
|
||||
set x "$@" -I"$file"
|
||||
shift
|
||||
;;
|
||||
-I*)
|
||||
func_file_conv "${1#-I}" mingw
|
||||
set x "$@" -I"$file"
|
||||
shift
|
||||
;;
|
||||
-l)
|
||||
eat=1
|
||||
func_cl_dashl "$2"
|
||||
set x "$@" "$lib"
|
||||
shift
|
||||
;;
|
||||
-l*)
|
||||
func_cl_dashl "${1#-l}"
|
||||
set x "$@" "$lib"
|
||||
shift
|
||||
;;
|
||||
-L)
|
||||
eat=1
|
||||
func_cl_dashL "$2"
|
||||
;;
|
||||
-L*)
|
||||
func_cl_dashL "${1#-L}"
|
||||
;;
|
||||
-static)
|
||||
shared=false
|
||||
;;
|
||||
-Wl,*)
|
||||
arg=${1#-Wl,}
|
||||
save_ifs="$IFS"; IFS=','
|
||||
for flag in $arg; do
|
||||
IFS="$save_ifs"
|
||||
linker_opts="$linker_opts $flag"
|
||||
done
|
||||
IFS="$save_ifs"
|
||||
;;
|
||||
-Xlinker)
|
||||
eat=1
|
||||
linker_opts="$linker_opts $2"
|
||||
;;
|
||||
-*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
|
||||
func_file_conv "$1"
|
||||
set x "$@" -Tp"$file"
|
||||
shift
|
||||
;;
|
||||
*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
|
||||
func_file_conv "$1" mingw
|
||||
set x "$@" "$file"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
shift
|
||||
done
|
||||
if test -n "$linker_opts"; then
|
||||
linker_opts="-link$linker_opts"
|
||||
fi
|
||||
exec "$@" $linker_opts
|
||||
exit 1
|
||||
}
|
||||
|
||||
eat=
|
||||
|
||||
case $1 in
|
||||
'')
|
||||
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
|
||||
echo "$0: No command. Try '$0 --help' for more information." 1>&2
|
||||
exit 1;
|
||||
;;
|
||||
-h | --h*)
|
||||
cat <<\EOF
|
||||
Usage: compile [--help] [--version] PROGRAM [ARGS]
|
||||
|
||||
Wrapper for compilers which do not understand `-c -o'.
|
||||
Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
|
||||
Wrapper for compilers which do not understand '-c -o'.
|
||||
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
|
||||
arguments, and rename the output as expected.
|
||||
|
||||
If you are trying to build a whole package this is not the
|
||||
right script to run: please start by reading the file `INSTALL'.
|
||||
right script to run: please start by reading the file 'INSTALL'.
|
||||
|
||||
Report bugs to <[email protected]>.
|
||||
EOF
|
||||
@@ -53,11 +255,13 @@ EOF
|
||||
echo "compile $scriptversion"
|
||||
exit $?
|
||||
;;
|
||||
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
|
||||
func_cl_wrapper "$@" # Doesn't return...
|
||||
;;
|
||||
esac
|
||||
|
||||
ofile=
|
||||
cfile=
|
||||
eat=
|
||||
|
||||
for arg
|
||||
do
|
||||
@@ -66,8 +270,8 @@ do
|
||||
else
|
||||
case $1 in
|
||||
-o)
|
||||
# configure might choose to run compile as `compile cc -o foo foo.c'.
|
||||
# So we strip `-o arg' only if arg is an object.
|
||||
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||
# So we strip '-o arg' only if arg is an object.
|
||||
eat=1
|
||||
case $2 in
|
||||
*.o | *.obj)
|
||||
@@ -94,22 +298,22 @@ do
|
||||
done
|
||||
|
||||
if test -z "$ofile" || test -z "$cfile"; then
|
||||
# If no `-o' option was seen then we might have been invoked from a
|
||||
# If no '-o' option was seen then we might have been invoked from a
|
||||
# pattern rule where we don't need one. That is ok -- this is a
|
||||
# normal compilation that the losing compiler can handle. If no
|
||||
# `.c' file was seen then we are probably linking. That is also
|
||||
# '.c' file was seen then we are probably linking. That is also
|
||||
# ok.
|
||||
exec "$@"
|
||||
fi
|
||||
|
||||
# Name of file we expect compiler to create.
|
||||
cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
|
||||
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
|
||||
|
||||
# Create the lock directory.
|
||||
# Note: use `[/.-]' here to ensure that we don't use the same name
|
||||
# Note: use '[/\\:.-]' here to ensure that we don't use the same name
|
||||
# that we are using for the .o file. Also, base the name on the expected
|
||||
# object file name, since that is what matters with a parallel build.
|
||||
lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d
|
||||
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
|
||||
while true; do
|
||||
if mkdir "$lockdir" >/dev/null 2>&1; then
|
||||
break
|
||||
@@ -124,9 +328,9 @@ trap "rmdir '$lockdir'; exit 1" 1 2 15
|
||||
ret=$?
|
||||
|
||||
if test -f "$cofile"; then
|
||||
mv "$cofile" "$ofile"
|
||||
test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
|
||||
elif test -f "${cofile}bj"; then
|
||||
mv "${cofile}bj" "$ofile"
|
||||
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
|
||||
fi
|
||||
|
||||
rmdir "$lockdir"
|
||||
@@ -138,5 +342,6 @@ exit $ret
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-end: "$"
|
||||
# time-stamp-time-zone: "UTC"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
||||
+1530
File diff suppressed because it is too large.
Load diff
+193
-58
@@ -1,17 +1,34 @@
|
||||
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||
|
||||
/* Define if building universal (internal helper macro) */
|
||||
#undef AC_APPLE_UNIVERSAL_BUILD
|
||||
|
||||
/* Define in built-in ELF support is used */
|
||||
#undef BUILTIN_ELF
|
||||
|
||||
/* Define for ELF core file support */
|
||||
#undef ELFCORE
|
||||
|
||||
/* Define to 1 if you have the `asctime_r' function. */
|
||||
#undef HAVE_ASCTIME_R
|
||||
|
||||
/* Define to 1 if you have the `asprintf' function. */
|
||||
#undef HAVE_ASPRINTF
|
||||
|
||||
/* Define to 1 if you have the `ctime_r' function. */
|
||||
#undef HAVE_CTIME_R
|
||||
|
||||
/* HAVE_DAYLIGHT */
|
||||
#undef HAVE_DAYLIGHT
|
||||
|
||||
/* Define to 1 if you have the declaration of `daylight', and to 0 if you
|
||||
don't. */
|
||||
#undef HAVE_DECL_DAYLIGHT
|
||||
|
||||
/* Define to 1 if you have the declaration of `tzname', and to 0 if you don't.
|
||||
*/
|
||||
#undef HAVE_DECL_TZNAME
|
||||
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
#undef HAVE_DLFCN_H
|
||||
|
||||
@@ -21,24 +38,39 @@
|
||||
/* Define to 1 if you have the <fcntl.h> header file. */
|
||||
#undef HAVE_FCNTL_H
|
||||
|
||||
/* Define to 1 if you have the `fmtcheck' function. */
|
||||
#undef HAVE_FMTCHECK
|
||||
|
||||
/* Define to 1 if you have the `fork' function. */
|
||||
#undef HAVE_FORK
|
||||
|
||||
/* Define to 1 if you have the `freelocale' function. */
|
||||
#undef HAVE_FREELOCALE
|
||||
|
||||
/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
|
||||
#undef HAVE_FSEEKO
|
||||
|
||||
/* Define to 1 if you have the `getline' function. */
|
||||
#undef HAVE_GETLINE
|
||||
|
||||
/* Define to 1 if you have the <getopt.h> header file. */
|
||||
#undef HAVE_GETOPT_H
|
||||
|
||||
/* Define to 1 if you have the `getopt_long' function. */
|
||||
#undef HAVE_GETOPT_LONG
|
||||
|
||||
/* Define to 1 if the system has the type `int32_t'. */
|
||||
#undef HAVE_INT32_T
|
||||
/* Define to 1 if you have the `getpagesize' function. */
|
||||
#undef HAVE_GETPAGESIZE
|
||||
|
||||
/* Define to 1 if the system has the type `int64_t'. */
|
||||
#undef HAVE_INT64_T
|
||||
/* Define to 1 if the system has the type `intptr_t'. */
|
||||
#undef HAVE_INTPTR_T
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
/* Define to 1 if you have the `gnurx' library (-lgnurx). */
|
||||
#undef HAVE_LIBGNURX
|
||||
|
||||
/* Define to 1 if you have the `z' library (-lz). */
|
||||
#undef HAVE_LIBZ
|
||||
|
||||
@@ -48,7 +80,7 @@
|
||||
/* Define to 1 if you have the <locale.h> header file. */
|
||||
#undef HAVE_LOCALE_H
|
||||
|
||||
/* Define to 1 if you have the `mbrtowc' function. */
|
||||
/* Define to 1 if mbrtowc and mbstate_t are properly declared. */
|
||||
#undef HAVE_MBRTOWC
|
||||
|
||||
/* Define to 1 if <wchar.h> declares mbstate_t. */
|
||||
@@ -57,18 +89,36 @@
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#undef HAVE_MEMORY_H
|
||||
|
||||
/* Define to 1 if you have the `mkostemp' function. */
|
||||
#undef HAVE_MKOSTEMP
|
||||
|
||||
/* Define to 1 if you have the `mkstemp' function. */
|
||||
#undef HAVE_MKSTEMP
|
||||
|
||||
/* Define to 1 if you have the `mmap' function. */
|
||||
/* Define to 1 if you have a working `mmap' system call. */
|
||||
#undef HAVE_MMAP
|
||||
|
||||
/* Define to 1 if you have the `newlocale' function. */
|
||||
#undef HAVE_NEWLOCALE
|
||||
|
||||
/* Define to 1 if you have the `pread' function. */
|
||||
#undef HAVE_PREAD
|
||||
|
||||
/* Define to 1 if you have the `setlocale' function. */
|
||||
#undef HAVE_SETLOCALE
|
||||
|
||||
/* Define to 1 if you have the <stddef.h> header file. */
|
||||
#undef HAVE_STDDEF_H
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#undef HAVE_STDINT_H
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#undef HAVE_STDLIB_H
|
||||
|
||||
/* Define to 1 if you have the `strcasestr' function. */
|
||||
#undef HAVE_STRCASESTR
|
||||
|
||||
/* Define to 1 if you have the `strerror' function. */
|
||||
#undef HAVE_STRERROR
|
||||
|
||||
@@ -96,18 +146,21 @@
|
||||
/* HAVE_STRUCT_OPTION */
|
||||
#undef HAVE_STRUCT_OPTION
|
||||
|
||||
/* Define to 1 if `st_rdev' is member of `struct stat'. */
|
||||
/* Define to 1 if `st_rdev' is a member of `struct stat'. */
|
||||
#undef HAVE_STRUCT_STAT_ST_RDEV
|
||||
|
||||
/* Define to 1 if `tm_gmtoff' is member of `struct tm'. */
|
||||
/* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */
|
||||
#undef HAVE_STRUCT_TM_TM_GMTOFF
|
||||
|
||||
/* Define to 1 if `tm_zone' is member of `struct tm'. */
|
||||
/* Define to 1 if `tm_zone' is a member of `struct tm'. */
|
||||
#undef HAVE_STRUCT_TM_TM_ZONE
|
||||
|
||||
/* Define to 1 if you have the <sys/mman.h> header file. */
|
||||
#undef HAVE_SYS_MMAN_H
|
||||
|
||||
/* Define to 1 if you have the <sys/param.h> header file. */
|
||||
#undef HAVE_SYS_PARAM_H
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#undef HAVE_SYS_STAT_H
|
||||
|
||||
@@ -132,21 +185,15 @@
|
||||
/* HAVE_TZNAME */
|
||||
#undef HAVE_TZNAME
|
||||
|
||||
/* Define to 1 if the system has the type `uint16_t'. */
|
||||
#undef HAVE_UINT16_T
|
||||
|
||||
/* Define to 1 if the system has the type `uint32_t'. */
|
||||
#undef HAVE_UINT32_T
|
||||
|
||||
/* Define to 1 if the system has the type `uint64_t'. */
|
||||
#undef HAVE_UINT64_T
|
||||
|
||||
/* Define to 1 if the system has the type `uint8_t'. */
|
||||
#undef HAVE_UINT8_T
|
||||
/* Define to 1 if the system has the type `uintptr_t'. */
|
||||
#undef HAVE_UINTPTR_T
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
/* Define to 1 if you have the `uselocale' function. */
|
||||
#undef HAVE_USELOCALE
|
||||
|
||||
/* Define to 1 if you have the `utime' function. */
|
||||
#undef HAVE_UTIME
|
||||
|
||||
@@ -159,6 +206,16 @@
|
||||
/* Define to 1 if you have the `vasprintf' function. */
|
||||
#undef HAVE_VASPRINTF
|
||||
|
||||
/* Define to 1 if you have the `vfork' function. */
|
||||
#undef HAVE_VFORK
|
||||
|
||||
/* Define to 1 if you have the <vfork.h> header file. */
|
||||
#undef HAVE_VFORK_H
|
||||
|
||||
/* Define to 1 or 0, depending whether the compiler supports simple visibility
|
||||
declarations. */
|
||||
#undef HAVE_VISIBILITY
|
||||
|
||||
/* Define to 1 if you have the <wchar.h> header file. */
|
||||
#undef HAVE_WCHAR_H
|
||||
|
||||
@@ -168,9 +225,22 @@
|
||||
/* Define to 1 if you have the `wcwidth' function. */
|
||||
#undef HAVE_WCWIDTH
|
||||
|
||||
/* Define to 1 if `fork' works. */
|
||||
#undef HAVE_WORKING_FORK
|
||||
|
||||
/* Define to 1 if `vfork' works. */
|
||||
#undef HAVE_WORKING_VFORK
|
||||
|
||||
/* Define to 1 if you have the <xlocale.h> header file. */
|
||||
#undef HAVE_XLOCALE_H
|
||||
|
||||
/* Define to 1 if you have the <zlib.h> header file. */
|
||||
#undef HAVE_ZLIB_H
|
||||
|
||||
/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
||||
*/
|
||||
#undef LT_OBJDIR
|
||||
|
||||
/* Define to 1 if `major', `minor', and `makedev' are declared in <mkdev.h>.
|
||||
*/
|
||||
#undef MAJOR_IN_MKDEV
|
||||
@@ -179,9 +249,6 @@
|
||||
<sysmacros.h>. */
|
||||
#undef MAJOR_IN_SYSMACROS
|
||||
|
||||
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
|
||||
#undef NO_MINUS_C_MINUS_O
|
||||
|
||||
/* Name of package */
|
||||
#undef PACKAGE
|
||||
|
||||
@@ -197,28 +264,62 @@
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#undef PACKAGE_TARNAME
|
||||
|
||||
/* Define to the home page for this package. */
|
||||
#undef PACKAGE_URL
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#undef PACKAGE_VERSION
|
||||
|
||||
/* The size of `long long', as computed by sizeof. */
|
||||
#undef SIZEOF_LONG_LONG
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* Define to 1 if your <sys/time.h> declares `struct tm'. */
|
||||
#undef TM_IN_SYS_TIME
|
||||
|
||||
/* Version number of package */
|
||||
#undef VERSION
|
||||
|
||||
/* Number of bits in a file offset, on hosts where this is settable. */
|
||||
#undef _FILE_OFFSET_BITS
|
||||
|
||||
/* Enable extensions on AIX 3, Interix. */
|
||||
#ifndef _ALL_SOURCE
|
||||
# undef _ALL_SOURCE
|
||||
#endif
|
||||
/* Enable GNU extensions on systems that have them. */
|
||||
#ifndef _GNU_SOURCE
|
||||
# undef _GNU_SOURCE
|
||||
#endif
|
||||
/* Enable threading extensions on Solaris. */
|
||||
#ifndef _POSIX_PTHREAD_SEMANTICS
|
||||
# undef _POSIX_PTHREAD_SEMANTICS
|
||||
#endif
|
||||
/* Enable extensions on HP NonStop. */
|
||||
#ifndef _TANDEM_SOURCE
|
||||
# undef _TANDEM_SOURCE
|
||||
#endif
|
||||
/* Enable general extensions on Solaris. */
|
||||
#ifndef __EXTENSIONS__
|
||||
# undef __EXTENSIONS__
|
||||
#endif
|
||||
|
||||
|
||||
/* Version number of package */
|
||||
#undef VERSION
|
||||
|
||||
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
|
||||
significant byte first (like Motorola and SPARC, unlike Intel). */
|
||||
#if defined AC_APPLE_UNIVERSAL_BUILD
|
||||
# if defined __BIG_ENDIAN__
|
||||
# define WORDS_BIGENDIAN 1
|
||||
# endif
|
||||
#else
|
||||
# ifndef WORDS_BIGENDIAN
|
||||
# undef WORDS_BIGENDIAN
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Enable large inode numbers on Mac OS X 10.5. */
|
||||
#ifndef _DARWIN_USE_64_BIT_INODE
|
||||
# define _DARWIN_USE_64_BIT_INODE 1
|
||||
#endif
|
||||
|
||||
/* Number of bits in a file offset, on hosts where this is settable. */
|
||||
#undef _FILE_OFFSET_BITS
|
||||
|
||||
/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
|
||||
#undef _LARGEFILE_SOURCE
|
||||
@@ -226,43 +327,77 @@
|
||||
/* Define for large files, on AIX-style hosts. */
|
||||
#undef _LARGE_FILES
|
||||
|
||||
/* Define to 1 if on MINIX. */
|
||||
#undef _MINIX
|
||||
|
||||
/* Define to 2 if the system does not provide POSIX.1 features except with
|
||||
this defined. */
|
||||
#undef _POSIX_1_SOURCE
|
||||
|
||||
/* Define to 1 if you need to in order for `stat' and other things to work. */
|
||||
#undef _POSIX_SOURCE
|
||||
|
||||
/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
|
||||
<pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
|
||||
#define below would cause a syntax error. */
|
||||
#undef _UINT32_T
|
||||
|
||||
/* Define for Solaris 2.5.1 so the uint64_t typedef from <sys/synch.h>,
|
||||
<pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
|
||||
#define below would cause a syntax error. */
|
||||
#undef _UINT64_T
|
||||
|
||||
/* Define for Solaris 2.5.1 so the uint8_t typedef from <sys/synch.h>,
|
||||
<pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
|
||||
#define below would cause a syntax error. */
|
||||
#undef _UINT8_T
|
||||
|
||||
/* Define to empty if `const' does not conform to ANSI C. */
|
||||
#undef const
|
||||
|
||||
/* Define to the type of a signed integer type of width exactly 32 bits if
|
||||
such a type exists and the standard includes do not define it. */
|
||||
#undef int32_t
|
||||
|
||||
/* Define to the type of a signed integer type of width exactly 64 bits if
|
||||
such a type exists and the standard includes do not define it. */
|
||||
#undef int64_t
|
||||
|
||||
/* Define to the type of a signed integer type wide enough to hold a pointer,
|
||||
if such a type exists, and if the system does not define it. */
|
||||
#undef intptr_t
|
||||
|
||||
/* Define to a type if <wchar.h> does not define. */
|
||||
#undef mbstate_t
|
||||
|
||||
/* Define to `long int' if <sys/types.h> does not define. */
|
||||
#undef off_t
|
||||
|
||||
/* Define to `int' if <sys/types.h> does not define. */
|
||||
#undef pid_t
|
||||
|
||||
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
||||
#undef size_t
|
||||
|
||||
/* Define to the type of an unsigned integer type of width exactly 16 bits if
|
||||
such a type exists and the standard includes do not define it. */
|
||||
#undef uint16_t
|
||||
|
||||
#ifndef HAVE_UINT8_T
|
||||
typedef unsigned char uint8_t;
|
||||
#endif
|
||||
#ifndef HAVE_UINT16_T
|
||||
typedef unsigned short uint16_t;
|
||||
#endif
|
||||
#ifndef HAVE_UINT32_T
|
||||
typedef unsigned int uint32_t;
|
||||
#endif
|
||||
#ifndef HAVE_INT32_T
|
||||
typedef int int32_t;
|
||||
#endif
|
||||
#ifndef HAVE_UINT64_T
|
||||
#if SIZEOF_LONG_LONG == 8
|
||||
typedef unsigned long long uint64_t;
|
||||
#else
|
||||
typedef unsigned long uint64_t;
|
||||
#endif
|
||||
#endif
|
||||
#ifndef HAVE_INT64_T
|
||||
#if SIZEOF_LONG_LONG == 8
|
||||
typedef long long int64_t;
|
||||
#else
|
||||
typedef long int64_t;
|
||||
#endif
|
||||
#endif
|
||||
/* Define to the type of an unsigned integer type of width exactly 32 bits if
|
||||
such a type exists and the standard includes do not define it. */
|
||||
#undef uint32_t
|
||||
|
||||
/* Define to the type of an unsigned integer type of width exactly 64 bits if
|
||||
such a type exists and the standard includes do not define it. */
|
||||
#undef uint64_t
|
||||
|
||||
/* Define to the type of an unsigned integer type of width exactly 8 bits if
|
||||
such a type exists and the standard includes do not define it. */
|
||||
#undef uint8_t
|
||||
|
||||
/* Define to the type of an unsigned integer type wide enough to hold a
|
||||
pointer, if such a type exists, and if the system does not define it. */
|
||||
#undef uintptr_t
|
||||
|
||||
/* Define as `fork' if `vfork' does not work. */
|
||||
#undef vfork
|
||||
+1779
File diff suppressed because it is too large.
Load diff
Vendored
+10427
-18886
File diff suppressed because it is too large.
Load diff
+50
-51
@@ -1,8 +1,10 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
AC_INIT(file, 5.03, [email protected])
|
||||
AM_INIT_AUTOMAKE
|
||||
AM_CONFIG_HEADER(config.h)
|
||||
#AC_CONFIG_MACRO_DIR([m4])
|
||||
AC_INIT([file],[5.22],[[email protected]])
|
||||
AM_INIT_AUTOMAKE([subdir-objects foreign])
|
||||
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
||||
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
|
||||
AC_MSG_CHECKING(for builtin ELF support)
|
||||
AC_ARG_ENABLE(elf,
|
||||
@@ -47,27 +49,40 @@ fi], [
|
||||
fsect=4
|
||||
])
|
||||
|
||||
AC_CANONICAL_HOST
|
||||
case "$host_os" in
|
||||
mingw32*)
|
||||
MINGW=1
|
||||
;;
|
||||
*)
|
||||
MINGW=0
|
||||
;;
|
||||
esac
|
||||
AC_SUBST(MINGW)
|
||||
AM_CONDITIONAL(MINGW, test "$MINGW" = 1)
|
||||
|
||||
AC_SUBST([pkgdatadir], ['$(datadir)/misc'])
|
||||
AC_SUBST(fsect)
|
||||
AM_CONDITIONAL(FSECT5, test x$fsect = x5)
|
||||
|
||||
AC_SUBST(WARNINGS)
|
||||
AC_GNU_SOURCE
|
||||
|
||||
dnl Checks for programs.
|
||||
AC_PROG_CC
|
||||
AC_PROG_CC_STDC
|
||||
AC_USE_SYSTEM_EXTENSIONS
|
||||
AM_PROG_CC_C_O
|
||||
AC_C_BIGENDIAN
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_LN_S
|
||||
AC_PROG_LIBTOOL
|
||||
|
||||
LT_INIT([disable-static pic-only])
|
||||
gl_VISIBILITY
|
||||
dnl Checks for headers
|
||||
AC_HEADER_STDC
|
||||
AC_HEADER_MAJOR
|
||||
AC_HEADER_SYS_WAIT
|
||||
AC_CHECK_HEADERS(stdint.h fcntl.h locale.h stdint.h inttypes.h unistd.h)
|
||||
AC_CHECK_HEADERS(utime.h wchar.h wctype.h limits.h)
|
||||
AC_CHECK_HEADERS(getopt.h err.h)
|
||||
AC_CHECK_HEADERS(stddef.h utime.h wchar.h wctype.h limits.h)
|
||||
AC_CHECK_HEADERS(getopt.h err.h xlocale.h)
|
||||
AC_CHECK_HEADERS(sys/mman.h sys/stat.h sys/types.h sys/utime.h sys/time.h)
|
||||
AC_CHECK_HEADERS(zlib.h)
|
||||
|
||||
@@ -77,45 +92,26 @@ AC_TYPE_OFF_T
|
||||
AC_TYPE_SIZE_T
|
||||
AC_CHECK_MEMBERS([struct stat.st_rdev])
|
||||
|
||||
AC_STRUCT_TM
|
||||
AC_CHECK_MEMBERS([struct tm.tm_gmtoff, struct tm.tm_zone])
|
||||
AC_CHECK_MEMBERS([struct tm.tm_gmtoff])
|
||||
AC_STRUCT_TIMEZONE
|
||||
AC_STRUCT_TIMEZONE_DAYLIGHT
|
||||
AC_SYS_LARGEFILE
|
||||
AC_FUNC_FSEEKO
|
||||
AC_TYPE_MBSTATE_T
|
||||
|
||||
AC_STRUCT_OPTION_GETOPT_H
|
||||
|
||||
AC_CHECK_TYPES([uint8_t, uint16_t, uint32_t, int32_t, uint64_t, int64_t])
|
||||
AC_CHECK_SIZEOF(long long)
|
||||
AH_BOTTOM([
|
||||
#ifndef HAVE_UINT8_T
|
||||
typedef unsigned char uint8_t;
|
||||
#endif
|
||||
#ifndef HAVE_UINT16_T
|
||||
typedef unsigned short uint16_t;
|
||||
#endif
|
||||
#ifndef HAVE_UINT32_T
|
||||
typedef unsigned int uint32_t;
|
||||
#endif
|
||||
#ifndef HAVE_INT32_T
|
||||
typedef int int32_t;
|
||||
#endif
|
||||
#ifndef HAVE_UINT64_T
|
||||
#if SIZEOF_LONG_LONG == 8
|
||||
typedef unsigned long long uint64_t;
|
||||
#else
|
||||
typedef unsigned long uint64_t;
|
||||
#endif
|
||||
#endif
|
||||
#ifndef HAVE_INT64_T
|
||||
#if SIZEOF_LONG_LONG == 8
|
||||
typedef long long int64_t;
|
||||
#else
|
||||
typedef long int64_t;
|
||||
#endif
|
||||
#endif
|
||||
])
|
||||
AC_TYPE_PID_T
|
||||
AC_TYPE_UINT8_T
|
||||
AC_TYPE_UINT16_T
|
||||
AC_TYPE_UINT32_T
|
||||
AC_TYPE_INT32_T
|
||||
AC_TYPE_UINT64_T
|
||||
AC_TYPE_INT64_T
|
||||
AC_TYPE_INTPTR_T
|
||||
AC_TYPE_UINTPTR_T
|
||||
AC_FUNC_MMAP
|
||||
AC_FUNC_FORK
|
||||
AC_FUNC_MBRTOWC
|
||||
|
||||
AC_MSG_CHECKING(for gcc compiler warnings)
|
||||
AC_ARG_ENABLE(warnings,
|
||||
@@ -128,27 +124,30 @@ else
|
||||
WARNINGS="-Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith \
|
||||
-Wmissing-declarations -Wredundant-decls -Wnested-externs \
|
||||
-Wsign-compare -Wreturn-type -Wswitch -Wshadow \
|
||||
-Wcast-qual -Wwrite-strings -Wextra -Wunused-parameter"
|
||||
-Wcast-qual -Wwrite-strings -Wextra -Wunused-parameter -Wformat=2"
|
||||
fi], [
|
||||
if test "$GCC" = no; then
|
||||
WARNINGS=
|
||||
AC_MSG_RESULT(no)
|
||||
else
|
||||
if test "$GCC" = yes; then
|
||||
AC_MSG_RESULT(yes)
|
||||
WARNINGS="-Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith \
|
||||
-Wmissing-declarations -Wredundant-decls -Wnested-externs \
|
||||
-Wsign-compare -Wreturn-type -Wswitch -Wshadow \
|
||||
-Wcast-qual -Wwrite-strings -Wextra -Wunused-parameter"
|
||||
-Wcast-qual -Wwrite-strings -Wextra -Wunused-parameter -Wformat=2"
|
||||
else
|
||||
WARNINGS=
|
||||
AC_MSG_RESULT(no)
|
||||
fi])
|
||||
|
||||
dnl Checks for functions
|
||||
AC_CHECK_FUNCS(mmap strerror strndup strtoul mbrtowc mkstemp utimes utime wcwidth strtof)
|
||||
AC_CHECK_FUNCS(strerror strndup strtoul mkstemp mkostemp utimes utime wcwidth strtof newlocale uselocale freelocale setlocale)
|
||||
|
||||
dnl Provide implementation of some required functions if necessary
|
||||
AC_REPLACE_FUNCS(getopt_long asprintf vasprintf strlcpy strlcat)
|
||||
AC_REPLACE_FUNCS(getopt_long asprintf vasprintf strlcpy strlcat getline ctime_r asctime_r pread strcasestr fmtcheck)
|
||||
|
||||
dnl Checks for libraries
|
||||
AC_CHECK_LIB(z,gzopen)
|
||||
if test "$MINGW" = 1; then
|
||||
AC_CHECK_LIB(gnurx,regexec,,AC_MSG_ERROR([libgnurx is required to build file(1) with MinGW]))
|
||||
fi
|
||||
|
||||
dnl See if we are cross-compiling
|
||||
AM_CONDITIONAL(IS_CROSS_COMPILE, test "$cross_compiling" = yes)
|
||||
|
||||
Executable
+791
@@ -0,0 +1,791 @@
|
||||
#! /bin/sh
|
||||
# depcomp - compile a program generating dependencies as side-effects
|
||||
|
||||
scriptversion=2013-05-30.07; # UTC
|
||||
|
||||
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# Originally written by Alexandre Oliva <[email protected]>.
|
||||
|
||||
case $1 in
|
||||
'')
|
||||
echo "$0: No command. Try '$0 --help' for more information." 1>&2
|
||||
exit 1;
|
||||
;;
|
||||
-h | --h*)
|
||||
cat <<\EOF
|
||||
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
|
||||
|
||||
Run PROGRAMS ARGS to compile a file, generating dependencies
|
||||
as side-effects.
|
||||
|
||||
Environment variables:
|
||||
depmode Dependency tracking mode.
|
||||
source Source file read by 'PROGRAMS ARGS'.
|
||||
object Object file output by 'PROGRAMS ARGS'.
|
||||
DEPDIR directory where to store dependencies.
|
||||
depfile Dependency file to output.
|
||||
tmpdepfile Temporary file to use when outputting dependencies.
|
||||
libtool Whether libtool is used (yes/no).
|
||||
|
||||
Report bugs to <[email protected]>.
|
||||
EOF
|
||||
exit $?
|
||||
;;
|
||||
-v | --v*)
|
||||
echo "depcomp $scriptversion"
|
||||
exit $?
|
||||
;;
|
||||
esac
|
||||
|
||||
# Get the directory component of the given path, and save it in the
|
||||
# global variables '$dir'. Note that this directory component will
|
||||
# be either empty or ending with a '/' character. This is deliberate.
|
||||
set_dir_from ()
|
||||
{
|
||||
case $1 in
|
||||
*/*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
|
||||
*) dir=;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Get the suffix-stripped basename of the given path, and save it the
|
||||
# global variable '$base'.
|
||||
set_base_from ()
|
||||
{
|
||||
base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
|
||||
}
|
||||
|
||||
# If no dependency file was actually created by the compiler invocation,
|
||||
# we still have to create a dummy depfile, to avoid errors with the
|
||||
# Makefile "include basename.Plo" scheme.
|
||||
make_dummy_depfile ()
|
||||
{
|
||||
echo "#dummy" > "$depfile"
|
||||
}
|
||||
|
||||
# Factor out some common post-processing of the generated depfile.
|
||||
# Requires the auxiliary global variable '$tmpdepfile' to be set.
|
||||
aix_post_process_depfile ()
|
||||
{
|
||||
# If the compiler actually managed to produce a dependency file,
|
||||
# post-process it.
|
||||
if test -f "$tmpdepfile"; then
|
||||
# Each line is of the form 'foo.o: dependency.h'.
|
||||
# Do two passes, one to just change these to
|
||||
# $object: dependency.h
|
||||
# and one to simply output
|
||||
# dependency.h:
|
||||
# which is needed to avoid the deleted-header problem.
|
||||
{ sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
|
||||
sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
|
||||
} > "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
else
|
||||
make_dummy_depfile
|
||||
fi
|
||||
}
|
||||
|
||||
# A tabulation character.
|
||||
tab=' '
|
||||
# A newline character.
|
||||
nl='
|
||||
'
|
||||
# Character ranges might be problematic outside the C locale.
|
||||
# These definitions help.
|
||||
upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
||||
lower=abcdefghijklmnopqrstuvwxyz
|
||||
digits=0123456789
|
||||
alpha=${upper}${lower}
|
||||
|
||||
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
|
||||
echo "depcomp: Variables source, object and depmode must be set" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
|
||||
depfile=${depfile-`echo "$object" |
|
||||
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
|
||||
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
|
||||
|
||||
rm -f "$tmpdepfile"
|
||||
|
||||
# Avoid interferences from the environment.
|
||||
gccflag= dashmflag=
|
||||
|
||||
# Some modes work just like other modes, but use different flags. We
|
||||
# parameterize here, but still list the modes in the big case below,
|
||||
# to make depend.m4 easier to write. Note that we *cannot* use a case
|
||||
# here, because this file can only contain one case statement.
|
||||
if test "$depmode" = hp; then
|
||||
# HP compiler uses -M and no extra arg.
|
||||
gccflag=-M
|
||||
depmode=gcc
|
||||
fi
|
||||
|
||||
if test "$depmode" = dashXmstdout; then
|
||||
# This is just like dashmstdout with a different argument.
|
||||
dashmflag=-xM
|
||||
depmode=dashmstdout
|
||||
fi
|
||||
|
||||
cygpath_u="cygpath -u -f -"
|
||||
if test "$depmode" = msvcmsys; then
|
||||
# This is just like msvisualcpp but w/o cygpath translation.
|
||||
# Just convert the backslash-escaped backslashes to single forward
|
||||
# slashes to satisfy depend.m4
|
||||
cygpath_u='sed s,\\\\,/,g'
|
||||
depmode=msvisualcpp
|
||||
fi
|
||||
|
||||
if test "$depmode" = msvc7msys; then
|
||||
# This is just like msvc7 but w/o cygpath translation.
|
||||
# Just convert the backslash-escaped backslashes to single forward
|
||||
# slashes to satisfy depend.m4
|
||||
cygpath_u='sed s,\\\\,/,g'
|
||||
depmode=msvc7
|
||||
fi
|
||||
|
||||
if test "$depmode" = xlc; then
|
||||
# IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
|
||||
gccflag=-qmakedep=gcc,-MF
|
||||
depmode=gcc
|
||||
fi
|
||||
|
||||
case "$depmode" in
|
||||
gcc3)
|
||||
## gcc 3 implements dependency tracking that does exactly what
|
||||
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
|
||||
## it if -MD -MP comes after the -MF stuff. Hmm.
|
||||
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
|
||||
## the command line argument order; so add the flags where they
|
||||
## appear in depend2.am. Note that the slowdown incurred here
|
||||
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
|
||||
*) set fnord "$@" "$arg" ;;
|
||||
esac
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
done
|
||||
"$@"
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
mv "$tmpdepfile" "$depfile"
|
||||
;;
|
||||
|
||||
gcc)
|
||||
## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
|
||||
## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
|
||||
## (see the conditional assignment to $gccflag above).
|
||||
## There are various ways to get dependency output from gcc. Here's
|
||||
## why we pick this rather obscure method:
|
||||
## - Don't want to use -MD because we'd like the dependencies to end
|
||||
## up in a subdir. Having to rename by hand is ugly.
|
||||
## (We might end up doing this anyway to support other compilers.)
|
||||
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
|
||||
## -MM, not -M (despite what the docs say). Also, it might not be
|
||||
## supported by the other compilers which use the 'gcc' depmode.
|
||||
## - Using -M directly means running the compiler twice (even worse
|
||||
## than renaming).
|
||||
if test -z "$gccflag"; then
|
||||
gccflag=-MD,
|
||||
fi
|
||||
"$@" -Wp,"$gccflag$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
# The second -e expression handles DOS-style file names with drive
|
||||
# letters.
|
||||
sed -e 's/^[^:]*: / /' \
|
||||
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
|
||||
## This next piece of magic avoids the "deleted header file" problem.
|
||||
## The problem is that when a header file which appears in a .P file
|
||||
## is deleted, the dependency causes make to die (because there is
|
||||
## typically no way to rebuild the header). We avoid this by adding
|
||||
## dummy dependencies for each header file. Too bad gcc doesn't do
|
||||
## this for us directly.
|
||||
## Some versions of gcc put a space before the ':'. On the theory
|
||||
## that the space means something, we add a space to the output as
|
||||
## well. hp depmode also adds that space, but also prefixes the VPATH
|
||||
## to the object. Take care to not repeat it in the output.
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
tr ' ' "$nl" < "$tmpdepfile" \
|
||||
| sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
|
||||
| sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
hp)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
sgi)
|
||||
if test "$libtool" = yes; then
|
||||
"$@" "-Wp,-MDupdate,$tmpdepfile"
|
||||
else
|
||||
"$@" -MDupdate "$tmpdepfile"
|
||||
fi
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
|
||||
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
|
||||
echo "$object : \\" > "$depfile"
|
||||
# Clip off the initial element (the dependent). Don't try to be
|
||||
# clever and replace this with sed code, as IRIX sed won't handle
|
||||
# lines with more than a fixed number of characters (4096 in
|
||||
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
|
||||
# the IRIX cc adds comments like '#:fec' to the end of the
|
||||
# dependency line.
|
||||
tr ' ' "$nl" < "$tmpdepfile" \
|
||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
|
||||
| tr "$nl" ' ' >> "$depfile"
|
||||
echo >> "$depfile"
|
||||
# The second pass generates a dummy entry for each header file.
|
||||
tr ' ' "$nl" < "$tmpdepfile" \
|
||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
||||
>> "$depfile"
|
||||
else
|
||||
make_dummy_depfile
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
xlc)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
aix)
|
||||
# The C for AIX Compiler uses -M and outputs the dependencies
|
||||
# in a .u file. In older versions, this file always lives in the
|
||||
# current directory. Also, the AIX compiler puts '$object:' at the
|
||||
# start of each line; $object doesn't have directory information.
|
||||
# Version 6 uses the directory in both cases.
|
||||
set_dir_from "$object"
|
||||
set_base_from "$object"
|
||||
if test "$libtool" = yes; then
|
||||
tmpdepfile1=$dir$base.u
|
||||
tmpdepfile2=$base.u
|
||||
tmpdepfile3=$dir.libs/$base.u
|
||||
"$@" -Wc,-M
|
||||
else
|
||||
tmpdepfile1=$dir$base.u
|
||||
tmpdepfile2=$dir$base.u
|
||||
tmpdepfile3=$dir$base.u
|
||||
"$@" -M
|
||||
fi
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||
do
|
||||
test -f "$tmpdepfile" && break
|
||||
done
|
||||
aix_post_process_depfile
|
||||
;;
|
||||
|
||||
tcc)
|
||||
# tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
|
||||
# FIXME: That version still under development at the moment of writing.
|
||||
# Make that this statement remains true also for stable, released
|
||||
# versions.
|
||||
# It will wrap lines (doesn't matter whether long or short) with a
|
||||
# trailing '\', as in:
|
||||
#
|
||||
# foo.o : \
|
||||
# foo.c \
|
||||
# foo.h \
|
||||
#
|
||||
# It will put a trailing '\' even on the last line, and will use leading
|
||||
# spaces rather than leading tabs (at least since its commit 0394caf7
|
||||
# "Emit spaces for -MD").
|
||||
"$@" -MD -MF "$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
# Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
|
||||
# We have to change lines of the first kind to '$object: \'.
|
||||
sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
|
||||
# And for each line of the second kind, we have to emit a 'dep.h:'
|
||||
# dummy dependency, to avoid the deleted-header problem.
|
||||
sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
## The order of this option in the case statement is important, since the
|
||||
## shell code in configure will try each of these formats in the order
|
||||
## listed in this file. A plain '-MD' option would be understood by many
|
||||
## compilers, so we must ensure this comes after the gcc and icc options.
|
||||
pgcc)
|
||||
# Portland's C compiler understands '-MD'.
|
||||
# Will always output deps to 'file.d' where file is the root name of the
|
||||
# source file under compilation, even if file resides in a subdirectory.
|
||||
# The object file name does not affect the name of the '.d' file.
|
||||
# pgcc 10.2 will output
|
||||
# foo.o: sub/foo.c sub/foo.h
|
||||
# and will wrap long lines using '\' :
|
||||
# foo.o: sub/foo.c ... \
|
||||
# sub/foo.h ... \
|
||||
# ...
|
||||
set_dir_from "$object"
|
||||
# Use the source, not the object, to determine the base name, since
|
||||
# that's sadly what pgcc will do too.
|
||||
set_base_from "$source"
|
||||
tmpdepfile=$base.d
|
||||
|
||||
# For projects that build the same source file twice into different object
|
||||
# files, the pgcc approach of using the *source* file root name can cause
|
||||
# problems in parallel builds. Use a locking strategy to avoid stomping on
|
||||
# the same $tmpdepfile.
|
||||
lockdir=$base.d-lock
|
||||
trap "
|
||||
echo '$0: caught signal, cleaning up...' >&2
|
||||
rmdir '$lockdir'
|
||||
exit 1
|
||||
" 1 2 13 15
|
||||
numtries=100
|
||||
i=$numtries
|
||||
while test $i -gt 0; do
|
||||
# mkdir is a portable test-and-set.
|
||||
if mkdir "$lockdir" 2>/dev/null; then
|
||||
# This process acquired the lock.
|
||||
"$@" -MD
|
||||
stat=$?
|
||||
# Release the lock.
|
||||
rmdir "$lockdir"
|
||||
break
|
||||
else
|
||||
# If the lock is being held by a different process, wait
|
||||
# until the winning process is done or we timeout.
|
||||
while test -d "$lockdir" && test $i -gt 0; do
|
||||
sleep 1
|
||||
i=`expr $i - 1`
|
||||
done
|
||||
fi
|
||||
i=`expr $i - 1`
|
||||
done
|
||||
trap - 1 2 13 15
|
||||
if test $i -le 0; then
|
||||
echo "$0: failed to acquire lock after $numtries attempts" >&2
|
||||
echo "$0: check lockdir '$lockdir'" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
# Each line is of the form `foo.o: dependent.h',
|
||||
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
|
||||
# Do two passes, one to just change these to
|
||||
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
|
||||
# Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
# correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
|
||||
| sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
hp2)
|
||||
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
|
||||
# compilers, which have integrated preprocessors. The correct option
|
||||
# to use with these is +Maked; it writes dependencies to a file named
|
||||
# 'foo.d', which lands next to the object file, wherever that
|
||||
# happens to be.
|
||||
# Much of this is similar to the tru64 case; see comments there.
|
||||
set_dir_from "$object"
|
||||
set_base_from "$object"
|
||||
if test "$libtool" = yes; then
|
||||
tmpdepfile1=$dir$base.d
|
||||
tmpdepfile2=$dir.libs/$base.d
|
||||
"$@" -Wc,+Maked
|
||||
else
|
||||
tmpdepfile1=$dir$base.d
|
||||
tmpdepfile2=$dir$base.d
|
||||
"$@" +Maked
|
||||
fi
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
|
||||
do
|
||||
test -f "$tmpdepfile" && break
|
||||
done
|
||||
if test -f "$tmpdepfile"; then
|
||||
sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
|
||||
# Add 'dependent.h:' lines.
|
||||
sed -ne '2,${
|
||||
s/^ *//
|
||||
s/ \\*$//
|
||||
s/$/:/
|
||||
p
|
||||
}' "$tmpdepfile" >> "$depfile"
|
||||
else
|
||||
make_dummy_depfile
|
||||
fi
|
||||
rm -f "$tmpdepfile" "$tmpdepfile2"
|
||||
;;
|
||||
|
||||
tru64)
|
||||
# The Tru64 compiler uses -MD to generate dependencies as a side
|
||||
# effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
|
||||
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
|
||||
# dependencies in 'foo.d' instead, so we check for that too.
|
||||
# Subdirectories are respected.
|
||||
set_dir_from "$object"
|
||||
set_base_from "$object"
|
||||
|
||||
if test "$libtool" = yes; then
|
||||
# Libtool generates 2 separate objects for the 2 libraries. These
|
||||
# two compilations output dependencies in $dir.libs/$base.o.d and
|
||||
# in $dir$base.o.d. We have to check for both files, because
|
||||
# one of the two compilations can be disabled. We should prefer
|
||||
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
|
||||
# automatically cleaned when .libs/ is deleted, while ignoring
|
||||
# the former would cause a distcleancheck panic.
|
||||
tmpdepfile1=$dir$base.o.d # libtool 1.5
|
||||
tmpdepfile2=$dir.libs/$base.o.d # Likewise.
|
||||
tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504
|
||||
"$@" -Wc,-MD
|
||||
else
|
||||
tmpdepfile1=$dir$base.d
|
||||
tmpdepfile2=$dir$base.d
|
||||
tmpdepfile3=$dir$base.d
|
||||
"$@" -MD
|
||||
fi
|
||||
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||
do
|
||||
test -f "$tmpdepfile" && break
|
||||
done
|
||||
# Same post-processing that is required for AIX mode.
|
||||
aix_post_process_depfile
|
||||
;;
|
||||
|
||||
msvc7)
|
||||
if test "$libtool" = yes; then
|
||||
showIncludes=-Wc,-showIncludes
|
||||
else
|
||||
showIncludes=-showIncludes
|
||||
fi
|
||||
"$@" $showIncludes > "$tmpdepfile"
|
||||
stat=$?
|
||||
grep -v '^Note: including file: ' "$tmpdepfile"
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
# The first sed program below extracts the file names and escapes
|
||||
# backslashes for cygpath. The second sed program outputs the file
|
||||
# name when reading, but also accumulates all include files in the
|
||||
# hold buffer in order to output them again at the end. This only
|
||||
# works with sed implementations that can handle large buffers.
|
||||
sed < "$tmpdepfile" -n '
|
||||
/^Note: including file: *\(.*\)/ {
|
||||
s//\1/
|
||||
s/\\/\\\\/g
|
||||
p
|
||||
}' | $cygpath_u | sort -u | sed -n '
|
||||
s/ /\\ /g
|
||||
s/\(.*\)/'"$tab"'\1 \\/p
|
||||
s/.\(.*\) \\/\1:/
|
||||
H
|
||||
$ {
|
||||
s/.*/'"$tab"'/
|
||||
G
|
||||
p
|
||||
}' >> "$depfile"
|
||||
echo >> "$depfile" # make sure the fragment doesn't end with a backslash
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
msvc7msys)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
#nosideeffect)
|
||||
# This comment above is used by automake to tell side-effect
|
||||
# dependency tracking mechanisms from slower ones.
|
||||
|
||||
dashmstdout)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout, regardless of -o.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove '-o $object'.
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
test -z "$dashmflag" && dashmflag=-M
|
||||
# Require at least two characters before searching for ':'
|
||||
# in the target name. This is to cope with DOS-style filenames:
|
||||
# a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
|
||||
"$@" $dashmflag |
|
||||
sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
cat < "$tmpdepfile" > "$depfile"
|
||||
# Some versions of the HPUX 10.20 sed can't process this sed invocation
|
||||
# correctly. Breaking it into two sed invocations is a workaround.
|
||||
tr ' ' "$nl" < "$tmpdepfile" \
|
||||
| sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
|
||||
| sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
dashXmstdout)
|
||||
# This case only exists to satisfy depend.m4. It is never actually
|
||||
# run, as this mode is specially recognized in the preamble.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
makedepend)
|
||||
"$@" || exit $?
|
||||
# Remove any Libtool call
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
# X makedepend
|
||||
shift
|
||||
cleared=no eat=no
|
||||
for arg
|
||||
do
|
||||
case $cleared in
|
||||
no)
|
||||
set ""; shift
|
||||
cleared=yes ;;
|
||||
esac
|
||||
if test $eat = yes; then
|
||||
eat=no
|
||||
continue
|
||||
fi
|
||||
case "$arg" in
|
||||
-D*|-I*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
# Strip any option that makedepend may not understand. Remove
|
||||
# the object too, otherwise makedepend will parse it as a source file.
|
||||
-arch)
|
||||
eat=yes ;;
|
||||
-*|$object)
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
esac
|
||||
done
|
||||
obj_suffix=`echo "$object" | sed 's/^.*\././'`
|
||||
touch "$tmpdepfile"
|
||||
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
||||
rm -f "$depfile"
|
||||
# makedepend may prepend the VPATH from the source file name to the object.
|
||||
# No need to regex-escape $object, excess matching of '.' is harmless.
|
||||
sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
|
||||
# Some versions of the HPUX 10.20 sed can't process the last invocation
|
||||
# correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed '1,2d' "$tmpdepfile" \
|
||||
| tr ' ' "$nl" \
|
||||
| sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
|
||||
| sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile" "$tmpdepfile".bak
|
||||
;;
|
||||
|
||||
cpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove '-o $object'.
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
"$@" -E \
|
||||
| sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
|
||||
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
|
||||
| sed '$ s: \\$::' > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
cat < "$tmpdepfile" >> "$depfile"
|
||||
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
msvisualcpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case "$arg" in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
|
||||
set fnord "$@"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
"$@" -E 2>/dev/null |
|
||||
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
|
||||
echo "$tab" >> "$depfile"
|
||||
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
msvcmsys)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
none)
|
||||
exec "$@"
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Unknown depmode $depmode" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
||||
@@ -0,0 +1,32 @@
|
||||
MAGIC = $(pkgdatadir)/magic
|
||||
if FSECT5
|
||||
man_MAGIC = magic.5
|
||||
else
|
||||
man_MAGIC = magic.4
|
||||
endif
|
||||
fsect = @fsect@
|
||||
man_MANS = file.1 $(man_MAGIC) libmagic.3
|
||||
|
||||
EXTRA_DIST = file.man magic.man libmagic.man
|
||||
CLEANFILES = $(man_MANS)
|
||||
|
||||
file.1: Makefile file.man
|
||||
@rm -f $@
|
||||
sed -e s@__CSECTION__@1@g \
|
||||
-e s@__FSECTION__@${fsect}@g \
|
||||
-e s@__VERSION__@${VERSION}@g \
|
||||
-e s@__MAGIC__@${MAGIC}@g $(srcdir)/file.man > $@
|
||||
|
||||
magic.${fsect}: Makefile magic.man
|
||||
@rm -f $@
|
||||
sed -e s@__CSECTION__@1@g \
|
||||
-e s@__FSECTION__@${fsect}@g \
|
||||
-e s@__VERSION__@${VERSION}@g \
|
||||
-e s@__MAGIC__@${MAGIC}@g $(srcdir)/magic.man > $@
|
||||
|
||||
libmagic.3: Makefile libmagic.man
|
||||
@rm -f $@
|
||||
sed -e s@__CSECTION__@1@g \
|
||||
-e s@__FSECTION__@${fsect}@g \
|
||||
-e s@__VERSION__@${VERSION}@g \
|
||||
-e s@__MAGIC__@${MAGIC}@g $(srcdir)/libmagic.man > $@
|
||||
@@ -0,0 +1,669 @@
|
||||
# Makefile.in generated by automake 1.14 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = doc
|
||||
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
am__v_P_0 = false
|
||||
am__v_P_1 = :
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
am__v_GEN_1 =
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||
am__vpath_adj = case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
*) f=$$p;; \
|
||||
esac;
|
||||
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
|
||||
am__install_max = 40
|
||||
am__nobase_strip_setup = \
|
||||
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
|
||||
am__nobase_strip = \
|
||||
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
|
||||
am__nobase_list = $(am__nobase_strip_setup); \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
|
||||
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
|
||||
if (++n[$$2] == $(am__install_max)) \
|
||||
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
|
||||
END { for (dir in files) print dir, files[dir] }'
|
||||
am__base_list = \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
||||
am__uninstall_files_from_dir = { \
|
||||
test -z "$$files" \
|
||||
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|
||||
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
||||
$(am__cd) "$$dir" && rm -f $$files; }; \
|
||||
}
|
||||
man1dir = $(mandir)/man1
|
||||
am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)" \
|
||||
"$(DESTDIR)$(man4dir)" "$(DESTDIR)$(man5dir)"
|
||||
man3dir = $(mandir)/man3
|
||||
man4dir = $(mandir)/man4
|
||||
man5dir = $(mandir)/man5
|
||||
NROFF = nroff
|
||||
MANS = $(man_MANS)
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
pkgdatadir = @pkgdatadir@
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
HAVE_VISIBILITY = @HAVE_VISIBILITY@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MINGW = @MINGW@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
WARNINGS = @WARNINGS@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
fsect = @fsect@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
MAGIC = $(pkgdatadir)/magic
|
||||
@FSECT5_FALSE@man_MAGIC = magic.4
|
||||
@FSECT5_TRUE@man_MAGIC = magic.5
|
||||
man_MANS = file.1 $(man_MAGIC) libmagic.3
|
||||
EXTRA_DIST = file.man magic.man libmagic.man
|
||||
CLEANFILES = $(man_MANS)
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign doc/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
install-man1: $(man_MANS)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list1=''; \
|
||||
list2='$(man_MANS)'; \
|
||||
test -n "$(man1dir)" \
|
||||
&& test -n "`echo $$list1$$list2`" \
|
||||
|| exit 0; \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
|
||||
{ for i in $$list1; do echo "$$i"; done; \
|
||||
if test -n "$$list2"; then \
|
||||
for i in $$list2; do echo "$$i"; done \
|
||||
| sed -n '/\.1[a-z]*$$/p'; \
|
||||
fi; \
|
||||
} | while read p; do \
|
||||
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; echo "$$p"; \
|
||||
done | \
|
||||
sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
|
||||
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
|
||||
sed 'N;N;s,\n, ,g' | { \
|
||||
list=; while read file base inst; do \
|
||||
if test "$$base" = "$$inst"; then list="$$list $$file"; else \
|
||||
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
|
||||
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
|
||||
fi; \
|
||||
done; \
|
||||
for i in $$list; do echo "$$i"; done | $(am__base_list) | \
|
||||
while read files; do \
|
||||
test -z "$$files" || { \
|
||||
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
|
||||
$(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
|
||||
done; }
|
||||
|
||||
uninstall-man1:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list=''; test -n "$(man1dir)" || exit 0; \
|
||||
files=`{ for i in $$list; do echo "$$i"; done; \
|
||||
l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
|
||||
sed -n '/\.1[a-z]*$$/p'; \
|
||||
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
|
||||
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
|
||||
dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
|
||||
install-man3: $(man_MANS)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list1=''; \
|
||||
list2='$(man_MANS)'; \
|
||||
test -n "$(man3dir)" \
|
||||
&& test -n "`echo $$list1$$list2`" \
|
||||
|| exit 0; \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(man3dir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(man3dir)" || exit 1; \
|
||||
{ for i in $$list1; do echo "$$i"; done; \
|
||||
if test -n "$$list2"; then \
|
||||
for i in $$list2; do echo "$$i"; done \
|
||||
| sed -n '/\.3[a-z]*$$/p'; \
|
||||
fi; \
|
||||
} | while read p; do \
|
||||
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; echo "$$p"; \
|
||||
done | \
|
||||
sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \
|
||||
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
|
||||
sed 'N;N;s,\n, ,g' | { \
|
||||
list=; while read file base inst; do \
|
||||
if test "$$base" = "$$inst"; then list="$$list $$file"; else \
|
||||
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \
|
||||
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst" || exit $$?; \
|
||||
fi; \
|
||||
done; \
|
||||
for i in $$list; do echo "$$i"; done | $(am__base_list) | \
|
||||
while read files; do \
|
||||
test -z "$$files" || { \
|
||||
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man3dir)'"; \
|
||||
$(INSTALL_DATA) $$files "$(DESTDIR)$(man3dir)" || exit $$?; }; \
|
||||
done; }
|
||||
|
||||
uninstall-man3:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list=''; test -n "$(man3dir)" || exit 0; \
|
||||
files=`{ for i in $$list; do echo "$$i"; done; \
|
||||
l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
|
||||
sed -n '/\.3[a-z]*$$/p'; \
|
||||
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \
|
||||
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
|
||||
dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir)
|
||||
install-man4: $(man_MANS)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list1=''; \
|
||||
list2='$(man_MANS)'; \
|
||||
test -n "$(man4dir)" \
|
||||
&& test -n "`echo $$list1$$list2`" \
|
||||
|| exit 0; \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(man4dir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(man4dir)" || exit 1; \
|
||||
{ for i in $$list1; do echo "$$i"; done; \
|
||||
if test -n "$$list2"; then \
|
||||
for i in $$list2; do echo "$$i"; done \
|
||||
| sed -n '/\.4[a-z]*$$/p'; \
|
||||
fi; \
|
||||
} | while read p; do \
|
||||
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; echo "$$p"; \
|
||||
done | \
|
||||
sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^4][0-9a-z]*$$,4,;x' \
|
||||
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
|
||||
sed 'N;N;s,\n, ,g' | { \
|
||||
list=; while read file base inst; do \
|
||||
if test "$$base" = "$$inst"; then list="$$list $$file"; else \
|
||||
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man4dir)/$$inst'"; \
|
||||
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man4dir)/$$inst" || exit $$?; \
|
||||
fi; \
|
||||
done; \
|
||||
for i in $$list; do echo "$$i"; done | $(am__base_list) | \
|
||||
while read files; do \
|
||||
test -z "$$files" || { \
|
||||
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man4dir)'"; \
|
||||
$(INSTALL_DATA) $$files "$(DESTDIR)$(man4dir)" || exit $$?; }; \
|
||||
done; }
|
||||
|
||||
uninstall-man4:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list=''; test -n "$(man4dir)" || exit 0; \
|
||||
files=`{ for i in $$list; do echo "$$i"; done; \
|
||||
l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
|
||||
sed -n '/\.4[a-z]*$$/p'; \
|
||||
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^4][0-9a-z]*$$,4,;x' \
|
||||
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
|
||||
dir='$(DESTDIR)$(man4dir)'; $(am__uninstall_files_from_dir)
|
||||
install-man5: $(man_MANS)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list1=''; \
|
||||
list2='$(man_MANS)'; \
|
||||
test -n "$(man5dir)" \
|
||||
&& test -n "`echo $$list1$$list2`" \
|
||||
|| exit 0; \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(man5dir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(man5dir)" || exit 1; \
|
||||
{ for i in $$list1; do echo "$$i"; done; \
|
||||
if test -n "$$list2"; then \
|
||||
for i in $$list2; do echo "$$i"; done \
|
||||
| sed -n '/\.5[a-z]*$$/p'; \
|
||||
fi; \
|
||||
} | while read p; do \
|
||||
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; echo "$$p"; \
|
||||
done | \
|
||||
sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
|
||||
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
|
||||
sed 'N;N;s,\n, ,g' | { \
|
||||
list=; while read file base inst; do \
|
||||
if test "$$base" = "$$inst"; then list="$$list $$file"; else \
|
||||
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \
|
||||
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst" || exit $$?; \
|
||||
fi; \
|
||||
done; \
|
||||
for i in $$list; do echo "$$i"; done | $(am__base_list) | \
|
||||
while read files; do \
|
||||
test -z "$$files" || { \
|
||||
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man5dir)'"; \
|
||||
$(INSTALL_DATA) $$files "$(DESTDIR)$(man5dir)" || exit $$?; }; \
|
||||
done; }
|
||||
|
||||
uninstall-man5:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list=''; test -n "$(man5dir)" || exit 0; \
|
||||
files=`{ for i in $$list; do echo "$$i"; done; \
|
||||
l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
|
||||
sed -n '/\.5[a-z]*$$/p'; \
|
||||
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
|
||||
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
|
||||
dir='$(DESTDIR)$(man5dir)'; $(am__uninstall_files_from_dir)
|
||||
tags TAGS:
|
||||
|
||||
ctags CTAGS:
|
||||
|
||||
cscope cscopelist:
|
||||
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(MANS)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(man4dir)" "$(DESTDIR)$(man5dir)"; do \
|
||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||
done
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am: install-man
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man: install-man1 install-man3 install-man4 install-man5
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-man
|
||||
|
||||
uninstall-man: uninstall-man1 uninstall-man3 uninstall-man4 \
|
||||
uninstall-man5
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
|
||||
cscopelist-am ctags-am distclean distclean-generic \
|
||||
distclean-libtool distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-man1 install-man3 install-man4 install-man5 \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags-am uninstall uninstall-am uninstall-man uninstall-man1 \
|
||||
uninstall-man3 uninstall-man4 uninstall-man5
|
||||
|
||||
|
||||
file.1: Makefile file.man
|
||||
@rm -f $@
|
||||
sed -e s@__CSECTION__@1@g \
|
||||
-e s@__FSECTION__@${fsect}@g \
|
||||
-e s@__VERSION__@${VERSION}@g \
|
||||
-e s@__MAGIC__@${MAGIC}@g $(srcdir)/file.man > $@
|
||||
|
||||
magic.${fsect}: Makefile magic.man
|
||||
@rm -f $@
|
||||
sed -e s@__CSECTION__@1@g \
|
||||
-e s@__FSECTION__@${fsect}@g \
|
||||
-e s@__VERSION__@${VERSION}@g \
|
||||
-e s@__MAGIC__@${MAGIC}@g $(srcdir)/magic.man > $@
|
||||
|
||||
libmagic.3: Makefile libmagic.man
|
||||
@rm -f $@
|
||||
sed -e s@__CSECTION__@1@g \
|
||||
-e s@__FSECTION__@${fsect}@g \
|
||||
-e s@__VERSION__@${VERSION}@g \
|
||||
-e s@__MAGIC__@${MAGIC}@g $(srcdir)/libmagic.man > $@
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
@@ -1,5 +1,5 @@
|
||||
.\" $File: file.man,v 1.79 2008/11/06 22:49:08 rrt Exp $
|
||||
.Dd October 9, 2008
|
||||
.\" $File: file.man,v 1.111 2014/12/16 23:18:40 christos Exp $
|
||||
.Dd December 16, 2014
|
||||
.Dt FILE __CSECTION__
|
||||
.Os
|
||||
.Sh NAME
|
||||
@@ -7,18 +7,23 @@
|
||||
.Nd determine file type
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Op Fl bchikLnNprsvz
|
||||
.Op Fl -mime-type
|
||||
.Op Fl -mime-encoding
|
||||
.Op Fl f Ar namefile
|
||||
.Bk -words
|
||||
.Op Fl bcEhiklLNnprsvz0
|
||||
.Op Fl Fl apple
|
||||
.Op Fl Fl mime-encoding
|
||||
.Op Fl Fl mime-type
|
||||
.Op Fl e Ar testname
|
||||
.Op Fl F Ar separator
|
||||
.Op Fl f Ar namefile
|
||||
.Op Fl m Ar magicfiles
|
||||
.Ar file
|
||||
.Op Fl P Ar name=value
|
||||
.Ar
|
||||
.Ek
|
||||
.Nm
|
||||
.Fl C
|
||||
.Op Fl m Ar magicfile
|
||||
.Op Fl m Ar magicfiles
|
||||
.Nm
|
||||
.Op Fl -help
|
||||
.Op Fl Fl help
|
||||
.Sh DESCRIPTION
|
||||
This manual page documents version __VERSION__ of the
|
||||
.Nm
|
||||
@@ -42,12 +47,12 @@ terminal),
|
||||
.Em executable
|
||||
(the file contains the result of compiling a program
|
||||
in a form understandable to some
|
||||
.Dv UNIX
|
||||
.Tn UNIX
|
||||
kernel or another),
|
||||
or
|
||||
.Em data
|
||||
meaning anything else (data is usually
|
||||
.Sq binary
|
||||
.Dq binary
|
||||
or non-printable).
|
||||
Exceptions are well-known file formats (core files, tar archives)
|
||||
that are known to contain binary data.
|
||||
@@ -55,12 +60,12 @@ When modifying magic files or the program itself, make sure to
|
||||
.Em "preserve these keywords" .
|
||||
Users depend on knowing that all the readable files in a directory
|
||||
have the word
|
||||
.Sq text
|
||||
.Dq text
|
||||
printed.
|
||||
Don't do as Berkeley did and change
|
||||
.Sq shell commands text
|
||||
.Dq shell commands text
|
||||
to
|
||||
.Sq shell script .
|
||||
.Dq shell script .
|
||||
.Pp
|
||||
The filesystem tests are based on examining the return from a
|
||||
.Xr stat 2
|
||||
@@ -70,8 +75,7 @@ or if it's some sort of special file.
|
||||
Any known file types appropriate to the system you are running on
|
||||
(sockets, symbolic links, or named pipes (FIFOs) on those systems that
|
||||
implement them)
|
||||
are intuited if they are defined in
|
||||
the system header file
|
||||
are intuited if they are defined in the system header file
|
||||
.In sys/stat.h .
|
||||
.Pp
|
||||
The magic tests are used to check for files with data in
|
||||
@@ -85,13 +89,14 @@ and possibly
|
||||
.In exec.h
|
||||
in the standard include directory.
|
||||
These files have a
|
||||
.Sq "magic number"
|
||||
.Dq "magic number"
|
||||
stored in a particular place
|
||||
near the beginning of the file that tells the
|
||||
.Dv UNIX operating system
|
||||
.Tn UNIX
|
||||
operating system
|
||||
that the file is a binary executable, and which of several types thereof.
|
||||
The concept of a
|
||||
.Sq "magic"
|
||||
.Dq "magic"
|
||||
has been applied by extension to data files.
|
||||
Any file with some invariant identifier at a small fixed
|
||||
offset into the file can usually be described in this way.
|
||||
@@ -100,7 +105,8 @@ magic file
|
||||
.Pa __MAGIC__.mgc ,
|
||||
or the files in the directory
|
||||
.Pa __MAGIC__
|
||||
if the compiled file does not exist. In addition, if
|
||||
if the compiled file does not exist.
|
||||
In addition, if
|
||||
.Pa $HOME/.magic.mgc
|
||||
or
|
||||
.Pa $HOME/.magic
|
||||
@@ -117,10 +123,10 @@ in each set.
|
||||
If a file passes any of these tests, its character set is reported.
|
||||
ASCII, ISO-8859-x, UTF-8, and extended-ASCII files are identified
|
||||
as
|
||||
.Sq text
|
||||
.Dq text
|
||||
because they will be mostly readable on nearly any terminal;
|
||||
UTF-16 and EBCDIC are only
|
||||
.Sq character data
|
||||
.Dq character data
|
||||
because, while
|
||||
they contain text, it is text that will require translation
|
||||
before it can be read.
|
||||
@@ -138,8 +144,8 @@ has determined the character set used in a text-type file,
|
||||
it will
|
||||
attempt to determine in what language the file is written.
|
||||
The language tests look for particular strings (cf.
|
||||
.In names.h
|
||||
) that can appear anywhere in the first few blocks of a file.
|
||||
.In names.h )
|
||||
that can appear anywhere in the first few blocks of a file.
|
||||
For example, the keyword
|
||||
.Em .br
|
||||
indicates that the file is most likely a
|
||||
@@ -156,37 +162,46 @@ archives).
|
||||
.Pp
|
||||
Any file that cannot be identified as having been written
|
||||
in any of the character sets listed above is simply said to be
|
||||
.Sq data .
|
||||
.Dq data .
|
||||
.Sh OPTIONS
|
||||
.Bl -tag -width indent
|
||||
.It Fl b , -brief
|
||||
.It Fl Fl apple
|
||||
Causes the file command to output the file type and creator code as
|
||||
used by older MacOS versions. The code consists of eight letters,
|
||||
the first describing the file type, the latter the creator.
|
||||
.It Fl b , Fl Fl brief
|
||||
Do not prepend filenames to output lines (brief mode).
|
||||
.It Fl c , -checking-printout
|
||||
.It Fl C , Fl Fl compile
|
||||
Write a
|
||||
.Pa magic.mgc
|
||||
output file that contains a pre-parsed version of the magic file or directory.
|
||||
.It Fl c , Fl Fl checking-printout
|
||||
Cause a checking printout of the parsed form of the magic file.
|
||||
This is usually used in conjunction with the
|
||||
.Fl m
|
||||
flag to debug a new magic file before installing it.
|
||||
.It Fl C , -compile
|
||||
Write a
|
||||
.Pa magic.mgc
|
||||
output file that contains a pre-parsed version of the magic file or directory.
|
||||
.It Fl e , -exclude Ar testname
|
||||
.It Fl E
|
||||
On filesystem errors (file not found etc), instead of handling the error
|
||||
as regular output as POSIX mandates and keep going, issue an error message
|
||||
and exit.
|
||||
.It Fl e , Fl Fl exclude Ar testname
|
||||
Exclude the test named in
|
||||
.Ar testname
|
||||
from the list of tests made to determine the file type. Valid test names
|
||||
are:
|
||||
.Bl -tag -width
|
||||
from the list of tests made to determine the file type.
|
||||
Valid test names are:
|
||||
.Bl -tag -width compress
|
||||
.It apptype
|
||||
.Dv EMX
|
||||
application type (only on EMX).
|
||||
.It text
|
||||
Various types of text files (this test will try to guess the text encoding, irrespective of the setting of the
|
||||
.It ascii
|
||||
Various types of text files (this test will try to guess the text
|
||||
encoding, irrespective of the setting of the
|
||||
.Sq encoding
|
||||
option).
|
||||
.It encoding
|
||||
Different text encodings for soft magic tests.
|
||||
.It tokens
|
||||
Looks for known tokens inside text files.
|
||||
Ignored for backwards compatibility.
|
||||
.It cdf
|
||||
Prints details of Compound Document Files.
|
||||
.It compress
|
||||
@@ -198,7 +213,12 @@ Consults magic files.
|
||||
.It tar
|
||||
Examines tar files.
|
||||
.El
|
||||
.It Fl f , -files-from Ar namefile
|
||||
.It Fl F , Fl Fl separator Ar separator
|
||||
Use the specified string as the separator between the filename and the
|
||||
file result returned.
|
||||
Defaults to
|
||||
.Sq \&: .
|
||||
.It Fl f , Fl Fl files-from Ar namefile
|
||||
Read the names of the files to be examined from
|
||||
.Ar namefile
|
||||
(one per line)
|
||||
@@ -209,71 +229,97 @@ or at least one filename argument must be present;
|
||||
to test the standard input, use
|
||||
.Sq -
|
||||
as a filename argument.
|
||||
.It Fl F , -separator Ar separator
|
||||
Use the specified string as the separator between the filename and the
|
||||
file result returned. Defaults to
|
||||
.Sq \&: .
|
||||
.It Fl h , -no-dereference
|
||||
Please note that
|
||||
.Ar namefile
|
||||
is unwrapped and the enclosed filenames are processed when this option is
|
||||
encountered and before any further options processing is done.
|
||||
This allows one to process multiple lists of files with different command line
|
||||
arguments on the same
|
||||
.Nm
|
||||
invocation.
|
||||
Thus if you want to set the delimiter, you need to do it before you specify
|
||||
the list of files, like:
|
||||
.Dq Fl F Ar @ Fl f Ar namefile ,
|
||||
instead of:
|
||||
.Dq Fl f Ar namefile Fl F Ar @ .
|
||||
.It Fl h , Fl Fl no-dereference
|
||||
option causes symlinks not to be followed
|
||||
(on systems that support symbolic links). This is the default if the
|
||||
environment variable
|
||||
(on systems that support symbolic links).
|
||||
This is the default if the environment variable
|
||||
.Dv POSIXLY_CORRECT
|
||||
is not defined.
|
||||
.It Fl i , -mime
|
||||
.It Fl i , Fl Fl mime
|
||||
Causes the file command to output mime type strings rather than the more
|
||||
traditional human readable ones. Thus it may say
|
||||
traditional human readable ones.
|
||||
Thus it may say
|
||||
.Sq text/plain; charset=us-ascii
|
||||
rather than
|
||||
.Sq ASCII text .
|
||||
In order for this option to work, file changes the way
|
||||
it handles files recognized by the command itself (such as many of the
|
||||
text file types, directories etc), and makes use of an alternative
|
||||
.Sq magic
|
||||
file.
|
||||
(See the FILES section, below).
|
||||
.It Fl -mime-type , -mime-encoding
|
||||
.Dq ASCII text .
|
||||
.It Fl Fl mime-type , Fl Fl mime-encoding
|
||||
Like
|
||||
.Fl i ,
|
||||
but print only the specified element(s).
|
||||
.It Fl k , -keep-going
|
||||
Don't stop at the first match, keep going. Subsequent matches will be
|
||||
.It Fl k , Fl Fl keep-going
|
||||
Don't stop at the first match, keep going.
|
||||
Subsequent matches will be
|
||||
have the string
|
||||
.Sq "\[rs]012\- "
|
||||
prepended.
|
||||
(If you want a newline, see the
|
||||
.Sq "\-r"
|
||||
.Fl r
|
||||
option.)
|
||||
.It Fl L , -dereference
|
||||
The magic pattern with the highest strength (see the
|
||||
.Fl l
|
||||
option) comes first.
|
||||
.It Fl l , Fl Fl list
|
||||
Shows a list of patterns and their strength sorted descending by
|
||||
.Xr magic 4
|
||||
strength
|
||||
which is used for the matching (see also the
|
||||
.Fl k
|
||||
option).
|
||||
.It Fl L , Fl Fl dereference
|
||||
option causes symlinks to be followed, as the like-named option in
|
||||
.Xr ls 1
|
||||
(on systems that support symbolic links).
|
||||
This is the default if the environment variable
|
||||
.Dv POSIXLY_CORRECT
|
||||
.Ev POSIXLY_CORRECT
|
||||
is defined.
|
||||
.It Fl m , -magic-file Ar list
|
||||
.It Fl m , Fl Fl magic-file Ar magicfiles
|
||||
Specify an alternate list of files and directories containing magic.
|
||||
This can be a single item, or a colon-separated list.
|
||||
If a compiled magic file is found alongside a file or directory, it will be used instead.
|
||||
.It Fl n , -no-buffer
|
||||
If a compiled magic file is found alongside a file or directory,
|
||||
it will be used instead.
|
||||
.It Fl N , Fl Fl no-pad
|
||||
Don't pad filenames so that they align in the output.
|
||||
.It Fl n , Fl Fl no-buffer
|
||||
Force stdout to be flushed after checking each file.
|
||||
This is only useful if checking a list of files.
|
||||
It is intended to be used by programs that want filetype output from a pipe.
|
||||
.It Fl N , -no-pad
|
||||
Don't pad filenames so that they align in the output.
|
||||
.It Fl p , -preserve-date
|
||||
.It Fl p , Fl Fl preserve-date
|
||||
On systems that support
|
||||
.Xr utime 2
|
||||
.Xr utime 3
|
||||
or
|
||||
.Xr utimes 2 ,
|
||||
attempt to preserve the access time of files analyzed, to pretend that
|
||||
.Nm
|
||||
never read them.
|
||||
.It Fl r , -raw
|
||||
.It Fl P , Fl Fl parameter Ar name=value
|
||||
Set various parameter limits.
|
||||
.Bl -column "elf_phnum" "Default" "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -offset indent
|
||||
.It Sy "Name" Ta Sy "Default" Ta Sy "Explanation"
|
||||
.It Li indir Ta 15 Ta recursion limit for indirect magic
|
||||
.It Li name Ta 30 Ta use count limit for name/use magic
|
||||
.It Li elf_notes Ta 256 Ta max ELF notes processed
|
||||
.It Li elf_phnum Ta 128 Ta max ELF program sections processed
|
||||
.It Li elf_shnum Ta 32768 Ta max ELF sections processed
|
||||
.El
|
||||
.It Fl r , Fl Fl raw
|
||||
Don't translate unprintable characters to \eooo.
|
||||
Normally
|
||||
.Nm
|
||||
translates unprintable characters to their octal representation.
|
||||
.It Fl s , -special-files
|
||||
.It Fl s , Fl Fl special-files
|
||||
Normally,
|
||||
.Nm
|
||||
only attempts to read and determine the type of argument files which
|
||||
@@ -293,16 +339,18 @@ This option also causes
|
||||
to disregard the file size as reported by
|
||||
.Xr stat 2
|
||||
since on some systems it reports a zero size for raw disk partitions.
|
||||
.It Fl v , -version
|
||||
.It Fl v , Fl Fl version
|
||||
Print the version of the program and exit.
|
||||
.It Fl z , -uncompress
|
||||
.It Fl z , Fl Fl uncompress
|
||||
Try to look inside compressed files.
|
||||
.It Fl 0 , -print0
|
||||
.It Fl 0 , Fl Fl print0
|
||||
Output a null character
|
||||
.Sq \e0
|
||||
after the end of the filename. Nice to
|
||||
after the end of the filename.
|
||||
Nice to
|
||||
.Xr cut 1
|
||||
the output. This does not affect the separator which is still printed.
|
||||
the output.
|
||||
This does not affect the separator, which is still printed.
|
||||
.It Fl -help
|
||||
Print a help message and exit.
|
||||
.El
|
||||
@@ -315,7 +363,7 @@ Directory containing default magic files.
|
||||
.El
|
||||
.Sh ENVIRONMENT
|
||||
The environment variable
|
||||
.Dv MAGIC
|
||||
.Ev MAGIC
|
||||
can be used to set the default magic file name.
|
||||
If that variable is set, then
|
||||
.Nm
|
||||
@@ -323,26 +371,32 @@ will not attempt to open
|
||||
.Pa $HOME/.magic .
|
||||
.Nm
|
||||
adds
|
||||
.Sq .mgc
|
||||
.Dq Pa .mgc
|
||||
to the value of this variable as appropriate.
|
||||
However,
|
||||
.Pa file
|
||||
has to exist in order for
|
||||
.Pa file.mime
|
||||
to be considered.
|
||||
The environment variable
|
||||
.Dv POSIXLY_CORRECT
|
||||
.Ev POSIXLY_CORRECT
|
||||
controls (on systems that support symbolic links), whether
|
||||
.Nm
|
||||
will attempt to follow symlinks or not. If set, then
|
||||
will attempt to follow symlinks or not.
|
||||
If set, then
|
||||
.Nm
|
||||
follows symlink, otherwise it does not. This is also controlled
|
||||
by the
|
||||
follows symlink, otherwise it does not.
|
||||
This is also controlled by the
|
||||
.Fl L
|
||||
and
|
||||
.Fl h
|
||||
options.
|
||||
.Sh SEE ALSO
|
||||
.Xr magic __FSECTION__ ,
|
||||
.Xr strings 1 ,
|
||||
.Xr hexdump 1 ,
|
||||
.Xr od 1 ,
|
||||
.Xr hexdump 1,
|
||||
.Xr file 1posix
|
||||
.Xr strings 1 ,
|
||||
.Xr fstyp 8
|
||||
.Sh STANDARDS CONFORMANCE
|
||||
This program is believed to exceed the System V Interface Definition
|
||||
of FILE(CMD), as near as one can determine from the vague language
|
||||
@@ -358,12 +412,12 @@ is that this version treats any white space
|
||||
as a delimiter, so that spaces in pattern strings must be escaped.
|
||||
For example,
|
||||
.Bd -literal -offset indent
|
||||
>10 string language impress\ (imPRESS data)
|
||||
\*[Gt]10 string language impress\ (imPRESS data)
|
||||
.Ed
|
||||
.Pp
|
||||
in an existing magic file would have to be changed to
|
||||
.Bd -literal -offset indent
|
||||
>10 string language\e impress (imPRESS data)
|
||||
\*[Gt]10 string language\e impress (imPRESS data)
|
||||
.Ed
|
||||
.Pp
|
||||
In addition, in this version, if a pattern string contains a backslash,
|
||||
@@ -381,13 +435,13 @@ in an existing magic file would have to be changed to
|
||||
SunOS releases 3.2 and later from Sun Microsystems include a
|
||||
.Nm
|
||||
command derived from the System V one, but with some extensions.
|
||||
My version differs from Sun's only in minor ways.
|
||||
This version differs from Sun's only in minor ways.
|
||||
It includes the extension of the
|
||||
.Sq &
|
||||
.Sq \*[Am]
|
||||
operator, used as,
|
||||
for example,
|
||||
.Bd -literal -offset indent
|
||||
>16 long&0x7fffffff >0 not stripped
|
||||
\*[Gt]16 long\*[Am]0x7fffffff \*[Gt]0 not stripped
|
||||
.Ed
|
||||
.Sh MAGIC DIRECTORY
|
||||
The magic file entries have been collected from various sources,
|
||||
@@ -405,13 +459,13 @@ If your old
|
||||
command uses a magic file,
|
||||
keep the old magic file around for comparison purposes
|
||||
(rename it to
|
||||
.Pa __MAGIC__.orig ).
|
||||
.Pa __MAGIC__.orig ) .
|
||||
.Sh EXAMPLES
|
||||
.Bd -literal -offset indent
|
||||
$ file file.c file /dev/{wd0a,hda}
|
||||
file.c: C program text
|
||||
file: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
|
||||
dynamically linked (uses shared libs), stripped
|
||||
dynamically linked (uses shared libs), stripped
|
||||
/dev/wd0a: block special (0/0)
|
||||
/dev/hda: block special (3/0)
|
||||
|
||||
@@ -450,33 +504,48 @@ the external list of magic types.
|
||||
This slowed the program down slightly but made it a lot more flexible.
|
||||
.Pp
|
||||
This program, based on the System V version,
|
||||
was written by Ian Darwin <[email protected]>
|
||||
was written by Ian Darwin
|
||||
.Aq [email protected]
|
||||
without looking at anybody else's source code.
|
||||
.Pp
|
||||
John Gilmore revised the code extensively, making it better than
|
||||
the first version.
|
||||
Geoff Collyer found several inadequacies
|
||||
and provided some magic file entries.
|
||||
Contributions by the `&' operator by Rob McMahon, [email protected], 1989.
|
||||
Contributions by the
|
||||
.Sq \*[Am]
|
||||
operator by Rob McMahon,
|
||||
.Aq [email protected] ,
|
||||
1989.
|
||||
.Pp
|
||||
Guy Harris, [email protected], made many changes from 1993 to the present.
|
||||
Guy Harris,
|
||||
.Aq [email protected] ,
|
||||
made many changes from 1993 to the present.
|
||||
1989.
|
||||
.Pp
|
||||
Primary development and maintenance from 1990 to the present by
|
||||
Christos Zoulas ([email protected]).
|
||||
Christos Zoulas
|
||||
.Aq [email protected] .
|
||||
.Pp
|
||||
Altered by Chris Lowth, [email protected], 2000:
|
||||
Handle the
|
||||
Altered by Chris Lowth
|
||||
.Aq [email protected] ,
|
||||
2000: handle the
|
||||
.Fl i
|
||||
option to output mime type strings, using an alternative
|
||||
magic file and internal logic.
|
||||
.Pp
|
||||
Altered by Eric Fischer ([email protected]), July, 2000,
|
||||
Altered by Eric Fischer
|
||||
.Aq [email protected] ,
|
||||
July, 2000,
|
||||
to identify character codes and attempt to identify the languages
|
||||
of non-ASCII files.
|
||||
.Pp
|
||||
Altered by Reuben Thomas ([email protected]), 2007 to 2008, to improve MIME
|
||||
support and merge MIME and non-MIME magic, support directories as well
|
||||
as files of magic, apply many bug fixes and improve the build system.
|
||||
Altered by Reuben Thomas
|
||||
.Aq [email protected] ,
|
||||
2007-2011, to improve MIME support, merge MIME and non-MIME magic,
|
||||
support directories as well as files of magic, apply many bug fixes,
|
||||
update and fix a lot of magic, improve the build system, improve the
|
||||
documentation, and rewrite the Python bindings in pure Python.
|
||||
.Pp
|
||||
The list of contributors to the
|
||||
.Sq magic
|
||||
@@ -487,63 +556,80 @@ Many contributors are listed in the source files.
|
||||
.Sh LEGAL NOTICE
|
||||
Copyright (c) Ian F. Darwin, Toronto, Canada, 1986-1999.
|
||||
Covered by the standard Berkeley Software Distribution copyright; see the file
|
||||
LEGAL.NOTICE in the source distribution.
|
||||
COPYING in the source distribution.
|
||||
.Pp
|
||||
The files
|
||||
.Dv tar.h
|
||||
.Pa tar.h
|
||||
and
|
||||
.Dv is_tar.c
|
||||
.Pa is_tar.c
|
||||
were written by John Gilmore from his public-domain
|
||||
.Xr tar 1
|
||||
program, and are not covered by the above license.
|
||||
.Sh BUGS
|
||||
.Pp
|
||||
There must be a better way to automate the construction of the Magic
|
||||
file from all the glop in Magdir.
|
||||
What is it?
|
||||
.Pp
|
||||
.Nm
|
||||
uses several algorithms that favor speed over accuracy,
|
||||
thus it can be misled about the contents of
|
||||
text
|
||||
files.
|
||||
.Pp
|
||||
The support for text files (primarily for programming languages)
|
||||
is simplistic, inefficient and requires recompilation to update.
|
||||
.Pp
|
||||
The list of keywords in
|
||||
.Dv ascmagic
|
||||
probably belongs in the Magic file.
|
||||
This could be done by using some keyword like
|
||||
.Sq *
|
||||
for the offset value.
|
||||
.Pp
|
||||
Complain about conflicts in the magic file entries.
|
||||
Make a rule that the magic entries sort based on file offset rather
|
||||
than position within the magic file?
|
||||
.Pp
|
||||
The program should provide a way to give an estimate
|
||||
of
|
||||
.Sq how good
|
||||
a guess is.
|
||||
We end up removing guesses (e.g.
|
||||
.Sq From\
|
||||
as first 5 chars of file) because
|
||||
they are not as good as other guesses (e.g.
|
||||
.Sq Newsgroups:
|
||||
versus
|
||||
.Sq Return-Path:
|
||||
).
|
||||
Still, if the others don't pan out, it should be possible to use the
|
||||
first guess.
|
||||
.Pp
|
||||
This manual page, and particularly this section, is too long.
|
||||
.Sh RETURN CODE
|
||||
.Nm
|
||||
returns 0 on success, and non-zero on error.
|
||||
.Sh BUGS
|
||||
.Pp
|
||||
Please report bugs and send patches to the bug tracker at
|
||||
.Pa http://bugs.gw.com/
|
||||
or the mailing list at
|
||||
.Aq [email protected]
|
||||
(visit
|
||||
.Pa http://mx.gw.com/mailman/listinfo/file
|
||||
first to subscribe).
|
||||
.Sh TODO
|
||||
.Pp
|
||||
Fix output so that tests for MIME and APPLE flags are not needed all
|
||||
over the place, and actual output is only done in one place.
|
||||
This needs a design.
|
||||
Suggestion: push possible outputs on to a list, then pick the
|
||||
last-pushed (most specific, one hopes) value at the end, or
|
||||
use a default if the list is empty.
|
||||
This should not slow down evaluation.
|
||||
.Pp
|
||||
Continue to squash all magic bugs.
|
||||
See Debian BTS for a good source.
|
||||
.Pp
|
||||
Store arbitrarily long strings, for example for %s patterns, so that
|
||||
they can be printed out.
|
||||
Fixes Debian bug #271672.
|
||||
Would require more complex store/load code in apprentice.
|
||||
.Pp
|
||||
Add syntax for relative offsets after current level (Debian bug #466037).
|
||||
.Pp
|
||||
Make file -ki work, i.e. give multiple MIME types.
|
||||
.Pp
|
||||
Add a zip library so we can peek inside Office2007 documents to
|
||||
figure out what they are.
|
||||
.Pp
|
||||
Add an option to print URLs for the sources of the file descriptions.
|
||||
.Pp
|
||||
Combine script searches and add a way to map executable names to MIME
|
||||
types (e.g. have a magic value for !:mime which causes the resulting
|
||||
string to be looked up in a table).
|
||||
This would avoid adding the same magic repeatedly for each new
|
||||
hash-bang interpreter.
|
||||
.Pp
|
||||
Fix
|
||||
.Dq name
|
||||
and
|
||||
.Dq use
|
||||
to check for consistency at compile time (duplicate
|
||||
.Dq name ,
|
||||
.Dq use
|
||||
pointing to undefined
|
||||
.Dq name
|
||||
).
|
||||
Make
|
||||
.Dq name
|
||||
/
|
||||
.Dq use
|
||||
more efficient by keeping a sorted list of names.
|
||||
Special-case ^ to flip endianness in the parser so that it does not
|
||||
have to be escaped, and document it.
|
||||
.Sh AVAILABILITY
|
||||
You can obtain the original author's latest version by anonymous FTP
|
||||
on
|
||||
.Dv ftp.astron.com
|
||||
.Pa ftp.astron.com
|
||||
in the directory
|
||||
.Dv /pub/file/file-X.YZ.tar.gz
|
||||
.Pa /pub/file/file-X.YZ.tar.gz .
|
||||
@@ -0,0 +1,383 @@
|
||||
.\" $File: libmagic.man,v 1.34 2014/12/16 23:18:40 christos Exp $
|
||||
.\"
|
||||
.\" 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.
|
||||
.\"
|
||||
.Dd December 16, 2014
|
||||
.Dt LIBMAGIC 3
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm magic_open ,
|
||||
.Nm magic_close ,
|
||||
.Nm magic_error ,
|
||||
.Nm magic_errno ,
|
||||
.Nm magic_descriptor ,
|
||||
.Nm magic_buffer ,
|
||||
.Nm magic_setflags ,
|
||||
.Nm magic_check ,
|
||||
.Nm magic_compile ,
|
||||
.Nm magic_list ,
|
||||
.Nm magic_load ,
|
||||
.Nm magic_load_buffers ,
|
||||
.Nm magic_setparam ,
|
||||
.Nm magic_getparam ,
|
||||
.Nm magic_version
|
||||
.Nd Magic number recognition library
|
||||
.Sh LIBRARY
|
||||
.Lb libmagic
|
||||
.Sh SYNOPSIS
|
||||
.In magic.h
|
||||
.Ft magic_t
|
||||
.Fn magic_open "int flags"
|
||||
.Ft void
|
||||
.Fn magic_close "magic_t cookie"
|
||||
.Ft const char *
|
||||
.Fn magic_error "magic_t cookie"
|
||||
.Ft int
|
||||
.Fn magic_errno "magic_t cookie"
|
||||
.Ft const char *
|
||||
.Fn magic_descriptor "magic_t cookie" "int fd"
|
||||
.Ft const char *
|
||||
.Fn magic_file "magic_t cookie" "const char *filename"
|
||||
.Ft const char *
|
||||
.Fn magic_buffer "magic_t cookie" "const void *buffer" "size_t length"
|
||||
.Ft int
|
||||
.Fn magic_setflags "magic_t cookie" "int flags"
|
||||
.Ft int
|
||||
.Fn magic_check "magic_t cookie" "const char *filename"
|
||||
.Ft int
|
||||
.Fn magic_compile "magic_t cookie" "const char *filename"
|
||||
.Ft int
|
||||
.Fn magic_list "magic_t cookie" "const char *filename"
|
||||
.Ft int
|
||||
.Fn magic_load "magic_t cookie" "const char *filename"
|
||||
.Ft int
|
||||
.Fn magic_load_buffers "magic_t cookie" "void **buffers" "size_t *sizes" "size_t nbuffers"
|
||||
.Ft int
|
||||
.Fn magic_getparam "magic_t cookie" "int param" "void *value"
|
||||
.Ft int
|
||||
.Fn magic_setparam "magic_t cookie" "int param" "const void *value"
|
||||
.Ft int
|
||||
.Fn magic_version "void"
|
||||
.Sh DESCRIPTION
|
||||
These functions
|
||||
operate on the magic database file
|
||||
which is described
|
||||
in
|
||||
.Xr magic __FSECTION__ .
|
||||
.Pp
|
||||
The function
|
||||
.Fn magic_open
|
||||
creates a magic cookie pointer and returns it.
|
||||
It returns
|
||||
.Dv NULL
|
||||
if there was an error allocating the magic cookie.
|
||||
The
|
||||
.Ar flags
|
||||
argument specifies how the other magic functions should behave:
|
||||
.Bl -tag -width MAGIC_COMPRESS
|
||||
.It Dv MAGIC_NONE
|
||||
No special handling.
|
||||
.It Dv MAGIC_DEBUG
|
||||
Print debugging messages to stderr.
|
||||
.It Dv MAGIC_SYMLINK
|
||||
If the file queried is a symlink, follow it.
|
||||
.It Dv MAGIC_COMPRESS
|
||||
If the file is compressed, unpack it and look at the contents.
|
||||
.It Dv MAGIC_DEVICES
|
||||
If the file is a block or character special device, then open the device
|
||||
and try to look in its contents.
|
||||
.It Dv MAGIC_MIME_TYPE
|
||||
Return a MIME type string, instead of a textual description.
|
||||
.It Dv MAGIC_MIME_ENCODING
|
||||
Return a MIME encoding, instead of a textual description.
|
||||
.It Dv MAGIC_MIME
|
||||
A shorthand for MAGIC_MIME_TYPE | MAGIC_MIME_ENCODING.
|
||||
.It Dv MAGIC_CONTINUE
|
||||
Return all matches, not just the first.
|
||||
.It Dv MAGIC_CHECK
|
||||
Check the magic database for consistency and print warnings to stderr.
|
||||
.It Dv MAGIC_PRESERVE_ATIME
|
||||
On systems that support
|
||||
.Xr utime 3
|
||||
or
|
||||
.Xr utimes 2 ,
|
||||
attempt to preserve the access time of files analysed.
|
||||
.It Dv MAGIC_RAW
|
||||
Don't translate unprintable characters to a \eooo octal representation.
|
||||
.It Dv MAGIC_ERROR
|
||||
Treat operating system errors while trying to open files and follow symlinks
|
||||
as real errors, instead of printing them in the magic buffer.
|
||||
.It Dv MAGIC_APPLE
|
||||
Return the Apple creator and type.
|
||||
.It Dv MAGIC_NO_CHECK_APPTYPE
|
||||
Don't check for
|
||||
.Dv EMX
|
||||
application type (only on EMX).
|
||||
.It Dv MAGIC_NO_CHECK_CDF
|
||||
Don't get extra information on MS Composite Document Files.
|
||||
.It Dv MAGIC_NO_CHECK_COMPRESS
|
||||
Don't look inside compressed files.
|
||||
.It Dv MAGIC_NO_CHECK_ELF
|
||||
Don't print ELF details.
|
||||
.It Dv MAGIC_NO_CHECK_ENCODING
|
||||
Don't check text encodings.
|
||||
.It Dv MAGIC_NO_CHECK_SOFT
|
||||
Don't consult magic files.
|
||||
.It Dv MAGIC_NO_CHECK_TAR
|
||||
Don't examine tar files.
|
||||
.It Dv MAGIC_NO_CHECK_TEXT
|
||||
Don't check for various types of text files.
|
||||
.It Dv MAGIC_NO_CHECK_TOKENS
|
||||
Don't look for known tokens inside ascii files.
|
||||
.El
|
||||
.Pp
|
||||
The
|
||||
.Fn magic_close
|
||||
function closes the
|
||||
.Xr magic __FSECTION__
|
||||
database and deallocates any resources used.
|
||||
.Pp
|
||||
The
|
||||
.Fn magic_error
|
||||
function returns a textual explanation of the last error, or
|
||||
.Dv NULL
|
||||
if there was no error.
|
||||
.Pp
|
||||
The
|
||||
.Fn magic_errno
|
||||
function returns the last operating system error number
|
||||
.Pq Xr errno 2
|
||||
that was encountered by a system call.
|
||||
.Pp
|
||||
The
|
||||
.Fn magic_file
|
||||
function returns a textual description of the contents of the
|
||||
.Ar filename
|
||||
argument, or
|
||||
.Dv NULL
|
||||
if an error occurred.
|
||||
If the
|
||||
.Ar filename
|
||||
is
|
||||
.Dv NULL ,
|
||||
then stdin is used.
|
||||
.Pp
|
||||
The
|
||||
.Fn magic_descriptor
|
||||
function returns a textual description of the contents of the
|
||||
.Ar fd
|
||||
argument, or
|
||||
.Dv NULL
|
||||
if an error occurred.
|
||||
.Pp
|
||||
The
|
||||
.Fn magic_buffer
|
||||
function returns a textual description of the contents of the
|
||||
.Ar buffer
|
||||
argument with
|
||||
.Ar length
|
||||
bytes size.
|
||||
.Pp
|
||||
The
|
||||
.Fn magic_setflags
|
||||
function sets the
|
||||
.Ar flags
|
||||
described above.
|
||||
Note that using both MIME flags together can also
|
||||
return extra information on the charset.
|
||||
.Pp
|
||||
The
|
||||
.Fn magic_check
|
||||
function can be used to check the validity of entries in the colon
|
||||
separated database files passed in as
|
||||
.Ar filename ,
|
||||
or
|
||||
.Dv NULL
|
||||
for the default database.
|
||||
It returns 0 on success and \-1 on failure.
|
||||
.Pp
|
||||
The
|
||||
.Fn magic_compile
|
||||
function can be used to compile the the colon
|
||||
separated list of database files passed in as
|
||||
.Ar filename ,
|
||||
or
|
||||
.Dv NULL
|
||||
for the default database.
|
||||
It returns 0 on success and \-1 on failure.
|
||||
The compiled files created are named from the
|
||||
.Xr basename 1
|
||||
of each file argument with
|
||||
.Dq .mgc
|
||||
appended to it.
|
||||
.Pp
|
||||
The
|
||||
.Fn magic_list
|
||||
function dumps all magic entries in a human readable format,
|
||||
dumping first the entries that are matched against binary files and then the
|
||||
ones that match text files.
|
||||
It takes and optional
|
||||
.Fa filename
|
||||
argument which is a colon separated list of database files, or
|
||||
.Dv NULL
|
||||
for the default database.
|
||||
.Pp
|
||||
The
|
||||
.Fn magic_load
|
||||
function must be used to load the the colon
|
||||
separated list of database files passed in as
|
||||
.Ar filename ,
|
||||
or
|
||||
.Dv NULL
|
||||
for the default database file before any magic queries can performed.
|
||||
.Pp
|
||||
The default database file is named by the MAGIC environment variable.
|
||||
If that variable is not set, the default database file name is __MAGIC__.
|
||||
.Fn magic_load
|
||||
adds
|
||||
.Dq .mgc
|
||||
to the database filename as appropriate.
|
||||
.Pp
|
||||
The
|
||||
.Fn magic_load_buffers
|
||||
function takes an array of size
|
||||
.Fa nbuffers
|
||||
of
|
||||
.Fa buffers
|
||||
with a respective size for each in the array of
|
||||
.Fa sizes
|
||||
loaded with the contents of the magic databases from the filesystem.
|
||||
This function can be used in environment where the magic library does
|
||||
not have direct access to the filesystem, but can access the magic
|
||||
database via shared memory or other IPC means.
|
||||
.Pp
|
||||
The
|
||||
.Fn magic_getparam
|
||||
and
|
||||
.Fn magic_setparam
|
||||
allow getting and setting various limits related to the the magic
|
||||
library.
|
||||
.Bl -column "MAGIC_PARAM_ELF_PHNUM_MAX" "size_t" "Default" -offset indent
|
||||
.It Sy "Parameter" Ta Sy "Type" Ta Sy "Default"
|
||||
.It Li MAGIC_PARAM_INDIR_MAX Ta size_t Ta 15
|
||||
.It Li MAGIC_PARAM_NAME_MAX Ta size_t Ta 30
|
||||
.It Li MAGIC_PARAM_ELF_NOTES_MAX Ta size_t Ta 256
|
||||
.It Li MAGIC_PARAM_ELF_PHNUM_MAX Ta size_t Ta 128
|
||||
.It Li MAGIC_PARAM_ELF_SHNUM_MAX Ta size_t Ta 32768
|
||||
.El
|
||||
.Pp
|
||||
The
|
||||
.Dv MAGIC_PARAM_INDIR_RECURSION
|
||||
parameter controls how many levels of recursion will be followed for
|
||||
indirect magic entries.
|
||||
.Pp
|
||||
The
|
||||
.Dv MAGIC_PARAM_NAME_RECURSION
|
||||
parameter controls how many levels of recursion will be followed for
|
||||
for name/use calls.
|
||||
.Pp
|
||||
The
|
||||
.Dv MAGIC_PARAM_NAME_MAX
|
||||
parameter controls the maximum number of calls for name/use.
|
||||
.Pp
|
||||
The
|
||||
.Dv MAGIC_PARAM_NOTES_MAX
|
||||
parameter controls how many ELF notes will be processed.
|
||||
.Pp
|
||||
The
|
||||
.Dv MAGIC_PARAM_PHNUM_MAX
|
||||
parameter controls how many ELF program sections will be processed.
|
||||
.Pp
|
||||
The
|
||||
.Dv MAGIC_PARAM_SHNUM_MAX
|
||||
parameter controls how many ELF sections will be processed.
|
||||
.Pp
|
||||
The
|
||||
.Fn magic_version
|
||||
command returns the version number of this library which is compiled into
|
||||
the shared library using the constant
|
||||
.Dv MAGIC_VERSION
|
||||
from
|
||||
.In magic.h .
|
||||
This can be used by client programs to verify that the version they compile
|
||||
against is the same as the version that they run against.
|
||||
.Sh RETURN VALUES
|
||||
The function
|
||||
.Fn magic_open
|
||||
returns a magic cookie on success and
|
||||
.Dv NULL
|
||||
on failure setting errno to an appropriate value.
|
||||
It will set errno to
|
||||
.Er EINVAL
|
||||
if an unsupported value for flags was given.
|
||||
The
|
||||
.Fn magic_list ,
|
||||
.Fn magic_load ,
|
||||
.Fn magic_compile ,
|
||||
and
|
||||
.Fn magic_check
|
||||
functions return 0 on success and \-1 on failure.
|
||||
The
|
||||
.Fn magic_buffer ,
|
||||
.Fn magic_getpath ,
|
||||
and
|
||||
.Fn magic_file ,
|
||||
functions return a string on success and
|
||||
.Dv NULL
|
||||
on failure.
|
||||
The
|
||||
.Fn magic_error
|
||||
function returns a textual description of the errors of the above
|
||||
functions, or
|
||||
.Dv NULL
|
||||
if there was no error.
|
||||
The
|
||||
.Fn magic_version
|
||||
always returns the version number of the library.
|
||||
Finally,
|
||||
.Fn magic_setflags
|
||||
returns \-1 on systems that don't support
|
||||
.Xr utime 3 ,
|
||||
or
|
||||
.Xr utimes 2
|
||||
when
|
||||
.Dv MAGIC_PRESERVE_ATIME
|
||||
is set.
|
||||
.Sh FILES
|
||||
.Bl -tag -width __MAGIC__.mgc -compact
|
||||
.It Pa __MAGIC__
|
||||
The non-compiled default magic database.
|
||||
.It Pa __MAGIC__.mgc
|
||||
The compiled default magic database.
|
||||
.El
|
||||
.Sh SEE ALSO
|
||||
.Xr file __CSECTION__ ,
|
||||
.Xr magic __FSECTION__
|
||||
.Sh AUTHORS
|
||||
.An M\(oans Rullg\(oard
|
||||
Initial libmagic implementation, and configuration.
|
||||
.An Christos Zoulas
|
||||
API cleanup, error code and allocation handling.
|
||||
@@ -1,5 +1,5 @@
|
||||
.\" $File: magic.man,v 1.59 2008/11/06 23:22:53 christos Exp $
|
||||
.Dd August 30, 2008
|
||||
.\" $File: magic.man,v 1.85 2015/01/01 17:07:34 christos Exp $
|
||||
.Dd January 1, 2015
|
||||
.Dt MAGIC __FSECTION__
|
||||
.Os
|
||||
.\" install as magic.4 on USG, magic.5 on V7, Berkeley and Linux systems.
|
||||
@@ -51,9 +51,9 @@ A 64-bit double precision IEEE floating point number in this machine's native by
|
||||
.It Dv string
|
||||
A string of bytes.
|
||||
The string type specification can be optionally followed
|
||||
by /[Bbc]*.
|
||||
by /[WwcCtbT]*.
|
||||
The
|
||||
.Dq B
|
||||
.Dq W
|
||||
flag compacts whitespace in the target, which must
|
||||
contain at least one whitespace character.
|
||||
If the magic has
|
||||
@@ -62,18 +62,59 @@ consecutive blanks, the target needs at least
|
||||
.Dv n
|
||||
consecutive blanks to match.
|
||||
The
|
||||
.Dq b
|
||||
flag treats every blank in the target as an optional blank.
|
||||
Finally the
|
||||
.Dq w
|
||||
flag treats every blank in the magic as an optional blank.
|
||||
The
|
||||
.Dq c
|
||||
flag, specifies case insensitive matching: lowercase
|
||||
flag specifies case insensitive matching: lower case
|
||||
characters in the magic match both lower and upper case characters in the
|
||||
target, whereas upper case characters in the magic only match uppercase
|
||||
target, whereas upper case characters in the magic only match upper case
|
||||
characters in the target.
|
||||
The
|
||||
.Dq C
|
||||
flag specifies case insensitive matching: upper case
|
||||
characters in the magic match both lower and upper case characters in the
|
||||
target, whereas lower case characters in the magic only match upper case
|
||||
characters in the target.
|
||||
To do a complete case insensitive match, specify both
|
||||
.Dq c
|
||||
and
|
||||
.Dq C .
|
||||
The
|
||||
.Dq t
|
||||
flag forces the test to be done for text files, while the
|
||||
.Dq b
|
||||
flag forces the test to be done for binary files.
|
||||
The
|
||||
.Dq T
|
||||
flag causes the string to be trimmed, i.e. leading and trailing whitespace
|
||||
is deleted before the string is printed.
|
||||
.It Dv pstring
|
||||
A Pascal-style string where the first byte is interpreted as the an
|
||||
A Pascal-style string where the first byte/short/int is interpreted as the
|
||||
unsigned length.
|
||||
The length defaults to byte and can be specified as a modifier.
|
||||
The following modifiers are supported:
|
||||
.Bl -tag -compact -width B
|
||||
.It B
|
||||
A byte length (default).
|
||||
.It H
|
||||
A 2 byte big endian length.
|
||||
.It h
|
||||
A 2 byte big little length.
|
||||
.It L
|
||||
A 4 byte big endian length.
|
||||
.It l
|
||||
A 4 byte big little length.
|
||||
.It J
|
||||
The length includes itself in its count.
|
||||
.El
|
||||
The string is not NUL terminated.
|
||||
.Dq J
|
||||
is used rather than the more
|
||||
valuable
|
||||
.Dq I
|
||||
because this type of length is a feature of the JPEG
|
||||
format.
|
||||
.It Dv date
|
||||
A four-byte value interpreted as a UNIX date.
|
||||
.It Dv qdate
|
||||
@@ -84,6 +125,8 @@ local time rather than UTC.
|
||||
.It Dv qldate
|
||||
An eight-byte value interpreted as a UNIX-style date, but interpreted as
|
||||
local time rather than UTC.
|
||||
.It Dv qwdate
|
||||
An eight-byte value interpreted as a Windows-style date.
|
||||
.It Dv beid3
|
||||
A 32-bit ID3 length in big-endian byte order.
|
||||
.It Dv beshort
|
||||
@@ -110,6 +153,9 @@ than UTC.
|
||||
An eight-byte value in big-endian byte order,
|
||||
interpreted as a UNIX-style date, but interpreted as local time rather
|
||||
than UTC.
|
||||
.It Dv beqwdate
|
||||
An eight-byte value in big-endian byte order,
|
||||
interpreted as a Windows-style date.
|
||||
.It Dv bestring16
|
||||
A two-byte unicode (UCS16) string in big-endian byte order.
|
||||
.It Dv leid3
|
||||
@@ -138,6 +184,9 @@ than UTC.
|
||||
An eight-byte value in little-endian byte order,
|
||||
interpreted as a UNIX-style date, but interpreted as local time rather
|
||||
than UTC.
|
||||
.It Dv leqwdate
|
||||
An eight-byte value in little-endian byte order,
|
||||
interpreted as a Windows-style date.
|
||||
.It Dv lestring16
|
||||
A two-byte unicode (UCS16) string in little-endian byte order.
|
||||
.It Dv melong
|
||||
@@ -151,56 +200,164 @@ interpreted as a UNIX-style date, but interpreted as local time rather
|
||||
than UTC.
|
||||
.It Dv indirect
|
||||
Starting at the given offset, consult the magic database again.
|
||||
The offset of th
|
||||
.Dv indirect
|
||||
magic is by default absolute in the file, but one can specify
|
||||
.Dv /r
|
||||
to indicate that the offset is relative from the beginning of the entry.
|
||||
.It Dv name
|
||||
Define a
|
||||
.Dq named
|
||||
magic instance that can be called from another
|
||||
.Dv use
|
||||
magic entry, like a subroutine call.
|
||||
Named instance direct magic offsets are relative to the offset of the
|
||||
previous matched entry, but indirect offsets are relative to the beginning
|
||||
of the file as usual.
|
||||
Named magic entries always match.
|
||||
.It Dv use
|
||||
Recursively call the named magic starting from the current offset.
|
||||
If the name of the referenced begins with a
|
||||
.Dv ^
|
||||
then the endianness of the magic is switched; if the magic mentioned
|
||||
.Dv leshort
|
||||
for example,
|
||||
it is treated as
|
||||
.Dv beshort
|
||||
and vice versa.
|
||||
This is useful to avoid duplicating the rules for different endianness.
|
||||
.It Dv regex
|
||||
A regular expression match in extended POSIX regular expression syntax
|
||||
(like egrep). Regular expressions can take exponential time to
|
||||
process, and their performance is hard to predict, so their use is
|
||||
discouraged. When used in production environments, their performance
|
||||
should be carefully checked. The type specification can be optionally
|
||||
followed by
|
||||
.Dv /[c][s] .
|
||||
(like egrep).
|
||||
Regular expressions can take exponential time to process, and their
|
||||
performance is hard to predict, so their use is discouraged.
|
||||
When used in production environments, their performance
|
||||
should be carefully checked.
|
||||
The size of the string to search should also be limited by specifying
|
||||
.Dv /<length> ,
|
||||
to avoid performance issues scanning long files.
|
||||
The type specification can also be optionally followed by
|
||||
.Dv /[c][s][l] .
|
||||
The
|
||||
.Dq c
|
||||
flag makes the match case insensitive, while the
|
||||
.Dq s
|
||||
flag update the offset to the start offset of the match, rather than the end.
|
||||
The regular expression is tested against line
|
||||
.Dv N + 1
|
||||
onwards, where
|
||||
.Dv N
|
||||
is the given offset.
|
||||
Line endings are assumed to be in the machine's native format.
|
||||
The
|
||||
.Dq l
|
||||
modifier, changes the limit of length to mean number of lines instead of a
|
||||
byte count.
|
||||
Lines are delimited by the platforms native line delimiter.
|
||||
When a line count is specified, an implicit byte count also computed assuming
|
||||
each line is 80 characters long.
|
||||
If neither a byte or line count is specified, the search is limited automatically
|
||||
to 8KiB.
|
||||
.Dv ^
|
||||
and
|
||||
.Dv $
|
||||
match the beginning and end of individual lines, respectively,
|
||||
not beginning and end of file.
|
||||
.It Dv search
|
||||
A literal string search starting at the given offset. The same
|
||||
modifier flags can be used as for string patterns. The modifier flags
|
||||
(if any) must be followed by
|
||||
.Dv /number
|
||||
the range, that is, the number of positions at which the match will be
|
||||
attempted, starting from the start offset. This is suitable for
|
||||
A literal string search starting at the given offset.
|
||||
The same modifier flags can be used as for string patterns.
|
||||
The search expression must contain the range in the form
|
||||
.Dv /number,
|
||||
that is the number of positions at which the match will be
|
||||
attempted, starting from the start offset.
|
||||
This is suitable for
|
||||
searching larger binary expressions with variable offsets, using
|
||||
.Dv \e
|
||||
escapes for special characters. The offset works as for regex.
|
||||
escapes for special characters.
|
||||
The order of modifier and number is not relevant.
|
||||
.It Dv default
|
||||
This is intended to be used with the test
|
||||
.Em x
|
||||
(which is always true) and a message that is to be used if there are
|
||||
no other matches.
|
||||
(which is always true) and it has no type.
|
||||
It matches when no other test at that continuation level has matched before.
|
||||
Clearing that matched tests for a continuation level, can be done using the
|
||||
.Dv clear
|
||||
test.
|
||||
.It Dv clear
|
||||
This test is always true and clears the match flag for that continuation level.
|
||||
It is intended to be used with the
|
||||
.Dv default
|
||||
test.
|
||||
.El
|
||||
.Pp
|
||||
For compatibility with the Single
|
||||
.Ux
|
||||
Standard, the type specifiers
|
||||
.Dv dC
|
||||
and
|
||||
.Dv d1
|
||||
are equivalent to
|
||||
.Dv byte ,
|
||||
the type specifiers
|
||||
.Dv uC
|
||||
and
|
||||
.Dv u1
|
||||
are equivalent to
|
||||
.Dv ubyte ,
|
||||
the type specifiers
|
||||
.Dv dS
|
||||
and
|
||||
.Dv d2
|
||||
are equivalent to
|
||||
.Dv short ,
|
||||
the type specifiers
|
||||
.Dv uS
|
||||
and
|
||||
.Dv u2
|
||||
are equivalent to
|
||||
.Dv ushort ,
|
||||
the type specifiers
|
||||
.Dv dI ,
|
||||
.Dv dL ,
|
||||
and
|
||||
.Dv d4
|
||||
are equivalent to
|
||||
.Dv long ,
|
||||
the type specifiers
|
||||
.Dv uI ,
|
||||
.Dv uL ,
|
||||
and
|
||||
.Dv u4
|
||||
are equivalent to
|
||||
.Dv ulong ,
|
||||
the type specifier
|
||||
.Dv d8
|
||||
is equivalent to
|
||||
.Dv quad ,
|
||||
the type specifier
|
||||
.Dv u8
|
||||
is equivalent to
|
||||
.Dv uquad ,
|
||||
and the type specifier
|
||||
.Dv s
|
||||
is equivalent to
|
||||
.Dv string .
|
||||
In addition, the type specifier
|
||||
.Dv dQ
|
||||
is equivalent to
|
||||
.Dv quad
|
||||
and the type specifier
|
||||
.Dv uQ
|
||||
is equivalent to
|
||||
.Dv uquad .
|
||||
.Pp
|
||||
Each top-level magic pattern (see below for an explanation of levels)
|
||||
is classified as text or binary according to the types used. Types
|
||||
is classified as text or binary according to the types used.
|
||||
Types
|
||||
.Dq regex
|
||||
and
|
||||
.Dq search
|
||||
are classified as text tests, unless non-printable characters are used
|
||||
in the pattern. All other tests are classified as binary. A top-level
|
||||
in the pattern.
|
||||
All other tests are classified as binary.
|
||||
A top-level
|
||||
pattern is considered to be a test text when all its patterns are text
|
||||
patterns; otherwise, it is considered to be a binary pattern. When
|
||||
patterns; otherwise, it is considered to be a binary pattern.
|
||||
When
|
||||
matching a file, binary patterns are tried first; if no match is
|
||||
found, and the file looks like text, then its encoding is determined
|
||||
and the text patterns are tried.
|
||||
@@ -263,6 +420,9 @@ is octal, and
|
||||
.Dv 0x13
|
||||
is hexadecimal.
|
||||
.Pp
|
||||
Numeric operations are not performed on date types, instead the numeric
|
||||
value is interpreted as an offset.
|
||||
.Pp
|
||||
For string values, the string from the
|
||||
file must match the specified string.
|
||||
The operators
|
||||
@@ -280,10 +440,13 @@ then print the string), with
|
||||
.Em \*[Gt]\e0
|
||||
(because all non-empty strings are greater than the empty string).
|
||||
.Pp
|
||||
Dates are treated as numerical values in the respective internal
|
||||
representation.
|
||||
.Pp
|
||||
The special test
|
||||
.Em x
|
||||
always evaluates to true.
|
||||
.Dv message
|
||||
.It Dv message
|
||||
The message to be printed if the comparison succeeds.
|
||||
If the string contains a
|
||||
.Xr printf 3
|
||||
@@ -297,14 +460,14 @@ space.
|
||||
.El
|
||||
.Pp
|
||||
An APPLE 4+4 character APPLE creator and type can be specified as:
|
||||
.Bd -literal -offset indent
|
||||
.Bd -literal -offset indent
|
||||
!:apple CREATYPE
|
||||
.Ed
|
||||
.Pp
|
||||
A MIME type is given on a separate line, which must be the next
|
||||
non-blank or comment line after the magic line that identifies the
|
||||
file type, and has the following format:
|
||||
.Bd -literal -offset indent
|
||||
.Bd -literal -offset indent
|
||||
!:mime MIMETYPE
|
||||
.Ed
|
||||
.Pp
|
||||
@@ -314,13 +477,13 @@ followed by the MIME type.
|
||||
.Pp
|
||||
An optional strength can be supplied on a separate line which refers to
|
||||
the current magic description using the following format:
|
||||
.Bd -literal -offset indent
|
||||
.Bd -literal -offset indent
|
||||
!:strength OP VALUE
|
||||
.Ed
|
||||
.Pp
|
||||
The operand
|
||||
.Dv OP
|
||||
can be:
|
||||
can be:
|
||||
.Dv + ,
|
||||
.Dv - ,
|
||||
.Dv * ,
|
||||
@@ -344,11 +507,11 @@ on the line indicates the level of the test; a line with no
|
||||
.Em \*[Gt]
|
||||
at the beginning is considered to be at level 0.
|
||||
Tests are arranged in a tree-like hierarchy:
|
||||
If a the test on a line at level
|
||||
if the test on a line at level
|
||||
.Em n
|
||||
succeeds, all following tests at level
|
||||
.Em n+1
|
||||
are performed, and the messages printed if the tests succeed, untile a line
|
||||
are performed, and the messages printed if the tests succeed, until a line
|
||||
with level
|
||||
.Em n
|
||||
(or less) appears.
|
||||
@@ -365,7 +528,7 @@ being examined.
|
||||
If the first character following the last
|
||||
.Em \*[Gt]
|
||||
is a
|
||||
.Em (
|
||||
.Em \&(
|
||||
then the string after the parenthesis is interpreted as an indirect offset.
|
||||
That means that the number after the parenthesis is used as an offset in
|
||||
the file.
|
||||
@@ -467,7 +630,7 @@ Or even both!
|
||||
\*[Gt]\*[Gt]\*[Gt]\*[Am](\*[Am]0x54.l-3) string UNACE \eb, ACE self-extracting archive
|
||||
.Ed
|
||||
.Pp
|
||||
Finally, if you have to deal with offset/length pairs in your file, even the
|
||||
If you have to deal with offset/length pairs in your file, even the
|
||||
second value in a parenthesized expression can be taken from the file itself,
|
||||
using another set of parentheses.
|
||||
Note that this additional indirect offset is always relative to the
|
||||
@@ -482,6 +645,18 @@ start of the main indirect offset.
|
||||
# these are located 14 and 10 bytes after the section name
|
||||
\*[Gt]\*[Gt]\*[Gt]\*[Gt](\*[Am]0xe.l+(-4)) string PK\e3\e4 \eb, ZIP self-extracting archive
|
||||
.Ed
|
||||
.Pp
|
||||
If you have a list of known avalues at a particular continuation level,
|
||||
and you want to provide a switch-like default case:
|
||||
.Bd -literal -offset indent
|
||||
# clear that continuation level match
|
||||
\*[Gt]18 clear
|
||||
\*[Gt]18 lelong 1 one
|
||||
\*[Gt]18 lelong 2 two
|
||||
\*[Gt]18 default x
|
||||
# print default match
|
||||
\*[Gt]\*[Gt]18 lelong x unmatched 0x%x
|
||||
.Ed
|
||||
.Sh SEE ALSO
|
||||
.Xr file __CSECTION__
|
||||
\- the command that reads this file.
|
||||
@@ -493,19 +668,41 @@ The formats
|
||||
.Dv melong ,
|
||||
.Dv short ,
|
||||
.Dv beshort ,
|
||||
.Dv leshort ,
|
||||
.Dv date ,
|
||||
.Dv bedate ,
|
||||
.Dv medate ,
|
||||
.Dv ledate ,
|
||||
.Dv beldate ,
|
||||
.Dv leldate ,
|
||||
and
|
||||
.Dv meldate
|
||||
are system-dependent; perhaps they should be specified as a number
|
||||
of bytes (2B, 4B, etc),
|
||||
since the files being recognized typically come from
|
||||
a system on which the lengths are invariant.
|
||||
.Dv leshort
|
||||
do not depend on the length of the C data types
|
||||
.Dv short
|
||||
and
|
||||
.Dv long
|
||||
on the platform, even though the Single
|
||||
.Ux
|
||||
Specification implies that they do. However, as OS X Mountain Lion has
|
||||
passed the Single
|
||||
.Ux
|
||||
Specification validation suite, and supplies a version of
|
||||
.Xr file __CSECTION__
|
||||
in which they do not depend on the sizes of the C data types and that is
|
||||
built for a 64-bit environment in which
|
||||
.Dv long
|
||||
is 8 bytes rather than 4 bytes, presumably the validation suite does not
|
||||
test whether, for example
|
||||
.Dv long
|
||||
refers to an item with the same size as the C data type
|
||||
.Dv long .
|
||||
There should probably be
|
||||
.Dv type
|
||||
names
|
||||
.Dv int8 ,
|
||||
.Dv uint8 ,
|
||||
.Dv int16 ,
|
||||
.Dv uint16 ,
|
||||
.Dv int32 ,
|
||||
.Dv uint32 ,
|
||||
.Dv int64 ,
|
||||
and
|
||||
.Dv uint64 ,
|
||||
and specified-byte-order variants of them,
|
||||
to make it clearer that those types have specified widths.
|
||||
.\"
|
||||
.\" From: [email protected] (Guy Harris)
|
||||
.\" Newsgroups: net.bugs.usg
|
||||
+254
-460
@@ -1,38 +1,23 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# $NetBSD: install-sh.in,v 1.6 2012/01/11 13:07:31 hans Exp $
|
||||
# This script now also installs multiple files, but might choke on installing
|
||||
# multiple files with spaces in the file names.
|
||||
#
|
||||
# install - install a program, script, or datafile
|
||||
|
||||
scriptversion=2006-10-14.15
|
||||
|
||||
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||
# following copyright and license.
|
||||
# This comes from X11R5 (mit/util/scripts/install.sh).
|
||||
#
|
||||
# Copyright (C) 1994 X Consortium
|
||||
# Copyright 1991 by the Massachusetts Institute of Technology
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
|
||||
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
# Except as contained in this notice, the name of the X Consortium shall not
|
||||
# be used in advertising or otherwise to promote the sale, use or other deal-
|
||||
# ings in this Software without prior written authorization from the X Consor-
|
||||
# tium.
|
||||
#
|
||||
#
|
||||
# FSF changes to this file are in the public domain.
|
||||
# Permission to use, copy, modify, distribute, and sell this software and its
|
||||
# documentation for any purpose is hereby granted without fee, provided that
|
||||
# the above copyright notice appear in all copies and that both that
|
||||
# copyright notice and this permission notice appear in supporting
|
||||
# documentation, and that the name of M.I.T. not be used in advertising or
|
||||
# publicity pertaining to distribution of the software without specific,
|
||||
# written prior permission. M.I.T. makes no representations about the
|
||||
# suitability of this software for any purpose. It is provided "as is"
|
||||
# without express or implied warranty.
|
||||
#
|
||||
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||
# `make' implicit rules from creating a file called install from it
|
||||
@@ -41,23 +26,15 @@ scriptversion=2006-10-14.15
|
||||
# This script is compatible with the BSD install script, but was written
|
||||
# from scratch.
|
||||
|
||||
nl='
|
||||
'
|
||||
IFS=" "" $nl"
|
||||
|
||||
# set DOITPROG to echo to test this script
|
||||
|
||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||
doit="${DOITPROG-}"
|
||||
if test -z "$doit"; then
|
||||
doit_exec=exec
|
||||
else
|
||||
doit_exec=$doit
|
||||
fi
|
||||
|
||||
# Put in absolute file names if you don't have them in your path;
|
||||
# or use environment vars.
|
||||
|
||||
# put in absolute paths if you don't have them in your path; or use env. vars.
|
||||
|
||||
awkprog="${AWKPROG-awk}"
|
||||
mvprog="${MVPROG-mv}"
|
||||
cpprog="${CPPROG-cp}"
|
||||
chmodprog="${CHMODPROG-chmod}"
|
||||
@@ -67,441 +44,258 @@ stripprog="${STRIPPROG-strip}"
|
||||
rmprog="${RMPROG-rm}"
|
||||
mkdirprog="${MKDIRPROG-mkdir}"
|
||||
|
||||
posix_glob=
|
||||
posix_mkdir=
|
||||
|
||||
# Desired mode of installed file.
|
||||
mode=0755
|
||||
|
||||
chmodcmd=$chmodprog
|
||||
chowncmd=
|
||||
chgrpcmd=
|
||||
stripcmd=
|
||||
instcmd="$cpprog"
|
||||
instflags=""
|
||||
pathcompchmodcmd="$chmodprog 755"
|
||||
chmodcmd="$chmodprog 755"
|
||||
chowncmd=""
|
||||
chgrpcmd=""
|
||||
stripcmd=""
|
||||
stripflags=""
|
||||
rmcmd="$rmprog -f"
|
||||
mvcmd="$mvprog"
|
||||
src=
|
||||
dst=
|
||||
dir_arg=
|
||||
dstarg=
|
||||
no_target_directory=
|
||||
src=""
|
||||
msrc=""
|
||||
dst=""
|
||||
dir_arg=""
|
||||
suffix=""
|
||||
suffixfmt=""
|
||||
|
||||
usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
|
||||
or: $0 [OPTION]... SRCFILES... DIRECTORY
|
||||
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
|
||||
or: $0 [OPTION]... -d DIRECTORIES...
|
||||
while [ x"$1" != x ]; do
|
||||
case $1 in
|
||||
-b) suffix=".old"
|
||||
shift
|
||||
continue;;
|
||||
|
||||
In the 1st form, copy SRCFILE to DSTFILE.
|
||||
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
|
||||
In the 4th, create DIRECTORIES.
|
||||
-B) suffixfmt="$2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
Options:
|
||||
-c (ignored)
|
||||
-d create directories instead of installing files.
|
||||
-g GROUP $chgrpprog installed files to GROUP.
|
||||
-m MODE $chmodprog installed files to MODE.
|
||||
-o USER $chownprog installed files to USER.
|
||||
-s $stripprog installed files.
|
||||
-t DIRECTORY install into DIRECTORY.
|
||||
-T report an error if DSTFILE is a directory.
|
||||
--help display this help and exit.
|
||||
--version display version info and exit.
|
||||
-c) instcmd="$cpprog"
|
||||
shift
|
||||
continue;;
|
||||
|
||||
Environment variables override the default commands:
|
||||
CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
|
||||
"
|
||||
-d) dir_arg=true
|
||||
shift
|
||||
continue;;
|
||||
|
||||
while test $# -ne 0; do
|
||||
case $1 in
|
||||
-c) shift
|
||||
continue;;
|
||||
-m) chmodcmd="$chmodprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-d) dir_arg=true
|
||||
shift
|
||||
continue;;
|
||||
-m*)
|
||||
chmodcmd="$chmodprog ${1#-m}"
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-g) chgrpcmd="$chgrpprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
-o) chowncmd="$chownprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
--help) echo "$usage"; exit $?;;
|
||||
-g) chgrpcmd="$chgrpprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-m) mode=$2
|
||||
shift
|
||||
shift
|
||||
case $mode in
|
||||
*' '* | *' '* | *'
|
||||
'* | *'*'* | *'?'* | *'['*)
|
||||
echo "$0: invalid mode: $mode" >&2
|
||||
exit 1;;
|
||||
esac
|
||||
continue;;
|
||||
-s) stripcmd="$stripprog"
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-o) chowncmd="$chownprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
-S) stripcmd="$stripprog"
|
||||
stripflags="-S $2 $stripflags"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-s) stripcmd=$stripprog
|
||||
shift
|
||||
continue;;
|
||||
-p) instflags="-p"
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-t) dstarg=$2
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-T) no_target_directory=true
|
||||
shift
|
||||
continue;;
|
||||
|
||||
--version) echo "$0 $scriptversion"; exit $?;;
|
||||
|
||||
--) shift
|
||||
break;;
|
||||
|
||||
-*) echo "$0: invalid option: $1" >&2
|
||||
exit 1;;
|
||||
|
||||
*) break;;
|
||||
esac
|
||||
done
|
||||
|
||||
if test $# -ne 0 && test -z "$dir_arg$dstarg"; then
|
||||
# When -d is used, all remaining arguments are directories to create.
|
||||
# When -t is used, the destination is already specified.
|
||||
# Otherwise, the last argument is the destination. Remove it from $@.
|
||||
for arg
|
||||
do
|
||||
if test -n "$dstarg"; then
|
||||
# $@ is not empty: it contains at least $arg.
|
||||
set fnord "$@" "$dstarg"
|
||||
shift # fnord
|
||||
fi
|
||||
shift # arg
|
||||
dstarg=$arg
|
||||
done
|
||||
fi
|
||||
|
||||
if test $# -eq 0; then
|
||||
if test -z "$dir_arg"; then
|
||||
echo "$0: no input file specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
# It's OK to call `install-sh -d' without argument.
|
||||
# This can happen when creating conditional directories.
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if test -z "$dir_arg"; then
|
||||
trap '(exit $?); exit' 1 2 13 15
|
||||
|
||||
# Set umask so as not to create temps with too-generous modes.
|
||||
# However, 'strip' requires both read and write access to temps.
|
||||
case $mode in
|
||||
# Optimize common cases.
|
||||
*644) cp_umask=133;;
|
||||
*755) cp_umask=22;;
|
||||
|
||||
*[0-7])
|
||||
if test -z "$stripcmd"; then
|
||||
u_plus_rw=
|
||||
else
|
||||
u_plus_rw='% 200'
|
||||
fi
|
||||
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
|
||||
*)
|
||||
if test -z "$stripcmd"; then
|
||||
u_plus_rw=
|
||||
else
|
||||
u_plus_rw=,u+rw
|
||||
fi
|
||||
cp_umask=$mode$u_plus_rw;;
|
||||
esac
|
||||
fi
|
||||
|
||||
for src
|
||||
do
|
||||
# Protect names starting with `-'.
|
||||
case $src in
|
||||
-*) src=./$src ;;
|
||||
esac
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
dst=$src
|
||||
dstdir=$dst
|
||||
test -d "$dstdir"
|
||||
dstdir_status=$?
|
||||
else
|
||||
|
||||
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
|
||||
# might cause directories to be created, which would be especially bad
|
||||
# if $src (and thus $dsttmp) contains '*'.
|
||||
if test ! -f "$src" && test ! -d "$src"; then
|
||||
echo "$0: $src does not exist." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test -z "$dstarg"; then
|
||||
echo "$0: no destination specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
dst=$dstarg
|
||||
# Protect names starting with `-'.
|
||||
case $dst in
|
||||
-*) dst=./$dst ;;
|
||||
esac
|
||||
|
||||
# If destination is a directory, append the input filename; won't work
|
||||
# if double slashes aren't ignored.
|
||||
if test -d "$dst"; then
|
||||
if test -n "$no_target_directory"; then
|
||||
echo "$0: $dstarg: Is a directory" >&2
|
||||
exit 1
|
||||
fi
|
||||
dstdir=$dst
|
||||
dst=$dstdir/`basename "$src"`
|
||||
dstdir_status=0
|
||||
else
|
||||
# Prefer dirname, but fall back on a substitute if dirname fails.
|
||||
dstdir=`
|
||||
(dirname "$dst") 2>/dev/null ||
|
||||
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
|
||||
X"$dst" : 'X\(//\)[^/]' \| \
|
||||
X"$dst" : 'X\(//\)$' \| \
|
||||
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
|
||||
echo X"$dst" |
|
||||
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\/\)[^/].*/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\/\)$/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\).*/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
s/.*/./; q'
|
||||
`
|
||||
|
||||
test -d "$dstdir"
|
||||
dstdir_status=$?
|
||||
fi
|
||||
fi
|
||||
|
||||
obsolete_mkdir_used=false
|
||||
|
||||
if test $dstdir_status != 0; then
|
||||
case $posix_mkdir in
|
||||
'')
|
||||
# Create intermediate dirs using mode 755 as modified by the umask.
|
||||
# This is like FreeBSD 'install' as of 1997-10-28.
|
||||
umask=`umask`
|
||||
case $stripcmd.$umask in
|
||||
# Optimize common cases.
|
||||
*[2367][2367]) mkdir_umask=$umask;;
|
||||
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
|
||||
|
||||
*[0-7])
|
||||
mkdir_umask=`expr $umask + 22 \
|
||||
- $umask % 100 % 40 + $umask % 20 \
|
||||
- $umask % 10 % 4 + $umask % 2
|
||||
`;;
|
||||
*) mkdir_umask=$umask,go-w;;
|
||||
esac
|
||||
|
||||
# With -d, create the new directory with the user-specified mode.
|
||||
# Otherwise, rely on $mkdir_umask.
|
||||
if test -n "$dir_arg"; then
|
||||
mkdir_mode=-m$mode
|
||||
else
|
||||
mkdir_mode=
|
||||
fi
|
||||
|
||||
posix_mkdir=false
|
||||
case $umask in
|
||||
*[123567][0-7][0-7])
|
||||
# POSIX mkdir -p sets u+wx bits regardless of umask, which
|
||||
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
|
||||
;;
|
||||
*)
|
||||
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
||||
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
|
||||
|
||||
if (umask $mkdir_umask &&
|
||||
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
|
||||
*) if [ x"$msrc" = x ]
|
||||
then
|
||||
if test -z "$dir_arg" || {
|
||||
# Check for POSIX incompatibilities with -m.
|
||||
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
||||
# other-writeable bit of parent directory when it shouldn't.
|
||||
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
||||
ls_ld_tmpdir=`ls -ld "$tmpdir"`
|
||||
case $ls_ld_tmpdir in
|
||||
d????-?r-*) different_mode=700;;
|
||||
d????-?--*) different_mode=755;;
|
||||
*) false;;
|
||||
esac &&
|
||||
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
|
||||
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
|
||||
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
||||
}
|
||||
}
|
||||
then posix_mkdir=:
|
||||
fi
|
||||
rmdir "$tmpdir/d" "$tmpdir"
|
||||
msrc="$dst"
|
||||
else
|
||||
# Remove any dirs left behind by ancient mkdir implementations.
|
||||
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
|
||||
msrc="$msrc $dst"
|
||||
fi
|
||||
trap '' 0;;
|
||||
esac;;
|
||||
src="$dst"
|
||||
dst="$1"
|
||||
shift
|
||||
continue;;
|
||||
esac
|
||||
|
||||
if
|
||||
$posix_mkdir && (
|
||||
umask $mkdir_umask &&
|
||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
|
||||
)
|
||||
then :
|
||||
else
|
||||
|
||||
# The umask is ridiculous, or mkdir does not conform to POSIX,
|
||||
# or it failed possibly due to a race condition. Create the
|
||||
# directory the slow way, step by step, checking for races as we go.
|
||||
|
||||
case $dstdir in
|
||||
/*) prefix=/ ;;
|
||||
-*) prefix=./ ;;
|
||||
*) prefix= ;;
|
||||
esac
|
||||
|
||||
case $posix_glob in
|
||||
'')
|
||||
if (set -f) 2>/dev/null; then
|
||||
posix_glob=true
|
||||
else
|
||||
posix_glob=false
|
||||
fi ;;
|
||||
esac
|
||||
|
||||
oIFS=$IFS
|
||||
IFS=/
|
||||
$posix_glob && set -f
|
||||
set fnord $dstdir
|
||||
shift
|
||||
$posix_glob && set +f
|
||||
IFS=$oIFS
|
||||
|
||||
prefixes=
|
||||
|
||||
for d
|
||||
do
|
||||
test -z "$d" && continue
|
||||
|
||||
prefix=$prefix$d
|
||||
if test -d "$prefix"; then
|
||||
prefixes=
|
||||
else
|
||||
if $posix_mkdir; then
|
||||
(umask=$mkdir_umask &&
|
||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
|
||||
# Don't fail if two instances are running concurrently.
|
||||
test -d "$prefix" || exit 1
|
||||
else
|
||||
case $prefix in
|
||||
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
|
||||
*) qprefix=$prefix;;
|
||||
esac
|
||||
prefixes="$prefixes '$qprefix'"
|
||||
fi
|
||||
fi
|
||||
prefix=$prefix/
|
||||
done
|
||||
|
||||
if test -n "$prefixes"; then
|
||||
# Don't fail if two instances are running concurrently.
|
||||
(umask $mkdir_umask &&
|
||||
eval "\$doit_exec \$mkdirprog $prefixes") ||
|
||||
test -d "$dstdir" || exit 1
|
||||
obsolete_mkdir_used=true
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
|
||||
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
|
||||
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
|
||||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
|
||||
else
|
||||
|
||||
# Make a couple of temp file names in the proper directory.
|
||||
dsttmp=$dstdir/_inst.$$_
|
||||
rmtmp=$dstdir/_rm.$$_
|
||||
|
||||
# Trap to clean up those temp files at exit.
|
||||
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
|
||||
|
||||
# Copy the file name to the temp name.
|
||||
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
|
||||
|
||||
# and set any options; do chmod last to preserve setuid bits.
|
||||
#
|
||||
# If any of these fail, we abort the whole thing. If we want to
|
||||
# ignore errors from any of these, just make sure not to ignore
|
||||
# errors from the above "$doit $cpprog $src $dsttmp" command.
|
||||
#
|
||||
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
|
||||
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
|
||||
&& { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
|
||||
&& { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
{ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null \
|
||||
|| {
|
||||
# The rename failed, perhaps because mv can't rename something else
|
||||
# to itself, or perhaps because mv is so ancient that it does not
|
||||
# support -f.
|
||||
|
||||
# Now remove or move aside any old file at destination location.
|
||||
# We try this two ways since rm can't unlink itself on some
|
||||
# systems and the destination file might be busy for other
|
||||
# reasons. In this case, the final cleanup might fail but the new
|
||||
# file should still install successfully.
|
||||
{
|
||||
if test -f "$dst"; then
|
||||
$doit $rmcmd -f "$dst" 2>/dev/null \
|
||||
|| { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null \
|
||||
&& { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }; }\
|
||||
|| {
|
||||
echo "$0: cannot unlink or rename $dst" >&2
|
||||
(exit 1); exit 1
|
||||
}
|
||||
else
|
||||
:
|
||||
fi
|
||||
} &&
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
$doit $mvcmd "$dsttmp" "$dst"
|
||||
}
|
||||
} || exit 1
|
||||
|
||||
trap '' 0
|
||||
fi
|
||||
done
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-end: "$"
|
||||
# End:
|
||||
if [ x"$dir_arg" = x ]
|
||||
then
|
||||
dstisfile=""
|
||||
if [ ! -d "$dst" ]
|
||||
then
|
||||
if [ x"$msrc" = x"$src" ]
|
||||
then
|
||||
dstisfile=true
|
||||
else
|
||||
echo "install: destination is not a directory"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
else
|
||||
msrc="$msrc $dst"
|
||||
fi
|
||||
|
||||
if [ x"$msrc" = x ]
|
||||
then
|
||||
echo "install: no destination specified"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for srcarg in $msrc; do
|
||||
|
||||
if [ x"$dir_arg" != x ]; then
|
||||
|
||||
dstarg="$srcarg"
|
||||
else
|
||||
dstarg="$dst"
|
||||
|
||||
# Waiting for this to be detected by the "$instcmd $srcarg $dsttmp" command
|
||||
# might cause directories to be created, which would be especially bad
|
||||
# if $src (and thus $dsttmp) contains '*'.
|
||||
|
||||
if [ -f "$srcarg" ]
|
||||
then
|
||||
doinst="$instcmd $instflags"
|
||||
elif [ -d "$srcarg" ]
|
||||
then
|
||||
echo "install: $srcarg: not a regular file"
|
||||
exit 1
|
||||
elif [ "$srcarg" = "/dev/null" ]
|
||||
then
|
||||
doinst="$cpprog"
|
||||
else
|
||||
echo "install: $srcarg does not exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# If destination is a directory, append the input filename; if your system
|
||||
# does not like double slashes in filenames, you may need to add some logic
|
||||
|
||||
if [ -d "$dstarg" ]
|
||||
then
|
||||
dstarg="$dstarg"/`basename "$srcarg"`
|
||||
fi
|
||||
fi
|
||||
|
||||
## this sed command emulates the dirname command
|
||||
dstdir=`echo "$dstarg" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
|
||||
|
||||
# Make sure that the destination directory exists.
|
||||
# this part is taken from Noah Friedman's mkinstalldirs script
|
||||
|
||||
# Skip lots of stat calls in the usual case.
|
||||
if [ ! -d "$dstdir" ]; then
|
||||
defaultIFS='
|
||||
'
|
||||
IFS="${IFS-${defaultIFS}}"
|
||||
|
||||
oIFS="${IFS}"
|
||||
# Some sh's can't handle IFS=/ for some reason.
|
||||
IFS='%'
|
||||
set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
|
||||
IFS="${oIFS}"
|
||||
|
||||
pathcomp=''
|
||||
|
||||
while [ $# -ne 0 ] ; do
|
||||
pathcomp="${pathcomp}${1}"
|
||||
shift
|
||||
|
||||
if [ ! -d "${pathcomp}" ] ;
|
||||
then
|
||||
$doit $mkdirprog "${pathcomp}"
|
||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd "${pathcomp}"; else true ; fi &&
|
||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "${pathcomp}"; else true ; fi &&
|
||||
if [ x"$pathcompchmodcmd" != x ]; then $doit $pathcompchmodcmd "${pathcomp}"; else true ; fi
|
||||
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
pathcomp="${pathcomp}/"
|
||||
done
|
||||
fi
|
||||
|
||||
if [ x"$dir_arg" != x ]
|
||||
then
|
||||
if [ -d "$dstarg" ]; then
|
||||
true
|
||||
else
|
||||
$doit $mkdirprog "$dstarg" &&
|
||||
|
||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dstarg"; else true ; fi &&
|
||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dstarg"; else true ; fi &&
|
||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dstarg"; else true ; fi
|
||||
fi
|
||||
else
|
||||
|
||||
if [ x"$dstisfile" = x ]
|
||||
then
|
||||
file=$srcarg
|
||||
else
|
||||
file=$dst
|
||||
fi
|
||||
|
||||
dstfile=`basename "$file"`
|
||||
dstfinal="$dstdir/$dstfile"
|
||||
|
||||
# Make a temp file name in the proper directory.
|
||||
|
||||
dsttmp=$dstdir/#inst.$$#
|
||||
|
||||
# Make a backup file name in the proper directory.
|
||||
case x$suffixfmt in
|
||||
*%*) suffix=`echo x |
|
||||
$awkprog -v bname="$dstfinal" -v fmt="$suffixfmt" '
|
||||
{ cnt = 0;
|
||||
do {
|
||||
sfx = sprintf(fmt, cnt++);
|
||||
name = bname sfx;
|
||||
} while (system("test -f " name) == 0);
|
||||
print sfx; }' -`;;
|
||||
x) ;;
|
||||
*) suffix="$suffixfmt";;
|
||||
esac
|
||||
dstbackup="$dstfinal$suffix"
|
||||
|
||||
# Move or copy the file name to the temp name
|
||||
|
||||
$doit $doinst $srcarg "$dsttmp" &&
|
||||
|
||||
trap "rm -f ${dsttmp}" 0 &&
|
||||
|
||||
# and set any options; do chmod last to preserve setuid bits
|
||||
|
||||
# If any of these fail, we abort the whole thing. If we want to
|
||||
# ignore errors from any of these, just make sure not to ignore
|
||||
# errors from the above "$doit $instcmd $src $dsttmp" command.
|
||||
|
||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else true;fi &&
|
||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else true;fi &&
|
||||
if [ x"$stripcmd" != x ]; then $doit $stripcmd $stripflags "$dsttmp"; else true;fi &&
|
||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else true;fi &&
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
|
||||
if [ x"$suffix" != x ] && [ -f "$dstfinal" ]
|
||||
then
|
||||
$doit $mvcmd "$dstfinal" "$dstbackup"
|
||||
else
|
||||
$doit $rmcmd -f "$dstfinal"
|
||||
fi &&
|
||||
$doit $mvcmd "$dsttmp" "$dstfinal"
|
||||
fi
|
||||
|
||||
done &&
|
||||
|
||||
|
||||
exit 0
|
||||
@@ -1,249 +0,0 @@
|
||||
.\" $File: libmagic.man,v 1.19 2008/10/06 20:16:04 christos Exp $
|
||||
.\"
|
||||
.\" 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.
|
||||
.\"
|
||||
.Dd October 6, 2008
|
||||
.Dt MAGIC 3
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm magic_open ,
|
||||
.Nm magic_close ,
|
||||
.Nm magic_error ,
|
||||
.Nm magic_file ,
|
||||
.Nm magic_buffer ,
|
||||
.Nm magic_setflags ,
|
||||
.Nm magic_check ,
|
||||
.Nm magic_compile ,
|
||||
.Nm magic_load
|
||||
.Nd Magic number recognition library.
|
||||
.Sh LIBRARY
|
||||
.Lb libmagic
|
||||
.Sh SYNOPSIS
|
||||
.In magic.h
|
||||
.Ft magic_t
|
||||
.Fn magic_open "int flags"
|
||||
.Ft void
|
||||
.Fn magic_close "magic_t cookie"
|
||||
.Ft const char *
|
||||
.Fn magic_error "magic_t cookie"
|
||||
.Ft int
|
||||
.Fn magic_errno "magic_t cookie"
|
||||
.Ft const char *
|
||||
.Fn magic_file "magic_t cookie, const char *filename"
|
||||
.Ft const char *
|
||||
.Fn magic_buffer "magic_t cookie, const void *buffer, size_t length"
|
||||
.Ft int
|
||||
.Fn magic_setflags "magic_t cookie, int flags"
|
||||
.Ft int
|
||||
.Fn magic_check "magic_t cookie, const char *filename"
|
||||
.Ft int
|
||||
.Fn magic_compile "magic_t cookie, const char *filename"
|
||||
.Ft int
|
||||
.Fn magic_load "magic_t cookie, const char *filename"
|
||||
.Sh DESCRIPTION
|
||||
These functions
|
||||
operate on the magic database file
|
||||
which is described
|
||||
in
|
||||
.Xr magic __FSECTION__ .
|
||||
.Pp
|
||||
The function
|
||||
.Fn magic_open
|
||||
creates a magic cookie pointer and returns it. It returns NULL if
|
||||
there was an error allocating the magic cookie. The
|
||||
.Ar flags
|
||||
argument specifies how the other magic functions should behave:
|
||||
.Bl -tag -width MAGIC_COMPRESS
|
||||
.It Dv MAGIC_NONE
|
||||
No special handling.
|
||||
.It Dv MAGIC_DEBUG
|
||||
Print debugging messages to stderr.
|
||||
.It Dv MAGIC_SYMLINK
|
||||
If the file queried is a symlink, follow it.
|
||||
.It Dv MAGIC_COMPRESS
|
||||
If the file is compressed, unpack it and look at the contents.
|
||||
.It Dv MAGIC_DEVICES
|
||||
If the file is a block or character special device, then open the device
|
||||
and try to look in its contents.
|
||||
.It Dv MAGIC_MIME_TYPE
|
||||
Return a MIME type string, instead of a textual description.
|
||||
.It Dv MAGIC_MIME_ENCODING
|
||||
Return a MIME encoding, instead of a textual description.
|
||||
.It Dv MAGIC_CONTINUE
|
||||
Return all matches, not just the first.
|
||||
.It Dv MAGIC_CHECK
|
||||
Check the magic database for consistency and print warnings to stderr.
|
||||
.It Dv MAGIC_PRESERVE_ATIME
|
||||
On systems that support
|
||||
.Xr utime 2
|
||||
or
|
||||
.Xr utimes 2 ,
|
||||
attempt to preserve the access time of files analyzed.
|
||||
.It Dv MAGIC_RAW
|
||||
Don't translate unprintable characters to a \eooo octal representation.
|
||||
.It Dv MAGIC_ERROR
|
||||
Treat operating system errors while trying to open files and follow symlinks
|
||||
as real errors, instead of printing them in the magic buffer.
|
||||
.It Dv MAGIC_NO_CHECK_APPTYPE
|
||||
Check for
|
||||
.Dv EMX
|
||||
application type (only on EMX).
|
||||
.It Dv MAGIC_NO_CHECK_ASCII
|
||||
Check for various types of ascii files.
|
||||
.It Dv MAGIC_NO_CHECK_COMPRESS
|
||||
Don't look for, or inside compressed files.
|
||||
.It Dv MAGIC_NO_CHECK_ELF
|
||||
Don't print elf details.
|
||||
.It Dv MAGIC_NO_CHECK_FORTRAN
|
||||
Don't look for fortran sequences inside ascii files.
|
||||
.It Dv MAGIC_NO_CHECK_SOFT
|
||||
Don't consult magic files.
|
||||
.It Dv MAGIC_NO_CHECK_TAR
|
||||
Don't examine tar files.
|
||||
.It Dv MAGIC_NO_CHECK_TOKENS
|
||||
Don't look for known tokens inside ascii files.
|
||||
.It Dv MAGIC_NO_CHECK_TROFF
|
||||
Don't look for troff sequences inside ascii files.
|
||||
.El
|
||||
.Pp
|
||||
The
|
||||
.Fn magic_close
|
||||
function closes the
|
||||
.Xr magic __FSECTION__
|
||||
database and deallocates any resources used.
|
||||
.Pp
|
||||
The
|
||||
.Fn magic_error
|
||||
function returns a textual explanation of the last error, or NULL if there was
|
||||
no error.
|
||||
.Pp
|
||||
The
|
||||
.Fn magic_errno
|
||||
function returns the last operating system error number
|
||||
.Pq Xr errno 2
|
||||
that was encountered by a system call.
|
||||
.Pp
|
||||
The
|
||||
.Fn magic_file
|
||||
function returns a textual description of the contents of the
|
||||
.Ar filename
|
||||
argument, or NULL if an error occurred.
|
||||
If the
|
||||
.Ar filename
|
||||
is NULL, then stdin is used.
|
||||
.Pp
|
||||
The
|
||||
.Fn magic_buffer
|
||||
function returns a textual description of the contents of the
|
||||
.Ar buffer
|
||||
argument with
|
||||
.Ar length
|
||||
bytes size.
|
||||
.Pp
|
||||
The
|
||||
.Fn magic_setflags
|
||||
function sets the
|
||||
.Ar flags
|
||||
described above. Note that using both MIME flags together can also
|
||||
return extra information on the charset.
|
||||
.Pp
|
||||
The
|
||||
.Fn magic_check
|
||||
function can be used to check the validity of entries in the colon
|
||||
separated database files passed in as
|
||||
.Ar filename ,
|
||||
or NULL for the default database. It returns 0 on success and -1 on
|
||||
failure.
|
||||
.Pp
|
||||
The
|
||||
.Fn magic_compile
|
||||
function can be used to compile the the colon
|
||||
separated list of database files passed in as
|
||||
.Ar filename ,
|
||||
or NULL for the default database. It returns 0 on success and -1 on
|
||||
failure. The compiled files created are named from the
|
||||
.Xr basename 1
|
||||
of each file argument with
|
||||
.Dq .mgc
|
||||
appended to it.
|
||||
.Pp
|
||||
The
|
||||
.Fn magic_load
|
||||
function must be used to load the the colon
|
||||
separated list of database files passed in as
|
||||
.Ar filename ,
|
||||
or NULL for the default database file
|
||||
before any magic queries can performed.
|
||||
.Pp
|
||||
The default database file is named by the MAGIC environment variable. If
|
||||
that variable is not set, the default database file name is __MAGIC__.
|
||||
.Fn magic_load
|
||||
adds
|
||||
.Dq .mgc
|
||||
to the database filename as appropriate.
|
||||
.Sh RETURN VALUES
|
||||
The function
|
||||
.Fn magic_open
|
||||
returns a magic cookie on success and NULL on failure setting errno to
|
||||
an appropriate value. It will set errno to EINVAL if an unsupported
|
||||
value for flags was given.
|
||||
The
|
||||
.Fn magic_load ,
|
||||
.Fn magic_compile ,
|
||||
and
|
||||
.Fn magic_check
|
||||
functions return 0 on success and -1 on failure.
|
||||
The
|
||||
.Fn magic_file ,
|
||||
and
|
||||
.Fn magic_buffer
|
||||
functions return a string on success and NULL on failure. The
|
||||
.Fn magic_error
|
||||
function returns a textual description of the errors of the above
|
||||
functions, or NULL if there was no error.
|
||||
Finally,
|
||||
.Fn magic_setflags
|
||||
returns -1 on systems that don't support
|
||||
.Xr utime 2 ,
|
||||
or
|
||||
.Xr utimes 2
|
||||
when
|
||||
.Dv MAGIC_PRESERVE_ATIME
|
||||
is set.
|
||||
.Sh FILES
|
||||
.Bl -tag -width __MAGIC__.mgc -compact
|
||||
.It Pa __MAGIC__
|
||||
The non-compiled default magic database.
|
||||
.It Pa __MAGIC__.mgc
|
||||
The compiled default magic database.
|
||||
.El
|
||||
.Sh SEE ALSO
|
||||
.Xr file __CSECTION__ ,
|
||||
.Xr magic __FSECTION__
|
||||
.Sh AUTHORS
|
||||
Måns Rullgård Initial libmagic implementation,
|
||||
and configuration.
|
||||
Christos Zoulas API cleanup, error code and allocation handling.
|
||||
Executable
+9664
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,5 @@
|
||||
# Magic data for file(1) command.
|
||||
# Format is described in magic(files), where:
|
||||
# files is 5 on V7 and BSD, 4 on SV, and ?? on SVID.
|
||||
# Don't edit this file, edit /etc/magic or send your magic improvements
|
||||
# to the maintainers, at [email protected]
|
||||
File renamed without changes.
@@ -1,4 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: acorn,v 1.5 2009/09/19 16:28:07 christos Exp $
|
||||
# acorn: file(1) magic for files found on Acorn systems
|
||||
#
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: adi,v 1.4 2009/09/19 16:28:07 christos Exp $
|
||||
# adi: file(1) magic for ADi's objects
|
||||
# From Gregory McGarry <[email protected]>
|
||||
#
|
||||
@@ -1,5 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: adventure,v 1.14 2012/06/21 01:32:26 christos Exp $
|
||||
# adventure: file(1) magic for Adventure game files
|
||||
#
|
||||
# from Allen Garvin <[email protected]>
|
||||
@@ -16,18 +17,30 @@
|
||||
# Infocom (see z-machine)
|
||||
#------------------------------------------------------------------------------
|
||||
# Z-machine: file(1) magic for Z-machine binaries.
|
||||
# Updated by Adam Buchbinder <[email protected]>
|
||||
#
|
||||
# This will match ${TEX_BASE}/texmf/omega/ocp/char2uni/inbig5.ocp which
|
||||
# appears to be a version-0 Z-machine binary.
|
||||
#http://www.gnelson.demon.co.uk/zspec/sect11.html
|
||||
#http://www.jczorkmid.net/~jpenney/ZSpec11-latest.txt
|
||||
#http://en.wikipedia.org/wiki/Z-machine
|
||||
# The first byte is the Z-machine revision; it is always between 1 and 8. We
|
||||
# had false matches (for instance, inbig5.ocp from the Omega TeX extension as
|
||||
# well as an occasional MP3 file), so we sanity-check the version number.
|
||||
#
|
||||
# The (false match) message is to correct that behavior. Perhaps it is
|
||||
# not needed.
|
||||
# It might be possible to sanity-check the release number as well, as it seems
|
||||
# (at least in classic Infocom games) to always be a relatively small number,
|
||||
# always under 150 or so, but as this isn't rigorous, we'll wait on that until
|
||||
# it becomes clear that it's needed.
|
||||
#
|
||||
16 belong&0xfe00f0f0 0x3030 Infocom game data
|
||||
>0 ubyte 0 (false match)
|
||||
>0 ubyte >0 (Z-machine %d,
|
||||
>>2 ubeshort x Release %d /
|
||||
>>18 string >\0 Serial %.6s)
|
||||
0 ubyte >0
|
||||
>0 ubyte <9
|
||||
>>16 belong&0xfe00f0f0 0x3030
|
||||
>>>0 ubyte < 10
|
||||
>>>>2 ubeshort < 10
|
||||
>>>>>18 regex [0-9][0-9][0-9][0-9][0-9][0-9]
|
||||
>>>>>>0 ubyte < 10 Infocom (Z-machine %d,
|
||||
>>>>>>>2 ubeshort < 10 Release %d /
|
||||
>>>>>>>>18 string >\0 Serial %.6s)
|
||||
!:strength + 40
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Glulx: file(1) magic for Glulx binaries.
|
||||
@@ -45,10 +58,9 @@
|
||||
# For Quetzal and blorb magic see iff
|
||||
|
||||
|
||||
# TADS (Text Adventure Development System)
|
||||
# TADS (Text Adventure Development System) version 2
|
||||
# All files are machine-independent (games compile to byte-code) and are tagged
|
||||
# with a version string of the form "V2.<digit>.<digit>\0" (but TADS 3 is
|
||||
# on the way).
|
||||
# with a version string of the form "V2.<digit>.<digit>\0".
|
||||
# Game files start with "TADS2 bin\n\r\032\0" then the compiler version.
|
||||
0 string TADS2\ bin TADS
|
||||
>9 belong !0x0A0D1A00 game data, CORRUPTED
|
||||
@@ -73,6 +85,19 @@
|
||||
>10 belong 0x0A0D1A00
|
||||
>>14 string >\0 %s saved game data
|
||||
|
||||
# TADS (Text Adventure Development System) version 3
|
||||
# Game files start with "T3-image\015\012\032"
|
||||
0 string T3-image\015\012\032
|
||||
>11 leshort x TADS 3 game data (format version %d)
|
||||
# Saved game files start with "T3-state-v####\015\012\032"
|
||||
# where #### is a format version number
|
||||
0 string T3-state-v
|
||||
>14 string \015\012\032 TADS 3 saved game data (format version
|
||||
>>10 byte x %c
|
||||
>>11 byte x \b%c
|
||||
>>12 byte x \b%c
|
||||
>>13 byte x \b%c)
|
||||
|
||||
# Danny Milosavljevic <[email protected]>
|
||||
# this are adrift (adventure game standard) game files, extension .taf
|
||||
# depending on version magic continues with 0x93453E6139FA (V 4.0)
|
||||
@@ -1,4 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: allegro,v 1.4 2009/09/19 16:28:07 christos Exp $
|
||||
# allegro: file(1) magic for Allegro datafiles
|
||||
# Toby Deshane <[email protected]>
|
||||
#
|
||||
@@ -1,5 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: alliant,v 1.7 2009/09/19 16:28:07 christos Exp $
|
||||
# alliant: file(1) magic for Alliant FX series a.out files
|
||||
#
|
||||
# If the FX series is the one that had a processor with a 68K-derived
|
||||
@@ -1,4 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: amanda,v 1.5 2009/09/19 16:28:07 christos Exp $
|
||||
# amanda: file(1) magic for amanda file format
|
||||
#
|
||||
0 string AMANDA:\ AMANDA
|
||||
@@ -1,4 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: amigaos,v 1.15 2012/06/21 01:13:59 christos Exp $
|
||||
# amigaos: file(1) magic for AmigaOS binary formats:
|
||||
|
||||
#
|
||||
@@ -61,3 +63,6 @@
|
||||
# From: Alex Beregszaszi <[email protected]>
|
||||
0 string LZX LZX compressed archive (Amiga)
|
||||
|
||||
# From: Przemek Kramarczyk <[email protected]>
|
||||
0 string .KEY AmigaDOS script
|
||||
0 string .key AmigaDOS script
|
||||
@@ -0,0 +1,139 @@
|
||||
|
||||
#------------------------------------------------------------
|
||||
# $File: android,v 1.7 2014/11/10 05:08:23 christos Exp $
|
||||
# Various android related magic entries
|
||||
#------------------------------------------------------------
|
||||
|
||||
# Dalvik .dex format. http://retrodev.com/android/dexformat.html
|
||||
# From <[email protected]> "Mike Fleming"
|
||||
# Fixed to avoid regexec 17 errors on some dex files
|
||||
# From <[email protected]> "Tim Strazzere"
|
||||
0 string dex\n
|
||||
>0 regex dex\n[0-9]{2}\0 Dalvik dex file
|
||||
>4 string >000 version %s
|
||||
0 string dey\n
|
||||
>0 regex dey\n[0-9]{2}\0 Dalvik dex file (optimized for host)
|
||||
>4 string >000 version %s
|
||||
|
||||
# Android bootimg format
|
||||
# From https://android.googlesource.com/\
|
||||
# platform/system/core/+/master/mkbootimg/bootimg.h
|
||||
0 string ANDROID! Android bootimg
|
||||
>1024 string LOKI\01 \b, LOKI'd
|
||||
>8 lelong >0 \b, kernel
|
||||
>>12 lelong >0 \b (0x%x)
|
||||
>16 lelong >0 \b, ramdisk
|
||||
>>20 lelong >0 \b (0x%x)
|
||||
>24 lelong >0 \b, second stage
|
||||
>>28 lelong >0 \b (0x%x)
|
||||
>36 lelong >0 \b, page size: %d
|
||||
>38 string >0 \b, name: %s
|
||||
>64 string >0 \b, cmdline (%s)
|
||||
|
||||
# Android Backup archive
|
||||
# From: Ariel Shkedi
|
||||
# File extension: .ab
|
||||
# No mime-type defined
|
||||
# URL: https://github.com/android/platform_frameworks_base/blob/\
|
||||
# 0bacfd2ba68d21a68a3df345b830bc2a1e515b5a/services/java/com/\
|
||||
# android/server/BackupManagerService.java#L2367
|
||||
# After the header comes a tar file
|
||||
# If compressed, the entire tar file is compressed with JAVA deflate
|
||||
#
|
||||
# Include the version number hardcoded with the magic string to avoid
|
||||
# false positives
|
||||
0 string/b ANDROID\ BACKUP\n1\n Android Backup
|
||||
>17 string 0\n \b, Not-Compressed
|
||||
>17 string 1\n \b, Compressed
|
||||
# any string as long as it's not the word none (which is matched below)
|
||||
>>19 regex/1l \^([^n\n]|n[^o]|no[^n]|non[^e]|none.+).* \b, Encrypted (%s)
|
||||
>>19 string none\n \b, Not-Encrypted
|
||||
# Commented out because they don't seem useful to print
|
||||
# (but they are part of the header - the tar file comes after them):
|
||||
#>>>&1 regex/1l .* \b, Password salt: %s
|
||||
#>>>>&1 regex/1l .* \b, Master salt: %s
|
||||
#>>>>>&1 regex/1l .* \b, PBKDF2 rounds: %s
|
||||
#>>>>>>&1 regex/1l .* \b, IV: %s
|
||||
#>>>>>>>&1 regex/1l .* \b, Key: %s
|
||||
|
||||
# *.pit files by Joerg Jenderek
|
||||
# http://forum.xda-developers.com/showthread.php?p=9122369
|
||||
# http://forum.xda-developers.com/showthread.php?t=816449
|
||||
# Partition Information Table for Samsung's smartphone with Android
|
||||
# used by flash software Odin
|
||||
0 ulelong 0x12349876
|
||||
# 1st pit entry marker
|
||||
>0x01C ulequad&0xFFFFFFFCFFFFFFFC =0x0000000000000000
|
||||
# minimal 13 and maximal 18 PIT entries found
|
||||
>>4 ulelong <128 Partition Information Table for Samsung smartphone
|
||||
>>>4 ulelong x \b, %d entries
|
||||
# 1. pit entry
|
||||
>>>4 ulelong >0 \b; #1
|
||||
>>>0x01C use PIT-entry
|
||||
>>>4 ulelong >1 \b; #2
|
||||
>>>0x0A0 use PIT-entry
|
||||
>>>4 ulelong >2 \b; #3
|
||||
>>>0x124 use PIT-entry
|
||||
>>>4 ulelong >3 \b; #4
|
||||
>>>0x1A8 use PIT-entry
|
||||
>>>4 ulelong >4 \b; #5
|
||||
>>>0x22C use PIT-entry
|
||||
>>>4 ulelong >5 \b; #6
|
||||
>>>0x2B0 use PIT-entry
|
||||
>>>4 ulelong >6 \b; #7
|
||||
>>>0x334 use PIT-entry
|
||||
>>>4 ulelong >7 \b; #8
|
||||
>>>0x3B8 use PIT-entry
|
||||
>>>4 ulelong >8 \b; #9
|
||||
>>>0x43C use PIT-entry
|
||||
>>>4 ulelong >9 \b; #10
|
||||
>>>0x4C0 use PIT-entry
|
||||
>>>4 ulelong >10 \b; #11
|
||||
>>>0x544 use PIT-entry
|
||||
>>>4 ulelong >11 \b; #12
|
||||
>>>0x5C8 use PIT-entry
|
||||
>>>4 ulelong >12 \b; #13
|
||||
>>>>0x64C use PIT-entry
|
||||
# 14. pit entry
|
||||
>>>4 ulelong >13 \b; #14
|
||||
>>>>0x6D0 use PIT-entry
|
||||
>>>4 ulelong >14 \b; #15
|
||||
>>>0x754 use PIT-entry
|
||||
>>>4 ulelong >15 \b; #16
|
||||
>>>0x7D8 use PIT-entry
|
||||
>>>4 ulelong >16 \b; #17
|
||||
>>>0x85C use PIT-entry
|
||||
# 18. pit entry
|
||||
>>>4 ulelong >17 \b; #18
|
||||
>>>0x8E0 use PIT-entry
|
||||
|
||||
0 name PIT-entry
|
||||
# garbage value implies end of pit entries
|
||||
>0x00 ulequad&0xFFFFFFFCFFFFFFFC =0x0000000000000000
|
||||
# skip empty partition name
|
||||
>>0x24 ubyte !0
|
||||
# partition name
|
||||
>>>0x24 string >\0 %-.32s
|
||||
# flags
|
||||
>>>0x0C ulelong&0x00000002 2 \b+RW
|
||||
# partition ID:
|
||||
# 0~IPL,MOVINAND,GANG;1~PIT,GPT;2~HIDDEN;3~SBL,HIDDEN;4~SBL2,HIDDEN;5~BOOT;6~KENREl,RECOVER,misc;7~RECOVER
|
||||
# ;11~MODEM;20~efs;21~PARAM;22~FACTORY,SYSTEM;23~DBDATAFS,USERDATA;24~CACHE;80~BOOTLOADER;81~TZSW
|
||||
>>>0x08 ulelong x (0x%x)
|
||||
# filename
|
||||
>>>0x44 string >\0 "%-.64s"
|
||||
#>>>0x18 ulelong >0
|
||||
# blocksize in 512 byte units ?
|
||||
#>>>>0x18 ulelong x \b, %db
|
||||
# partition size in blocks ?
|
||||
#>>>>0x22 ulelong x \b*%d
|
||||
|
||||
# Android bootimg format
|
||||
# From https://android.googlesource.com/\
|
||||
# platform/system/core/+/master/libsparse/sparse_format.h
|
||||
0 lelong 0xed26ff3a Android sparse image
|
||||
>4 leshort x \b, version: %d
|
||||
>6 leshort x \b.%d
|
||||
>16 lelong x \b, Total of %d
|
||||
>12 lelong x \b %d-byte output blocks in
|
||||
>20 lelong x \b %d input chunks.
|
||||
@@ -1,5 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: animation,v 1.56 2014/10/23 23:12:51 christos Exp $
|
||||
# animation: file(1) magic for animation/movie formats
|
||||
#
|
||||
# animation formats
|
||||
@@ -29,37 +30,157 @@
|
||||
#!:mime image/x-quicktime
|
||||
4 string pckg Apple QuickTime compressed archive
|
||||
!:mime application/x-quicktime-player
|
||||
4 string/B jP JPEG 2000 image
|
||||
4 string/W jP JPEG 2000 image
|
||||
!:mime image/jp2
|
||||
# http://www.ftyps.com/ with local additions
|
||||
4 string ftyp ISO Media
|
||||
>8 string isom \b, MPEG v4 system, version 1
|
||||
!:mime video/mp4
|
||||
>8 string iso2 \b, MPEG v4 system, part 12 revision
|
||||
>8 string mp41 \b, MPEG v4 system, version 1
|
||||
!:mime video/mp4
|
||||
>8 string mp42 \b, MPEG v4 system, version 2
|
||||
!:mime video/mp4
|
||||
>8 string mp7t \b, MPEG v4 system, MPEG v7 XML
|
||||
>8 string mp7b \b, MPEG v4 system, MPEG v7 binary XML
|
||||
>8 string/B jp2 \b, JPEG 2000
|
||||
!:mime image/jp2
|
||||
>8 string 3gp \b, MPEG v4 system, 3GPP
|
||||
!:mime video/3gpp
|
||||
>8 string 3g2 \b, MPEG v4 system, 3GPP2
|
||||
!:mime video/3gpp2
|
||||
>>11 byte 4 \b v4 (H.263/AMR GSM 6.10)
|
||||
>>11 byte 5 \b v5 (H.263/AMR GSM 6.10)
|
||||
>>11 byte 6 \b v6 (ITU H.264/AMR GSM 6.10)
|
||||
>>11 byte a \b C.S0050-0 V1.0
|
||||
>>11 byte b \b C.S0050-0-A V1.0.0
|
||||
>>11 byte c \b C.S0050-0-B V1.0
|
||||
>8 string 3ge \b, MPEG v4 system, 3GPP
|
||||
!:mime video/3gpp
|
||||
>>11 byte 6 \b, Release 6 MBMS Extended Presentations
|
||||
>>11 byte 7 \b, Release 7 MBMS Extended Presentations
|
||||
>8 string 3gg \b, MPEG v4 system, 3GPP
|
||||
>11 byte 6 \b, Release 6 General Profile
|
||||
!:mime video/3gpp
|
||||
>8 string 3gp \b, MPEG v4 system, 3GPP
|
||||
>11 byte 1 \b, Release %d (non existent)
|
||||
>11 byte 2 \b, Release %d (non existent)
|
||||
>11 byte 3 \b, Release %d (non existent)
|
||||
>11 byte 4 \b, Release %d
|
||||
>11 byte 5 \b, Release %d
|
||||
>11 byte 6 \b, Release %d
|
||||
>11 byte 7 \b, Release %d Streaming Servers
|
||||
!:mime video/3gpp
|
||||
>8 string 3gs \b, MPEG v4 system, 3GPP
|
||||
>11 byte 7 \b, Release %d Streaming Servers
|
||||
!:mime video/3gpp
|
||||
>8 string avc1 \b, MPEG v4 system, 3GPP JVT AVC [ISO 14496-12:2005]
|
||||
!:mime video/mp4
|
||||
>8 string/W qt \b, Apple QuickTime movie
|
||||
!:mime video/quicktime
|
||||
>8 string CAEP \b, Canon Digital Camera
|
||||
>8 string caqv \b, Casio Digital Camera
|
||||
>8 string CDes \b, Convergent Design
|
||||
>8 string da0a \b, DMB MAF w/ MPEG Layer II aud, MOT slides, DLS, JPG/PNG/MNG
|
||||
>8 string da0b \b, DMB MAF, ext DA0A, with 3GPP timed text, DID, TVA, REL, IPMP
|
||||
>8 string da1a \b, DMB MAF audio with ER-BSAC audio, JPG/PNG/MNG images
|
||||
>8 string da1b \b, DMB MAF, ext da1a, with 3GPP timed text, DID, TVA, REL, IPMP
|
||||
>8 string da2a \b, DMB MAF aud w/ HE-AAC v2 aud, MOT slides, DLS, JPG/PNG/MNG
|
||||
>8 string da2b \b, DMB MAF, ext da2a, with 3GPP timed text, DID, TVA, REL, IPMP
|
||||
>8 string da3a \b, DMB MAF aud with HE-AAC aud, JPG/PNG/MNG images
|
||||
>8 string da3b \b, DMB MAF, ext da3a w/ BIFS, 3GPP, DID, TVA, REL, IPMP
|
||||
>8 string dmb1 \b, DMB MAF supporting all the components defined in the spec
|
||||
>8 string dmpf \b, Digital Media Project
|
||||
>8 string drc1 \b, Dirac (wavelet compression), encap in ISO base media (MP4)
|
||||
>8 string dv1a \b, DMB MAF vid w/ AVC vid, ER-BSAC aud, BIFS, JPG/PNG/MNG, TS
|
||||
>8 string dv1b \b, DMB MAF, ext dv1a, with 3GPP timed text, DID, TVA, REL, IPMP
|
||||
>8 string dv2a \b, DMB MAF vid w/ AVC vid, HE-AAC v2 aud, BIFS, JPG/PNG/MNG, TS
|
||||
>8 string dv2b \b, DMB MAF, ext dv2a, with 3GPP timed text, DID, TVA, REL, IPMP
|
||||
>8 string dv3a \b, DMB MAF vid w/ AVC vid, HE-AAC aud, BIFS, JPG/PNG/MNG, TS
|
||||
>8 string dv3b \b, DMB MAF, ext dv3a, with 3GPP timed text, DID, TVA, REL, IPMP
|
||||
>8 string dvr1 \b, DVB (.DVB) over RTP
|
||||
!:mime video/vnd.dvb.file
|
||||
>8 string dvt1 \b, DVB (.DVB) over MPEG-2 Transport Stream
|
||||
!:mime video/vnd.dvb.file
|
||||
>8 string F4V \b, Video for Adobe Flash Player 9+ (.F4V)
|
||||
!:mime video/mp4
|
||||
>8 string F4P \b, Protected Video for Adobe Flash Player 9+ (.F4P)
|
||||
!:mime video/mp4
|
||||
>8 string F4A \b, Audio for Adobe Flash Player 9+ (.F4A)
|
||||
!:mime audio/mp4
|
||||
>8 string F4B \b, Audio Book for Adobe Flash Player 9+ (.F4B)
|
||||
!:mime audio/mp4
|
||||
>8 string isc2 \b, ISMACryp 2.0 Encrypted File
|
||||
# ?/enc-isoff-generic
|
||||
>8 string iso2 \b, MP4 Base Media v2 [ISO 14496-12:2005]
|
||||
!:mime video/mp4
|
||||
>8 string isom \b, MP4 Base Media v1 [IS0 14496-12:2003]
|
||||
!:mime video/mp4
|
||||
>8 string/W jp2 \b, JPEG 2000
|
||||
!:mime image/jp2
|
||||
>8 string JP2 \b, JPEG 2000 Image (.JP2) [ISO 15444-1 ?]
|
||||
!:mime image/jp2
|
||||
>8 string JP20 \b, Unknown, from GPAC samples (prob non-existent)
|
||||
>8 string jpm \b, JPEG 2000 Compound Image (.JPM) [ISO 15444-6]
|
||||
!:mime image/jpm
|
||||
>8 string jpx \b, JPEG 2000 w/ extensions (.JPX) [ISO 15444-2]
|
||||
!:mime image/jpx
|
||||
>8 string KDDI \b, 3GPP2 EZmovie for KDDI 3G cellphones
|
||||
!:mime video/3gpp2
|
||||
>8 string M4A \b, Apple iTunes ALAC/AAC-LC (.M4A) Audio
|
||||
!:mime audio/x-m4a
|
||||
>8 string M4B \b, Apple iTunes ALAC/AAC-LC (.M4B) Audio Book
|
||||
!:mime audio/mp4
|
||||
>8 string M4P \b, Apple iTunes ALAC/AAC-LC (.M4P) AES Protected Audio
|
||||
!:mime video/mp4
|
||||
>8 string M4V \b, Apple iTunes Video (.M4V) Video
|
||||
!:mime video/x-m4v
|
||||
>8 string M4VH \b, Apple TV (.M4V)
|
||||
!:mime video/x-m4v
|
||||
>8 string M4VP \b, Apple iPhone (.M4V)
|
||||
!:mime video/x-m4v
|
||||
>8 string mj2s \b, Motion JPEG 2000 [ISO 15444-3] Simple Profile
|
||||
!:mime video/mj2
|
||||
>8 string mjp2 \b, Motion JPEG 2000 [ISO 15444-3] General Profile
|
||||
!:mime video/mj2
|
||||
>8 string mmp4 \b, MPEG-4/3GPP Mobile Profile (.MP4 / .3GP) (for NTT)
|
||||
!:mime video/mp4
|
||||
>8 string mobi \b, MPEG-4, MOBI format
|
||||
!:mime video/mp4
|
||||
>8 string mp21 \b, MPEG-21 [ISO/IEC 21000-9]
|
||||
>8 string mp41 \b, MP4 v1 [ISO 14496-1:ch13]
|
||||
!:mime video/mp4
|
||||
>8 string mp42 \b, MP4 v2 [ISO 14496-14]
|
||||
!:mime video/mp4
|
||||
>8 string mp71 \b, MP4 w/ MPEG-7 Metadata [per ISO 14496-12]
|
||||
>8 string mp7t \b, MPEG v4 system, MPEG v7 XML
|
||||
>8 string mp7b \b, MPEG v4 system, MPEG v7 binary XML
|
||||
>8 string mmp4 \b, MPEG v4 system, 3GPP Mobile
|
||||
!:mime video/mp4
|
||||
>8 string avc1 \b, MPEG v4 system, 3GPP JVT AVC
|
||||
!:mime video/3gpp
|
||||
>8 string/B M4A \b, MPEG v4 system, iTunes AAC-LC
|
||||
!:mime audio/mp4
|
||||
>8 string/B M4V \b, MPEG v4 system, iTunes AVC-LC
|
||||
!:mime video/mp4
|
||||
>8 string/B M4P \b, MPEG v4 system, iTunes AES encrypted
|
||||
>8 string/B M4B \b, MPEG v4 system, iTunes bookmarked
|
||||
>8 string/B qt \b, Apple QuickTime movie
|
||||
>8 string MPPI \b, Photo Player, MAF [ISO/IEC 23000-3]
|
||||
>8 string mqt \b, Sony / Mobile QuickTime (.MQV) US Pat 7,477,830
|
||||
!:mime video/quicktime
|
||||
>8 string MSNV \b, MPEG-4 (.MP4) for SonyPSP
|
||||
!:mime audio/mp4
|
||||
>8 string NDAS \b, MP4 v2 [ISO 14496-14] Nero Digital AAC Audio
|
||||
!:mime audio/mp4
|
||||
>8 string NDSC \b, MPEG-4 (.MP4) Nero Cinema Profile
|
||||
!:mime video/mp4
|
||||
>8 string NDSH \b, MPEG-4 (.MP4) Nero HDTV Profile
|
||||
!:mime video/mp4
|
||||
>8 string NDSM \b, MPEG-4 (.MP4) Nero Mobile Profile
|
||||
!:mime video/mp4
|
||||
>8 string NDSP \b, MPEG-4 (.MP4) Nero Portable Profile
|
||||
!:mime video/mp4
|
||||
>8 string NDSS \b, MPEG-4 (.MP4) Nero Standard Profile
|
||||
!:mime video/mp4
|
||||
>8 string NDXC \b, H.264/MPEG-4 AVC (.MP4) Nero Cinema Profile
|
||||
!:mime video/mp4
|
||||
>8 string NDXH \b, H.264/MPEG-4 AVC (.MP4) Nero HDTV Profile
|
||||
!:mime video/mp4
|
||||
>8 string NDXM \b, H.264/MPEG-4 AVC (.MP4) Nero Mobile Profile
|
||||
!:mime video/mp4
|
||||
>8 string NDXP \b, H.264/MPEG-4 AVC (.MP4) Nero Portable Profile
|
||||
!:mime video/mp4
|
||||
>8 string NDXS \b, H.264/MPEG-4 AVC (.MP4) Nero Standard Profile
|
||||
!:mime video/mp4
|
||||
>8 string odcf \b, OMA DCF DRM Format 2.0 (OMA-TS-DRM-DCF-V2_0-20060303-A)
|
||||
>8 string opf2 \b, OMA PDCF DRM Format 2.1 (OMA-TS-DRM-DCF-V2_1-20070724-C)
|
||||
>8 string opx2 \b, OMA PDCF DRM + XBS ext (OMA-TS-DRM_XBS-V1_0-20070529-C)
|
||||
>8 string pana \b, Panasonic Digital Camera
|
||||
>8 string qt \b, Apple QuickTime (.MOV/QT)
|
||||
!:mime video/quicktime
|
||||
>8 string ROSS \b, Ross Video
|
||||
>8 string sdv \b, SD Memory Card Video
|
||||
>8 string ssc1 \b, Samsung stereo, single stream (patent pending)
|
||||
>8 string ssc2 \b, Samsung stereo, dual stream (patent pending)
|
||||
|
||||
# MPEG sequences
|
||||
# Scans for all common MPEG header start codes
|
||||
@@ -71,6 +192,7 @@
|
||||
>>7 byte x \b @ L %u
|
||||
0 belong&0xFFFFFF00 0x00000100
|
||||
>3 byte 0xBA MPEG sequence
|
||||
!:mime video/mpeg
|
||||
>>4 byte &0x40 \b, v2, program multiplex
|
||||
>>4 byte ^0x40 \b, v1, system multiplex
|
||||
>3 byte 0xBB MPEG sequence, v1/2, multiplex (missing pack header)
|
||||
@@ -79,7 +201,11 @@
|
||||
>>4 byte 77 \b, main
|
||||
>>4 byte 88 \b, extended
|
||||
>>6 byte x \b @ L %u
|
||||
# GRR too general as it catches also FoxPro Memo example NG.FPT
|
||||
>3 byte 0xB0 MPEG sequence, v4
|
||||
# TODO: maybe this extra line exclude FoxPro Memo example NG.FPT starting with 000001b0 00000100 00000000
|
||||
#>>4 byte !0 MPEG sequence, v4
|
||||
!:mime video/mpeg4-generic
|
||||
>>5 belong 0x000001B5
|
||||
>>>9 byte &0x80
|
||||
>>>>10 byte&0xF0 16 \b, video
|
||||
@@ -149,6 +275,7 @@
|
||||
>>4 byte 252 \b, FGS @ L4
|
||||
>>4 byte 253 \b, FGS @ L5
|
||||
>3 byte 0xB5 MPEG sequence, v4
|
||||
!:mime video/mpeg4-generic
|
||||
>>4 byte &0x80
|
||||
>>>5 byte&0xF0 16 \b, video (missing profile header)
|
||||
>>>5 byte&0xF0 32 \b, still texture (missing profile header)
|
||||
@@ -159,6 +286,7 @@
|
||||
>>4 byte&0xF8 24 \b, mesh (missing profile header)
|
||||
>>4 byte&0xF8 32 \b, face (missing profile header)
|
||||
>3 byte 0xB3 MPEG sequence
|
||||
!:mime video/mpeg
|
||||
>>12 belong 0x000001B8 \b, v1, progressive Y'CbCr 4:2:0 video
|
||||
>>12 belong 0x000001B2 \b, v1, progressive Y'CbCr 4:2:0 video
|
||||
>>12 belong 0x000001B5 \b, v2,
|
||||
@@ -435,6 +563,7 @@
|
||||
|
||||
# MP2, M2A
|
||||
0 beshort&0xFFFE 0xFFF4 MPEG ADTS, layer II, v2
|
||||
!:mime audio/mpeg
|
||||
# rate
|
||||
>2 byte&0xF0 0x10 \b, 8 kbps
|
||||
>2 byte&0xF0 0x20 \b, 16 kbps
|
||||
@@ -469,6 +598,7 @@
|
||||
|
||||
# MPA, M2A
|
||||
0 beshort&0xFFFE 0xFFF6 MPEG ADTS, layer I, v2
|
||||
!:mime audio/mpeg
|
||||
# rate
|
||||
>2 byte&0xF0 0x10 \b, 32 kbps
|
||||
>2 byte&0xF0 0x20 \b, 48 kbps
|
||||
@@ -503,6 +633,7 @@
|
||||
|
||||
# MP3, M25A
|
||||
0 beshort&0xFFFE 0xFFE2 MPEG ADTS, layer III, v2.5
|
||||
!:mime audio/mpeg
|
||||
# rate
|
||||
>2 byte&0xF0 0x10 \b, 8 kbps
|
||||
>2 byte&0xF0 0x20 \b, 16 kbps
|
||||
@@ -602,7 +733,7 @@
|
||||
# Live MPEG-4 audio streams (instead of RTP FlexMux)
|
||||
0 beshort&0xFFE0 0x56E0 MPEG-4 LOAS
|
||||
!:mime audio/x-mp4a-latm
|
||||
#>1 beshort&0x1FFF x \b, %u byte packet
|
||||
#>1 beshort&0x1FFF x \b, %hu byte packet
|
||||
>3 byte&0xE0 0x40
|
||||
>>4 byte&0x3C 0x04 \b, single stream
|
||||
>>4 byte&0x3C 0x08 \b, 2 streams
|
||||
@@ -673,10 +804,6 @@
|
||||
# iso 13818 transport stream
|
||||
#
|
||||
# from Oskar Schirmer <[email protected]> Feb 3, 2001 (ISO 13818.1)
|
||||
# (the following is a little bit restrictive and works fine for a stream
|
||||
# that starts with PAT properly. it won't work for stream data, that is
|
||||
# cut from an input device data right in the middle, but this shouldn't
|
||||
# disturb)
|
||||
# syncbyte 8 bit 0x47
|
||||
# error_ind 1 bit -
|
||||
# payload_start 1 bit 1
|
||||
@@ -684,9 +811,9 @@
|
||||
# PID 13 bit 0x0000
|
||||
# scrambling 2 bit -
|
||||
# adaptfld_ctrl 2 bit 1 or 3
|
||||
# conti_count 4 bit 0
|
||||
0 belong&0xFF5FFF1F 0x47400010 MPEG transport stream data
|
||||
>188 byte !0x47 CORRUPTED
|
||||
# conti_count 4 bit -
|
||||
0 belong&0xFF5FFF10 0x47400010
|
||||
>188 byte 0x47 MPEG transport stream data
|
||||
|
||||
# DIF digital video file format <[email protected]>
|
||||
0 belong&0xffffff00 0x1f070000 DIF
|
||||
@@ -697,37 +824,38 @@
|
||||
|
||||
# Microsoft Advanced Streaming Format (ASF) <[email protected]>
|
||||
0 belong 0x3026b275 Microsoft ASF
|
||||
!:mime video/x-ms-asf
|
||||
|
||||
# MNG Video Format, <URL:http://www.libpng.org/pub/mng/spec/>
|
||||
0 string \x8aMNG MNG video data,
|
||||
!:mime video/x-mng
|
||||
>4 belong !0x0d0a1a0a CORRUPTED,
|
||||
>4 belong 0x0d0a1a0a
|
||||
>>16 belong x %ld x
|
||||
>>20 belong x %ld
|
||||
>>16 belong x %d x
|
||||
>>20 belong x %d
|
||||
|
||||
# JNG Video Format, <URL:http://www.libpng.org/pub/mng/spec/>
|
||||
0 string \x8bJNG JNG video data,
|
||||
!:mime video/x-jng
|
||||
>4 belong !0x0d0a1a0a CORRUPTED,
|
||||
>4 belong 0x0d0a1a0a
|
||||
>>16 belong x %ld x
|
||||
>>20 belong x %ld
|
||||
>>16 belong x %d x
|
||||
>>20 belong x %d
|
||||
|
||||
# Vivo video (Wolfram Kleff)
|
||||
3 string \x0D\x0AVersion:Vivo Vivo video data
|
||||
|
||||
# VRML (Virtual Reality Modelling Language)
|
||||
0 string/b #VRML\ V1.0\ ascii VRML 1 file
|
||||
0 string/w #VRML\ V1.0\ ascii VRML 1 file
|
||||
!:mime model/vrml
|
||||
0 string/b #VRML\ V2.0\ utf8 ISO/IEC 14772 VRML 97 file
|
||||
0 string/w #VRML\ V2.0\ utf8 ISO/IEC 14772 VRML 97 file
|
||||
!:mime model/vrml
|
||||
|
||||
# X3D (Extensible 3D) [http://www.web3d.org/specifications/x3d-3.0.dtd]
|
||||
# From Michel Briand <[email protected]>
|
||||
0 string \<?xml\ version="
|
||||
0 string/t \<?xml\ version="
|
||||
!:strength +1
|
||||
>20 search/1000/cb \<!DOCTYPE\ X3D X3D (Extensible 3D) model xml text
|
||||
>20 search/1000/cw \<!DOCTYPE\ X3D X3D (Extensible 3D) model xml text
|
||||
!:mime model/x3d
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
@@ -739,7 +867,7 @@
|
||||
>0 byte x GameCube movie,
|
||||
>0x34 ubeshort x %d x
|
||||
>0x36 ubeshort x %d,
|
||||
>0x26 ubeshort x %dµs,
|
||||
>0x26 ubeshort x %dus,
|
||||
>0x42 ubeshort 0 no audio
|
||||
>0x42 ubeshort >0 %dHz audio
|
||||
|
||||
@@ -773,28 +901,30 @@
|
||||
|
||||
# MPEG file
|
||||
# MPEG sequences
|
||||
# FIXME: This section is from the old magic.mime file and needs integrating with the rest
|
||||
0 belong 0x000001BA
|
||||
>4 byte &0x40
|
||||
!:mime video/mp2p
|
||||
>4 byte ^0x40
|
||||
!:mime video/mpeg
|
||||
0 belong 0x000001BB
|
||||
!:mime video/mpeg
|
||||
0 belong 0x000001B0
|
||||
!:mime video/mp4v-es
|
||||
0 belong 0x000001B5
|
||||
!:mime video/mp4v-es
|
||||
0 belong 0x000001B3
|
||||
!:mime video/mpv
|
||||
0 belong&0xFF5FFF1F 0x47400010
|
||||
!:mime video/mp2t
|
||||
0 belong 0x00000001
|
||||
>4 byte&0x1F 0x07
|
||||
!:mime video/h264
|
||||
# FIXME: This section is from the old magic.mime file and needs
|
||||
# integrating with the rest
|
||||
#0 belong 0x000001BA
|
||||
#>4 byte &0x40
|
||||
#!:mime video/mp2p
|
||||
#>4 byte ^0x40
|
||||
#!:mime video/mpeg
|
||||
#0 belong 0x000001BB
|
||||
#!:mime video/mpeg
|
||||
#0 belong 0x000001B0
|
||||
#!:mime video/mp4v-es
|
||||
#0 belong 0x000001B5
|
||||
#!:mime video/mp4v-es
|
||||
#0 belong 0x000001B3
|
||||
#!:mime video/mpv
|
||||
#0 belong&0xFF5FFF10 0x47400010
|
||||
#!:mime video/mp2t
|
||||
#0 belong 0x00000001
|
||||
#>4 byte&0x1F 0x07
|
||||
#!:mime video/h264
|
||||
|
||||
# Type: Bink Video
|
||||
# URL: http://wiki.multimedia.cx/index.php?title=3DBink_Container
|
||||
# Extension: .bik
|
||||
# URL: http://wiki.multimedia.cx/index.php?title=Bink_Container
|
||||
# From: <[email protected]> 2008-07-18
|
||||
0 string BIK Bink Video
|
||||
>3 regex =[a-z] rev.%s
|
||||
@@ -813,3 +943,66 @@
|
||||
>>51 byte&0x20 !0 stereo
|
||||
#>>51 byte&0x10 0 FFT
|
||||
#>>51 byte&0x10 !0 DCT
|
||||
|
||||
# Type: NUT Container
|
||||
# URL: http://wiki.multimedia.cx/index.php?title=NUT
|
||||
# From: Adam Buchbinder <[email protected]>
|
||||
0 string nut/multimedia\ container\0 NUT multimedia container
|
||||
|
||||
# Type: Nullsoft Video (NSV)
|
||||
# URL: http://wiki.multimedia.cx/index.php?title=Nullsoft_Video
|
||||
# From: Mike Melanson <[email protected]>
|
||||
0 string NSVf Nullsoft Video
|
||||
|
||||
# Type: REDCode Video
|
||||
# URL: http://www.red.com/ ; http://wiki.multimedia.cx/index.php?title=REDCode
|
||||
# From: Mike Melanson <[email protected]>
|
||||
4 string RED1 REDCode Video
|
||||
|
||||
# Type: MTV Multimedia File
|
||||
# URL: http://wiki.multimedia.cx/index.php?title=MTV
|
||||
# From: Mike Melanson <[email protected]>
|
||||
0 string AMVS MTV Multimedia File
|
||||
|
||||
# Type: ARMovie
|
||||
# URL: http://wiki.multimedia.cx/index.php?title=ARMovie
|
||||
# From: Mike Melanson <[email protected]>
|
||||
0 string ARMovie\012 ARMovie
|
||||
|
||||
# Type: Interplay MVE Movie
|
||||
# URL: http://wiki.multimedia.cx/index.php?title=Interplay_MVE
|
||||
# From: Mike Melanson <[email protected]>
|
||||
0 string Interplay\040MVE\040File\032 Interplay MVE Movie
|
||||
|
||||
# Type: Windows Television DVR File
|
||||
# URL: http://wiki.multimedia.cx/index.php?title=WTV
|
||||
# From: Mike Melanson <[email protected]>
|
||||
# This takes the form of a Windows-style GUID
|
||||
0 bequad 0xB7D800203749DA11
|
||||
>8 bequad 0xA64E0007E95EAD8D Windows Television DVR Media
|
||||
|
||||
# Type: Sega FILM/CPK Multimedia
|
||||
# URL: http://wiki.multimedia.cx/index.php?title=Sega_FILM
|
||||
# From: Mike Melanson <[email protected]>
|
||||
0 string FILM Sega FILM/CPK Multimedia,
|
||||
>32 belong x %d x
|
||||
>28 belong x %d
|
||||
|
||||
# Type: Nintendo THP Multimedia
|
||||
# URL: http://wiki.multimedia.cx/index.php?title=THP
|
||||
# From: Mike Melanson <[email protected]>
|
||||
0 string THP\0 Nintendo THP Multimedia
|
||||
|
||||
# Type: BBC Dirac Video
|
||||
# URL: http://wiki.multimedia.cx/index.php?title=Dirac
|
||||
# From: Mike Melanson <[email protected]>
|
||||
0 string BBCD BBC Dirac Video
|
||||
|
||||
# Type: RAD Game Tools Smacker Multimedia
|
||||
# URL: http://wiki.multimedia.cx/index.php?title=Smacker
|
||||
# From: Mike Melanson <[email protected]>
|
||||
0 string SMK RAD Game Tools Smacker Multimedia
|
||||
>3 byte x version %c,
|
||||
>4 lelong x %d x
|
||||
>8 lelong x %d,
|
||||
>12 lelong x %d frames
|
||||
@@ -0,0 +1,46 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: aout,v 1.1 2013/01/09 22:37:23 christos Exp $
|
||||
# aout: file(1) magic for a.out executable/object/etc entries that
|
||||
# handle executables on multiple platforms.
|
||||
#
|
||||
|
||||
#
|
||||
# Little-endian 32-bit-int a.out, merged from bsdi (for BSD/OS, from
|
||||
# BSDI), netbsd, and vax (for UNIX/32V and BSD)
|
||||
#
|
||||
# XXX - is there anything we can look at to distinguish BSD/OS 386 from
|
||||
# NetBSD 386 from various VAX binaries? The BSD/OS shared library flag
|
||||
# works only for binaries using shared libraries. Grabbing the entry
|
||||
# point from the a.out header, using it to find the first code executed
|
||||
# in the program, and looking at that might help.
|
||||
#
|
||||
0 lelong 0407 a.out little-endian 32-bit executable
|
||||
>16 lelong >0 not stripped
|
||||
>32 byte 0x6a (uses BSD/OS shared libs)
|
||||
|
||||
0 lelong 0410 a.out little-endian 32-bit pure executable
|
||||
>16 lelong >0 not stripped
|
||||
>32 byte 0x6a (uses BSD/OS shared libs)
|
||||
|
||||
0 lelong 0413 a.out little-endian 32-bit demand paged pure executable
|
||||
>16 lelong >0 not stripped
|
||||
>32 byte 0x6a (uses BSD/OS shared libs)
|
||||
|
||||
#
|
||||
# Big-endian 32-bit-int a.out, merged from sun (for old 68010 SunOS a.out),
|
||||
# mips (for old 68020(!) SGI a.out), and netbsd (for old big-endian a.out).
|
||||
#
|
||||
# XXX - is there anything we can look at to distinguish old SunOS 68010
|
||||
# from old 68020 IRIX from old NetBSD? Again, I guess we could look at
|
||||
# the first instruction or instructions in the program.
|
||||
#
|
||||
0 belong 0407 a.out big-endian 32-bit executable
|
||||
>16 belong >0 not stripped
|
||||
|
||||
0 belong 0410 a.out big-endian 32-bit pure executable
|
||||
>16 belong >0 not stripped
|
||||
|
||||
0 belong 0413 a.out big-endian 32-bit demand paged executable
|
||||
>16 belong >0 not stripped
|
||||
|
||||
Loaded 100 of 1342 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user