mirror of
https://github.com/file/file.git
synced 2024-11-27 11:53:41 +08:00
Always enable quick mode, even if we don't have mmap (christos)
Autoconf help for mmap (Alexander Mai)
This commit is contained in:
parent
d7ee1e5f7d
commit
c15a4a87f3
@ -6,7 +6,7 @@ bin_PROGRAMS = file
|
||||
data_DATA = magic magic.mime magic.mgc
|
||||
|
||||
MAGIC = @datadir@/magic
|
||||
CPPFLAGS = -DMAGIC='"$(MAGIC)"' -DQUICK
|
||||
CPPFLAGS = -DMAGIC='"$(MAGIC)"'
|
||||
|
||||
man_MANS = file.1 magic.4
|
||||
|
||||
|
@ -72,7 +72,7 @@ bin_PROGRAMS = file
|
||||
data_DATA = magic magic.mime magic.mgc
|
||||
|
||||
MAGIC = @datadir@/magic
|
||||
CPPFLAGS = -DMAGIC='"$(MAGIC)"' -DQUICK
|
||||
CPPFLAGS = -DMAGIC='"$(MAGIC)"'
|
||||
|
||||
man_MANS = file.1 magic.4
|
||||
|
||||
|
@ -58,6 +58,9 @@
|
||||
/* The number of bytes in a uint64_t. */
|
||||
#define SIZEOF_UINT64_T 0
|
||||
|
||||
/* Define if you have the mmap function. */
|
||||
#undef HAVE_MMAP
|
||||
|
||||
/* Define if you have the strerror function. */
|
||||
#undef HAVE_STRERROR
|
||||
|
||||
@ -67,6 +70,9 @@
|
||||
/* Define if you have the <locale.h> header file. */
|
||||
#undef HAVE_LOCALE_H
|
||||
|
||||
/* Define if you have the <sys/mman.h> header file. */
|
||||
#undef HAVE_SYS_MMAN_H
|
||||
|
||||
/* Define if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
|
114
configure
vendored
114
configure
vendored
@ -1553,14 +1553,54 @@ else
|
||||
fi
|
||||
done
|
||||
|
||||
for ac_hdr in sys/mman.h
|
||||
do
|
||||
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
|
||||
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
|
||||
echo "configure:1561: checking for $ac_hdr" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1566 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <$ac_hdr>
|
||||
EOF
|
||||
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
|
||||
{ (eval echo configure:1571: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
|
||||
if test -z "$ac_err"; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_header_$ac_safe=yes"
|
||||
else
|
||||
echo "$ac_err" >&5
|
||||
echo "configure: failed program was:" >&5
|
||||
cat conftest.$ac_ext >&5
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_header_$ac_safe=no"
|
||||
fi
|
||||
rm -f conftest*
|
||||
fi
|
||||
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
|
||||
echo "$ac_t""yes" 1>&6
|
||||
ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
|
||||
cat >> confdefs.h <<EOF
|
||||
#define $ac_tr_hdr 1
|
||||
EOF
|
||||
|
||||
else
|
||||
echo "$ac_t""no" 1>&6
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
echo $ac_n "checking for working const""... $ac_c" 1>&6
|
||||
echo "configure:1559: checking for working const" >&5
|
||||
echo "configure:1599: checking for working const" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1564 "configure"
|
||||
#line 1604 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
int main() {
|
||||
@ -1609,7 +1649,7 @@ ccp = (char const *const *) p;
|
||||
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:1613: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:1653: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
ac_cv_c_const=yes
|
||||
else
|
||||
@ -1630,12 +1670,12 @@ EOF
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for off_t""... $ac_c" 1>&6
|
||||
echo "configure:1634: checking for off_t" >&5
|
||||
echo "configure:1674: checking for off_t" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1639 "configure"
|
||||
#line 1679 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#if STDC_HEADERS
|
||||
@ -1663,12 +1703,12 @@ EOF
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for size_t""... $ac_c" 1>&6
|
||||
echo "configure:1667: checking for size_t" >&5
|
||||
echo "configure:1707: checking for size_t" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1672 "configure"
|
||||
#line 1712 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#if STDC_HEADERS
|
||||
@ -1696,12 +1736,12 @@ EOF
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for st_rdev in struct stat""... $ac_c" 1>&6
|
||||
echo "configure:1700: checking for st_rdev in struct stat" >&5
|
||||
echo "configure:1740: checking for st_rdev in struct stat" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_struct_st_rdev'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1705 "configure"
|
||||
#line 1745 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
@ -1709,7 +1749,7 @@ int main() {
|
||||
struct stat s; s.st_rdev;
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:1713: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:1753: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
ac_cv_struct_st_rdev=yes
|
||||
else
|
||||
@ -1731,12 +1771,12 @@ fi
|
||||
|
||||
|
||||
echo $ac_n "checking for uint8_t""... $ac_c" 1>&6
|
||||
echo "configure:1735: checking for uint8_t" >&5
|
||||
echo "configure:1775: checking for uint8_t" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_type_uint8_t'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1740 "configure"
|
||||
#line 1780 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#if STDC_HEADERS
|
||||
@ -1764,12 +1804,12 @@ EOF
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for uint16_t""... $ac_c" 1>&6
|
||||
echo "configure:1768: checking for uint16_t" >&5
|
||||
echo "configure:1808: checking for uint16_t" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_type_uint16_t'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1773 "configure"
|
||||
#line 1813 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#if STDC_HEADERS
|
||||
@ -1797,12 +1837,12 @@ EOF
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for uint32_t""... $ac_c" 1>&6
|
||||
echo "configure:1801: checking for uint32_t" >&5
|
||||
echo "configure:1841: checking for uint32_t" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_type_uint32_t'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1806 "configure"
|
||||
#line 1846 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#if STDC_HEADERS
|
||||
@ -1831,7 +1871,7 @@ fi
|
||||
|
||||
|
||||
echo $ac_n "checking for long long""... $ac_c" 1>&6
|
||||
echo "configure:1835: checking for long long" >&5
|
||||
echo "configure:1875: checking for long long" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_c_long_long'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1842,13 +1882,13 @@ if test "$cross_compiling" = yes; then
|
||||
{ echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1846 "configure"
|
||||
#line 1886 "configure"
|
||||
#include "confdefs.h"
|
||||
int main() {
|
||||
long long foo = 0;
|
||||
exit(sizeof(long long) < sizeof(long)); }
|
||||
EOF
|
||||
if { (eval echo configure:1852: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
|
||||
if { (eval echo configure:1892: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
|
||||
then
|
||||
ac_cv_c_long_long=yes
|
||||
else
|
||||
@ -1877,12 +1917,12 @@ else
|
||||
long64='unsigned long';
|
||||
fi
|
||||
echo $ac_n "checking for uint64_t""... $ac_c" 1>&6
|
||||
echo "configure:1881: checking for uint64_t" >&5
|
||||
echo "configure:1921: checking for uint64_t" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_type_uint64_t'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1886 "configure"
|
||||
#line 1926 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#if STDC_HEADERS
|
||||
@ -1913,7 +1953,7 @@ fi
|
||||
|
||||
|
||||
echo $ac_n "checking size of uint8_t""... $ac_c" 1>&6
|
||||
echo "configure:1917: checking size of uint8_t" >&5
|
||||
echo "configure:1957: checking size of uint8_t" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_sizeof_uint8_t'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1921,7 +1961,7 @@ else
|
||||
ac_cv_sizeof_uint8_t=0
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1925 "configure"
|
||||
#line 1965 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#ifdef STDC_HEADERS
|
||||
@ -1937,7 +1977,7 @@ main()
|
||||
exit(0);
|
||||
}
|
||||
EOF
|
||||
if { (eval echo configure:1941: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
|
||||
if { (eval echo configure:1981: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
|
||||
then
|
||||
ac_cv_sizeof_uint8_t=`cat conftestval`
|
||||
else
|
||||
@ -1958,7 +1998,7 @@ EOF
|
||||
|
||||
|
||||
echo $ac_n "checking size of uint16_t""... $ac_c" 1>&6
|
||||
echo "configure:1962: checking size of uint16_t" >&5
|
||||
echo "configure:2002: checking size of uint16_t" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_sizeof_uint16_t'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1966,7 +2006,7 @@ else
|
||||
ac_cv_sizeof_uint16_t=0
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1970 "configure"
|
||||
#line 2010 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#ifdef STDC_HEADERS
|
||||
@ -1982,7 +2022,7 @@ main()
|
||||
exit(0);
|
||||
}
|
||||
EOF
|
||||
if { (eval echo configure:1986: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
|
||||
if { (eval echo configure:2026: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
|
||||
then
|
||||
ac_cv_sizeof_uint16_t=`cat conftestval`
|
||||
else
|
||||
@ -2003,7 +2043,7 @@ EOF
|
||||
|
||||
|
||||
echo $ac_n "checking size of uint32_t""... $ac_c" 1>&6
|
||||
echo "configure:2007: checking size of uint32_t" >&5
|
||||
echo "configure:2047: checking size of uint32_t" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_sizeof_uint32_t'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2011,7 +2051,7 @@ else
|
||||
ac_cv_sizeof_uint32_t=0
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2015 "configure"
|
||||
#line 2055 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#ifdef STDC_HEADERS
|
||||
@ -2027,7 +2067,7 @@ main()
|
||||
exit(0);
|
||||
}
|
||||
EOF
|
||||
if { (eval echo configure:2031: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
|
||||
if { (eval echo configure:2071: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
|
||||
then
|
||||
ac_cv_sizeof_uint32_t=`cat conftestval`
|
||||
else
|
||||
@ -2048,7 +2088,7 @@ EOF
|
||||
|
||||
|
||||
echo $ac_n "checking size of uint64_t""... $ac_c" 1>&6
|
||||
echo "configure:2052: checking size of uint64_t" >&5
|
||||
echo "configure:2092: checking size of uint64_t" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_sizeof_uint64_t'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2056,7 +2096,7 @@ else
|
||||
ac_cv_sizeof_uint64_t=0
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2060 "configure"
|
||||
#line 2100 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <sys/types.h>
|
||||
#ifdef STDC_HEADERS
|
||||
@ -2072,7 +2112,7 @@ main()
|
||||
exit(0);
|
||||
}
|
||||
EOF
|
||||
if { (eval echo configure:2076: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
|
||||
if { (eval echo configure:2116: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
|
||||
then
|
||||
ac_cv_sizeof_uint64_t=`cat conftestval`
|
||||
else
|
||||
@ -2093,15 +2133,15 @@ EOF
|
||||
|
||||
|
||||
|
||||
for ac_func in strerror strtoul
|
||||
for ac_func in mmap strerror strtoul
|
||||
do
|
||||
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
|
||||
echo "configure:2100: checking for $ac_func" >&5
|
||||
echo "configure:2140: checking for $ac_func" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2105 "configure"
|
||||
#line 2145 "configure"
|
||||
#include "confdefs.h"
|
||||
/* System header to define __stub macros and hopefully few prototypes,
|
||||
which can conflict with char $ac_func(); below. */
|
||||
@ -2124,7 +2164,7 @@ $ac_func();
|
||||
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:2128: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
if { (eval echo configure:2168: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
rm -rf conftest*
|
||||
eval "ac_cv_func_$ac_func=yes"
|
||||
else
|
||||
|
@ -42,6 +42,7 @@ AC_HEADER_MAJOR
|
||||
AC_HEADER_SYS_WAIT
|
||||
AC_CHECK_HEADERS(unistd.h)
|
||||
AC_CHECK_HEADERS(locale.h)
|
||||
AC_CHECK_HEADERS(sys/mman.h)
|
||||
|
||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
||||
AC_C_CONST
|
||||
@ -69,6 +70,6 @@ AC_CHECK_SIZEOF_STDC_HEADERS(uint32_t, 0)
|
||||
AC_CHECK_SIZEOF_STDC_HEADERS(uint64_t, 0)
|
||||
|
||||
dnl Checks for functions
|
||||
AC_CHECK_FUNCS(strerror strtoul)
|
||||
AC_CHECK_FUNCS(mmap strerror strtoul)
|
||||
|
||||
AC_OUTPUT(Makefile)
|
||||
|
@ -25,6 +25,7 @@
|
||||
* 4. This notice may not be removed or altered.
|
||||
*/
|
||||
|
||||
#include "file.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
@ -32,13 +33,13 @@
|
||||
#include <errno.h>
|
||||
#ifdef QUICK
|
||||
#include <fcntl.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/mman.h>
|
||||
#endif
|
||||
#include "file.h"
|
||||
|
||||
#ifndef lint
|
||||
FILE_RCSID("@(#)$Id: apprentice.c,v 1.39 2001/04/24 14:40:24 christos Exp $")
|
||||
FILE_RCSID("@(#)$Id: apprentice.c,v 1.40 2001/04/27 23:59:51 christos Exp $")
|
||||
#endif /* lint */
|
||||
|
||||
#define EATAB {while (isascii((unsigned char) *l) && \
|
||||
@ -78,17 +79,15 @@ static void eatsize __P((char **));
|
||||
static int apprentice_1 __P((const char *, int));
|
||||
static int apprentice_file __P((struct magic **, uint32 *,
|
||||
const char *, int));
|
||||
#ifdef QUICK
|
||||
static void byteswap __P((struct magic *, uint32));
|
||||
static void bs1 __P((struct magic *));
|
||||
static uint16 swap2 __P((uint16));
|
||||
static uint32 swap4 __P((uint32));
|
||||
static char * mkdbname __P((const char *));
|
||||
static char *mkdbname __P((const char *));
|
||||
static int apprentice_map __P((struct magic **, uint32 *,
|
||||
const char *, int));
|
||||
static int apprentice_compile __P((struct magic **, uint32 *,
|
||||
const char *, int));
|
||||
#endif
|
||||
|
||||
static int maxmagic = 0;
|
||||
|
||||
@ -108,7 +107,6 @@ apprentice_1(fn, action)
|
||||
struct mlist *ml;
|
||||
int rv = -1;
|
||||
|
||||
#ifdef QUICK
|
||||
if (action == COMPILE) {
|
||||
rv = apprentice_file(&magic, &nmagic, fn, action);
|
||||
if (rv == 0)
|
||||
@ -119,7 +117,6 @@ apprentice_1(fn, action)
|
||||
if ((rv = apprentice_map(&magic, &nmagic, fn, action)) != 0)
|
||||
(void)fprintf(stderr, "%s: Using regular magic file `%s'\n",
|
||||
progname, fn);
|
||||
#endif
|
||||
|
||||
if (rv != 0)
|
||||
rv = apprentice_file(&magic, &nmagic, fn, action);
|
||||
@ -128,7 +125,8 @@ apprentice_1(fn, action)
|
||||
return rv;
|
||||
|
||||
if ((ml = malloc(sizeof(*ml))) == NULL) {
|
||||
(void) fprintf(stderr, "%s: Out of memory.\n", progname);
|
||||
(void) fprintf(stderr, "%s: Out of memory (%s).\n", progname,
|
||||
strerror(errno));
|
||||
if (action == CHECK)
|
||||
return -1;
|
||||
}
|
||||
@ -159,7 +157,8 @@ apprentice(fn, action)
|
||||
mlist.next = mlist.prev = &mlist;
|
||||
mfn = malloc(strlen(fn)+1);
|
||||
if (mfn == NULL) {
|
||||
(void) fprintf(stderr, "%s: Out of memory.\n", progname);
|
||||
(void) fprintf(stderr, "%s: Out of memory (%s).\n", progname,
|
||||
strerror(errno));
|
||||
if (action == CHECK)
|
||||
return -1;
|
||||
else
|
||||
@ -214,7 +213,8 @@ apprentice_file(magicp, nmagicp, fn, action)
|
||||
maxmagic = MAXMAGIS;
|
||||
*magicp = (struct magic *) calloc(sizeof(struct magic), maxmagic);
|
||||
if (*magicp == NULL) {
|
||||
(void) fprintf(stderr, "%s: Out of memory.\n", progname);
|
||||
(void) fprintf(stderr, "%s: Out of memory (%s).\n", progname,
|
||||
strerror(errno));
|
||||
if (action == CHECK)
|
||||
return -1;
|
||||
}
|
||||
@ -302,8 +302,8 @@ parse(magicp, nmagicp, l, action)
|
||||
maxmagic += ALLOC_INCR;
|
||||
if ((m = (struct magic *) realloc(*magicp,
|
||||
sizeof(struct magic) * maxmagic)) == NULL) {
|
||||
(void) fprintf(stderr, "%s: Out of memory.\n",
|
||||
progname);
|
||||
(void) fprintf(stderr, "%s: Out of memory (%s).\n",
|
||||
progname, strerror(errno));
|
||||
if (*magicp)
|
||||
free(*magicp);
|
||||
if (action == CHECK)
|
||||
@ -780,7 +780,6 @@ eatsize(p)
|
||||
*p = l;
|
||||
}
|
||||
|
||||
#ifdef QUICK
|
||||
/*
|
||||
* handle an mmaped file.
|
||||
*/
|
||||
@ -798,6 +797,9 @@ apprentice_map(magicp, nmagicp, fn, action)
|
||||
int needsbyteswap;
|
||||
char *dbname = mkdbname(fn);
|
||||
|
||||
if (dbname == NULL)
|
||||
return -1;
|
||||
|
||||
if ((fd = open(dbname, O_RDONLY)) == -1)
|
||||
return -1;
|
||||
|
||||
@ -807,12 +809,25 @@ apprentice_map(magicp, nmagicp, fn, action)
|
||||
goto error;
|
||||
}
|
||||
|
||||
#ifdef QUICK
|
||||
if ((*magicp = mmap(0, (size_t)st.st_size, PROT_READ|PROT_WRITE,
|
||||
MAP_PRIVATE|MAP_FILE, fd, (off_t)0)) == MAP_FAILED) {
|
||||
(void)fprintf(stderr, "%s: Cannot map `%s' (%s)\n",
|
||||
progname, dbname, strerror(errno));
|
||||
goto error;
|
||||
}
|
||||
#else
|
||||
if ((*magicp = malloc((size_t)st.st_size)) == NULL) {
|
||||
(void) fprintf(stderr, "%s: Out of memory (%s).\n", progname,
|
||||
strerror(errno));
|
||||
goto error;
|
||||
}
|
||||
if (read(fd, *magicp, (size_t)st.st_size) != (size_t)st.st_size) {
|
||||
(void) fprintf(stderr, "%s: Read failed (%s).\n", progname,
|
||||
strerror(errno));
|
||||
goto error;
|
||||
}
|
||||
#endif
|
||||
(void)close(fd);
|
||||
fd = -1;
|
||||
ptr = (uint32 *) *magicp;
|
||||
@ -844,9 +859,13 @@ apprentice_map(magicp, nmagicp, fn, action)
|
||||
error:
|
||||
if (fd != -1)
|
||||
(void)close(fd);
|
||||
if (*magicp)
|
||||
if (*magicp) {
|
||||
#ifdef QUICK
|
||||
(void)munmap(*magicp, (size_t)st.st_size);
|
||||
else {
|
||||
#else
|
||||
free(*magicp);
|
||||
#endif
|
||||
} else {
|
||||
*magicp = NULL;
|
||||
*nmagicp = 0;
|
||||
}
|
||||
@ -869,6 +888,9 @@ apprentice_compile(magicp, nmagicp, fn, action)
|
||||
MAGICNO, VERSIONNO
|
||||
};
|
||||
|
||||
if (dbname == NULL)
|
||||
return -1;
|
||||
|
||||
if ((fd = open(dbname, O_WRONLY|O_CREAT|O_TRUNC, 0644)) == -1) {
|
||||
(void)fprintf(stderr, "%s: Cannot open `%s' (%s)\n",
|
||||
progname, dbname, strerror(errno));
|
||||
@ -912,6 +934,11 @@ mkdbname(fn)
|
||||
buf = malloc(len);
|
||||
else
|
||||
buf = realloc(buf, len);
|
||||
if (buf == NULL) {
|
||||
(void) fprintf(stderr, "%s: Out of memory (%s).\n", progname,
|
||||
strerror(errno));
|
||||
return NULL;
|
||||
}
|
||||
(void)strcpy(buf, fn);
|
||||
(void)strcat(buf, ext);
|
||||
return buf;
|
||||
@ -976,4 +1003,3 @@ void bs1(m)
|
||||
m->value.l = swap4(m->value.l);
|
||||
m->mask = swap4(m->mask);
|
||||
}
|
||||
#endif
|
||||
|
@ -56,7 +56,7 @@
|
||||
#include "patchlevel.h"
|
||||
|
||||
#ifndef lint
|
||||
FILE_RCSID("@(#)$Id: file.c,v 1.56 2001/03/11 20:29:16 christos Exp $")
|
||||
FILE_RCSID("@(#)$Id: file.c,v 1.57 2001/04/27 23:59:52 christos Exp $")
|
||||
#endif /* lint */
|
||||
|
||||
|
||||
@ -458,8 +458,6 @@ static void
|
||||
usage()
|
||||
{
|
||||
(void)fprintf(stderr, USAGE, progname);
|
||||
#ifdef QUICK
|
||||
(void)fprintf(stderr, "Usage: %s -C [-m magic]\n", progname);
|
||||
#endif
|
||||
exit(1);
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* file.h - definitions for file(1) program
|
||||
* @(#)$Id: file.h,v 1.35 2001/03/11 20:29:16 christos Exp $
|
||||
* @(#)$Id: file.h,v 1.36 2001/04/27 23:59:52 christos Exp $
|
||||
*
|
||||
* Copyright (c) Ian F. Darwin, 1987.
|
||||
* Written by Ian F. Darwin.
|
||||
@ -162,6 +162,10 @@ extern char *sys_errlist[];
|
||||
#define strtoul(a, b, c) strtol(a, b, c)
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_MMAP) && defined(HAVE_SYS_MMAN_H) && !defined(QUICK)
|
||||
#define QUICK
|
||||
#endif
|
||||
|
||||
#ifdef __STDC__
|
||||
#define FILE_RCSID(id) \
|
||||
static const char *rcsid(const char *p) { \
|
||||
|
Loading…
Reference in New Issue
Block a user