]> granicus.if.org Git - file/commitdiff
Debian Fixes via rrt@
authorChristos Zoulas <christos@zoulas.com>
Mon, 4 Feb 2008 20:51:16 +0000 (20:51 +0000)
committerChristos Zoulas <christos@zoulas.com>
Mon, 4 Feb 2008 20:51:16 +0000 (20:51 +0000)
23 files changed:
ChangeLog
Makefile.in
configure
magic/Magdir/clarion [new file with mode: 0644]
magic/Magdir/erlang [new file with mode: 0644]
magic/Magdir/gnumeric [new file with mode: 0644]
magic/Magdir/inform [new file with mode: 0644]
magic/Magdir/kde [new file with mode: 0644]
magic/Magdir/llvm [new file with mode: 0644]
magic/Magdir/lua [new file with mode: 0644]
magic/Magdir/luks [new file with mode: 0644]
magic/Magdir/mathcad [new file with mode: 0644]
magic/Magdir/mozilla [new file with mode: 0644]
magic/Magdir/netware [new file with mode: 0644]
magic/Makefile.am
magic/Makefile.in
src/apprentice.c
src/file.c
src/is_tar.c
src/magic.c
src/print.c
src/readelf.c
src/readelf.h

index f9cc7bc497699deacab4d72ee9573a7da1d06b77..43c775ccac1939290bdb0e2a9885fa4604892a6c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+
+2007-02-04 15:50 Christos Zoulas <christos@zoulas.com>
+
+       * Debian fixes (Reuben Thomas)
+
 2007-02-04 11:31 Christos Zoulas <christos@zoulas.com>
 
        * !mine: annotations in magic files (Reuben Thomas)
index d74bfd991b4cbc39fe23a6ae8eaa79429149ddbe..69a4387517431bcfde5d21adab219275de356782 100644 (file)
@@ -35,7 +35,7 @@ subdir = .
 DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
        $(srcdir)/Makefile.in $(srcdir)/config.h.in \
        $(top_srcdir)/configure ChangeLog config.guess config.sub \
-       depcomp install-sh ltmain.sh missing mkinstalldirs
+       depcomp install-sh ltcf-c.sh ltmain.sh missing mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
        $(top_srcdir)/configure.in
@@ -46,8 +46,6 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
 CONFIG_HEADER = config.h
 CONFIG_CLEAN_FILES =
-depcomp =
-am__depfiles_maybe =
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -182,7 +180,7 @@ top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 
 # don't enforce GNU packaging standards
-AUTOMAKE_OPTIONS = foreign no-dependencies
+AUTOMAKE_OPTIONS = foreign
 EXTRA_DIST = LEGAL.NOTICE MAINT PORTING
 SUBDIRS = src magic doc python
 all: config.h
index a81d93d52040c67793f18a8c4f5a0d69de5ada4b..4edff89d3e39402ad1bfd5a855d8c2211a34a87f 100755 (executable)
--- a/configure
+++ b/configure
 
    if test "$enable_largefile" != no; then
 
-     { echo "$as_me:$LINENO: checking for special C compiler options needed for large files=
-" >&5
-echo $ECHO_N "checking for special C compiler options needed for large files=
-... $ECHO_C" >&6; }
+     { echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5
+echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6; }
 if test "${ac_cv_sys_largefile_CC+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
diff --git a/magic/Magdir/clarion b/magic/Magdir/clarion
new file mode 100644 (file)
index 0000000..5f5f6e7
--- /dev/null
@@ -0,0 +1,26 @@
+
+#------------------------------------------------------------------------------
+# clarion:  file(1) magic for # Clarion Personal/Professional Developer
+# (v2 and above)
+# From: Julien Blache <jb@jblache.org>
+
+# Database files
+# signature
+0      leshort 0x3343  Clarion Developer (v2 and above) data file
+# attributes
+>2     leshort &0x0001 \b, locked
+>2     leshort &0x0004 \b, encrypted
+>2     leshort &0x0008 \b, memo file exists
+>2     leshort &0x0010 \b, compressed
+>2     leshort &0x0040 \b, read only
+# number of records
+>5     lelong  x       \b, %ld records
+
+# Memo files
+0      leshort 0x334d  Clarion Developer (v2 and above) memo data
+
+# Key/Index files
+# No magic? :(
+
+# Help files
+0      leshort 0x49e0  Clarion Developer (v2 and above) help data
diff --git a/magic/Magdir/erlang b/magic/Magdir/erlang
new file mode 100644 (file)
index 0000000..59f55ec
--- /dev/null
@@ -0,0 +1,18 @@
+
+#------------------------------------------------------------------------------
+# erlang:  file(1) magic for Erlang JAM and BEAM files
+# URL:  http://www.erlang.org/faq/x779.html#AEN812
+
+# OTP R3-R4
+0      string  \0177BEAM!      Old Erlang BEAM file
+>6     short   >0              - version %d
+
+# OTP R5 and onwards
+0      string  FOR1
+>8     string  BEAM            Erlang BEAM file
+
+# 4.2 version may have a copyright notice!
+4      string  Tue Jan 22 14:32:44 MET 1991    Erlang JAM file - version 4.2
+79     string  Tue Jan 22 14:32:44 MET 1991    Erlang JAM file - version 4.2
+
+4      string  1.0 Fri Feb 3 09:55:56 MET 1995 Erlang JAM file - version 4.3
diff --git a/magic/Magdir/gnumeric b/magic/Magdir/gnumeric
new file mode 100644 (file)
index 0000000..76dfa90
--- /dev/null
@@ -0,0 +1,7 @@
+
+#------------------------------------------------------------------------------
+# gnumeric:  file(1) magic for 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
+!:mime application/x-gnumeric
diff --git a/magic/Magdir/inform b/magic/Magdir/inform
new file mode 100644 (file)
index 0000000..a1af98b
--- /dev/null
@@ -0,0 +1,8 @@
+
+#------------------------------------------------------------------------------
+# inform:  file(1) magic for Inform interactive fiction language
+
+# URL:  http://www.inform-fiction.org/
+# From: Reuben Thomas <rrt@sc3d.org>
+
+0      regex   [Cc]onstant[[:space:]]+[Ss]tory Inform source text
diff --git a/magic/Magdir/kde b/magic/Magdir/kde
new file mode 100644 (file)
index 0000000..d81ee69
--- /dev/null
@@ -0,0 +1,10 @@
+
+#------------------------------------------------------------------------------
+# 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
diff --git a/magic/Magdir/llvm b/magic/Magdir/llvm
new file mode 100644 (file)
index 0000000..8c1610c
--- /dev/null
@@ -0,0 +1,10 @@
+
+#------------------------------------------------------------------------------
+# llvm:  file(1) magic for LLVM byte-codes
+# URL:  http://llvm.cs.uiuc.edu/docs/BytecodeFormat.html#signature
+# From: Al Stone <ahs3@fc.hp.com>
+
+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
diff --git a/magic/Magdir/lua b/magic/Magdir/lua
new file mode 100644 (file)
index 0000000..ab610fb
--- /dev/null
@@ -0,0 +1,16 @@
+
+#------------------------------------------------------------------------------
+# lua:  file(1) magic for Lua scripting language
+# URL:  http://www.lua.org/
+# From: Reuben Thomas <rrt@sc3d.org>, Seo Sanghyeon <tinuviel@sparcs.kaist.ac.kr>
+
+# Lua scripts
+0      string/b        #!\ /usr/bin/lua        Lua script text executable
+0      string/b        #!\ /usr/local/bin/lua  Lua script text executable
+0      string          #!/usr/bin/env\ lua     Lua script text executable
+0      string          #!\ /usr/bin/env\ lua   Lua script text executable
+
+# Lua bytecode
+0      string          \033Lua                 Lua bytecode,
+>4     byte            0x50                    version 5.0
+>4     byte            0x51                    version 5.1
diff --git a/magic/Magdir/luks b/magic/Magdir/luks
new file mode 100644 (file)
index 0000000..2ab2393
--- /dev/null
@@ -0,0 +1,12 @@
+
+#------------------------------------------------------------------------------
+# luks:  file(1) magic for Linux Unified Key Setup
+# URL: http://luks.endorphin.org/spec
+# From:        Anthon van der Neut <anthon@mnt.org>
+
+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
diff --git a/magic/Magdir/mathcad b/magic/Magdir/mathcad
new file mode 100644 (file)
index 0000000..9acb390
--- /dev/null
@@ -0,0 +1,7 @@
+
+#------------------------------------------------------------------------------
+# mathcad:  file(1) magic for Mathcad documents
+# URL: http://www.mathsoft.com/
+# From:        Josh Triplett <josh@freedesktop.org>
+
+0      string  .MCAD\          Mathcad document
diff --git a/magic/Magdir/mozilla b/magic/Magdir/mozilla
new file mode 100644 (file)
index 0000000..0698860
--- /dev/null
@@ -0,0 +1,8 @@
+
+#------------------------------------------------------------------------------
+# mozilla:  file(1) magic for Mozilla XUL fastload files 
+# (XUL.mfasl and XPC.mfasl)
+# URL: http://www.mozilla.org/
+# From:        Josh Triplett <josh@freedesktop.org>
+
+0      string  XPCOM\nMozFASL\r\n\x1A          Mozilla XUL fastload data
diff --git a/magic/Magdir/netware b/magic/Magdir/netware
new file mode 100644 (file)
index 0000000..fbc1605
--- /dev/null
@@ -0,0 +1,6 @@
+
+#------------------------------------------------------------------------------
+# netware:  file(1) magic for NetWare Loadable Modules (NLMs)
+# From: Mads Martin Joergensen <mmj@suse.de>
+
+0      string  NetWare\ Loadable\ Module       NetWare Loadable Module
index 5413522744546d464e009c6cd9a867ea90fb2d77..d93e89dcb58a70c057204c6d5eb56cd21377c8a2 100644 (file)
@@ -50,6 +50,7 @@ Magdir/blit \
 Magdir/bout \
 Magdir/bsdi \
 Magdir/btsnoop \
+Magdir/c-lang \
 Magdir/c64 \
 Magdir/cad \
 Magdir/cafebabe \
@@ -57,7 +58,7 @@ Magdir/cddb \
 Magdir/chord \
 Magdir/cisco \
 Magdir/citrus \
-Magdir/c-lang \
+Magdir/clarion \
 Magdir/claris \
 Magdir/clipper \
 Magdir/commands \
@@ -80,6 +81,7 @@ Magdir/efi \
 Magdir/elf \
 Magdir/encore \
 Magdir/epoc \
+Magdir/erlang \
 Magdir/esri \
 Magdir/fcs \
 Magdir/filesystems \
@@ -94,6 +96,7 @@ Magdir/gcc \
 Magdir/geos \
 Magdir/gimp \
 Magdir/gnu \
+Magdir/gnumeric \
 Magdir/grace \
 Magdir/gringotts \
 Magdir/hitachi-sh \
@@ -103,6 +106,7 @@ Magdir/ibm370 \
 Magdir/ibm6000 \
 Magdir/iff \
 Magdir/images \
+Magdir/inform \
 Magdir/intel \
 Magdir/interleaf \
 Magdir/island \
@@ -110,16 +114,21 @@ Magdir/ispell \
 Magdir/java \
 Magdir/jpeg \
 Magdir/karma \
+Magdir/kde \
 Magdir/lecter \
 Magdir/lex \
 Magdir/lif \
 Magdir/linux \
 Magdir/lisp \
+Magdir/llvm \
+Magdir/lua \
+Magdir/luks \
 Magdir/mach \
 Magdir/macintosh \
 Magdir/magic \
 Magdir/mail.news \
 Magdir/maple \
+Magdir/mathcad \
 Magdir/mathematica \
 Magdir/matroska \
 Magdir/mcrypt \
@@ -133,6 +142,7 @@ Magdir/mlssa \
 Magdir/mmdf \
 Magdir/modem \
 Magdir/motorola \
+Magdir/mozilla \
 Magdir/msdos \
 Magdir/msvc \
 Magdir/mup \
@@ -140,6 +150,7 @@ Magdir/natinst \
 Magdir/ncr \
 Magdir/netbsd \
 Magdir/netscape \
+Magdir/netware \
 Magdir/news \
 Magdir/nitpicker \
 Magdir/ocaml \
index 193bea891a8f3f435fdcee202ba1a219040bb55f..704b131e72e0ffdb2246c0c43b4233ca11a83d22 100644 (file)
@@ -161,10 +161,13 @@ sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-pkgdata_DATA = magic magic.mime magic.mgc magic.mime.mgc
-EXTRA_DIST = magic2mime Localstuff Header magic.mime $(magic_FRAGMENTS)
-CLEANFILES = magic magic.mgc magic.mime.mgc
+pkgdata_DATA = magic magic.mgc
+EXTRA_DIST = Localstuff Header $(magic_FRAGMENTS)
+CLEANFILES = magic magic.mgc
 @IS_CROSS_COMPILE_FALSE@FILE_COMPILE = $(top_builddir)/src/file
+
+# FIXME: Build file natively as well so that it can be used to compile
+# the target's magic file
 @IS_CROSS_COMPILE_TRUE@FILE_COMPILE = file
 magic_FRAGMENTS = \
 Magdir/acorn \
@@ -190,23 +193,23 @@ Magdir/blit \
 Magdir/bout \
 Magdir/bsdi \
 Magdir/btsnoop \
-Magdir/cad \
-Magdir/cafebabe \
 Magdir/c-lang \
 Magdir/c64 \
+Magdir/cad \
+Magdir/cafebabe \
 Magdir/cddb \
 Magdir/chord \
 Magdir/cisco \
 Magdir/citrus \
+Magdir/clarion \
 Magdir/claris \
 Magdir/clipper \
-Magdir/cracklib \
-Magdir/spec \
 Magdir/commands \
 Magdir/communications \
 Magdir/compress \
 Magdir/console \
 Magdir/convex \
+Magdir/cracklib \
 Magdir/ctags \
 Magdir/dact \
 Magdir/database \
@@ -215,11 +218,13 @@ Magdir/diff \
 Magdir/digital \
 Magdir/dolby \
 Magdir/dump \
+Magdir/dyadic \
 Magdir/editors \
 Magdir/efi \
 Magdir/elf \
 Magdir/encore \
 Magdir/epoc \
+Magdir/erlang \
 Magdir/esri \
 Magdir/fcs \
 Magdir/filesystems \
@@ -230,10 +235,11 @@ Magdir/frame \
 Magdir/freebsd \
 Magdir/fsav \
 Magdir/games \
-Magdir/geos \
 Magdir/gcc \
+Magdir/geos \
 Magdir/gimp \
 Magdir/gnu \
+Magdir/gnumeric \
 Magdir/grace \
 Magdir/gringotts \
 Magdir/hitachi-sh \
@@ -243,6 +249,7 @@ Magdir/ibm370 \
 Magdir/ibm6000 \
 Magdir/iff \
 Magdir/images \
+Magdir/inform \
 Magdir/intel \
 Magdir/interleaf \
 Magdir/island \
@@ -250,16 +257,21 @@ Magdir/ispell \
 Magdir/java \
 Magdir/jpeg \
 Magdir/karma \
+Magdir/kde \
 Magdir/lecter \
 Magdir/lex \
 Magdir/lif \
 Magdir/linux \
 Magdir/lisp \
+Magdir/llvm \
+Magdir/lua \
+Magdir/luks \
 Magdir/mach \
 Magdir/macintosh \
 Magdir/magic \
 Magdir/mail.news \
 Magdir/maple \
+Magdir/mathcad \
 Magdir/mathematica \
 Magdir/matroska \
 Magdir/mcrypt \
@@ -273,6 +285,7 @@ Magdir/mlssa \
 Magdir/mmdf \
 Magdir/modem \
 Magdir/motorola \
+Magdir/mozilla \
 Magdir/msdos \
 Magdir/msvc \
 Magdir/mup \
@@ -280,6 +293,7 @@ Magdir/natinst \
 Magdir/ncr \
 Magdir/netbsd \
 Magdir/netscape \
+Magdir/netware \
 Magdir/news \
 Magdir/nitpicker \
 Magdir/ocaml \
@@ -312,6 +326,7 @@ Magdir/rpm \
 Magdir/rtf \
 Magdir/sc \
 Magdir/sccs \
+Magdir/scientific \
 Magdir/sendmail \
 Magdir/sequent \
 Magdir/sgi \
@@ -321,9 +336,8 @@ Magdir/sinclair \
 Magdir/sketch \
 Magdir/smalltalk \
 Magdir/sniffer \
-Magdir/dyadic \
-Magdir/scientific \
 Magdir/softquad \
+Magdir/spec \
 Magdir/spectrum \
 Magdir/sql \
 Magdir/sun \
@@ -337,8 +351,8 @@ Magdir/timezone \
 Magdir/troff \
 Magdir/tuxedo \
 Magdir/typeset \
-Magdir/unknown \
 Magdir/unicode \
+Magdir/unknown \
 Magdir/uuencode \
 Magdir/varied.out \
 Magdir/varied.script \
@@ -548,7 +562,7 @@ uninstall-am: uninstall-pkgdataDATA
        uninstall uninstall-am uninstall-pkgdataDATA
 
 
-magic: Header Localstuff $(magic_FRAGMENTS)
+magic: Header Localstuff $(magic_FRAGMENTS) $(top_builddir)/src/file
        cat $(srcdir)/Header $(srcdir)/Localstuff > $@
        for frag in $(magic_FRAGMENTS); do \
          if test -f $(srcdir)/$$frag; then \
@@ -561,9 +575,6 @@ magic: Header Localstuff $(magic_FRAGMENTS)
 
 magic.mgc: magic
        $(FILE_COMPILE) -C -m magic
-
-magic.mime.mgc: magic.mime
-       $(FILE_COMPILE) -C -m $(srcdir)/magic.mime
 # 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:
index abcacfee5873334567ae823f3c356f3f3de18296..828d786c061cb1b3b38e912abfb871d5cf5e0b92 100644 (file)
@@ -47,7 +47,7 @@
 #endif
 
 #ifndef        lint
-FILE_RCSID("@(#)$File: apprentice.c,v 1.111 2008/01/28 00:14:38 christos Exp $")
+FILE_RCSID("@(#)$File: apprentice.c,v 1.112 2008/02/04 16:33:46 christos Exp $")
 #endif /* lint */
 
 #define        EATAB {while (isascii((unsigned char) *l) && \
@@ -1241,9 +1241,6 @@ parse_mime(struct magic_set *ms, struct magic_entry **mentryp,
        }       
 
        EATAB;
-#if 0
-        file_magwarn(ms, "Description: %s\nNew type: %s", m->desc, l);
-#endif
        for (i = 0;
             *l && ((isascii((unsigned char)*l) && isalnum((unsigned char)*l))
             || strchr("-+/", *l)) && i < sizeof(m->mimetype);
index 782b61cfc82fe66deb9e7eef440013edafc533da..1750191b2a6cdb74c3b655f64ebe5f09334bfcc4 100644 (file)
@@ -71,7 +71,7 @@
 #include "patchlevel.h"
 
 #ifndef        lint
-FILE_RCSID("@(#)$File: file.c,v 1.116 2007/10/29 00:54:08 christos Exp $")
+FILE_RCSID("@(#)$File: file.c,v 1.117 2007/12/27 16:35:58 christos Exp $")
 #endif /* lint */
 
 
@@ -349,8 +349,9 @@ main(int argc, char *argv[])
                        process(argv[optind], wid);
        }
 
+       c = magic->haderr ? 1 : 0;
        magic_close(magic);
-       return 0;
+       return c;
 }
 
 
index ff57e4d2b6abc9909258753cadd288853516c343..3a4360be1ef756008bc09ebc57c8d07a93397460 100644 (file)
@@ -45,7 +45,7 @@
 #include "tar.h"
 
 #ifndef lint
-FILE_RCSID("@(#)$File: is_tar.c,v 1.29 2007/10/17 19:33:31 christos Exp $")
+FILE_RCSID("@(#)$File: is_tar.c,v 1.30 2008/01/26 18:45:16 christos Exp $")
 #endif
 
 #define        isodigit(c)     ( ((c) >= '0') && ((c) <= '7') )
@@ -85,7 +85,8 @@ file_is_tar(struct magic_set *ms, const unsigned char *buf, size_t nbytes)
  * Return 
  *     0 if the checksum is bad (i.e., probably not a tar archive), 
  *     1 for old UNIX tar file,
- *     2 for Unix Std (POSIX) tar file.
+ *     2 for Unix Std (POSIX) tar file,
+ *     3 for GNU tar file.
  */
 private int
 is_tar(const unsigned char *buf, size_t nbytes)
index 19d60b9638e0d468244f8fba27d1de9254a022a3..b44dd96113f36b1e90e3306288fdd26296c38753 100644 (file)
 #include "patchlevel.h"
 
 #ifndef        lint
-FILE_RCSID("@(#)$File: magic.c,v 1.45 2007/12/27 16:35:59 christos Exp $")
+FILE_RCSID("@(#)$File: magic.c,v 1.46 2008/01/30 20:36:13 christos Exp $")
 #endif /* lint */
 
+#ifndef PIPE_BUF 
+/* Get the PIPE_BUF from pathconf */
+#ifdef _PC_PIPE_BUF
+#define PIPE_BUF pathconf(".", _PC_PIPE_BUF)
+#else
+#define PIPE_BUF 512
+#endif
+#endif
+
 #ifdef __EMX__
 private char *apptypeName = NULL;
 protected int file_os2_apptype(struct magic_set *ms, const char *fn,
index 4ccd4857bd5844cc5d328c07ccb6afa5aa50478b..f0e00c028a56d7e4bb22e6b1c621febc2711e49d 100644 (file)
@@ -41,7 +41,7 @@
 #include <time.h>
 
 #ifndef lint
-FILE_RCSID("@(#)$File: print.c,v 1.60 2007/11/08 00:31:37 christos Exp $")
+FILE_RCSID("@(#)$File: print.c,v 1.61 2007/12/27 16:35:59 christos Exp $")
 #endif  /* lint */
 
 #define SZOF(a)        (sizeof(a) / sizeof(a[0]))
@@ -184,13 +184,15 @@ protected void
 file_magwarn(struct magic_set *ms, const char *f, ...)
 {
        va_list va;
-       va_start(va, f);
 
        /* cuz we use stdout for most, stderr here */
        (void) fflush(stdout); 
 
-       (void) fprintf(stderr, "%s, %lu: Warning ", ms->file,
-           (unsigned long)ms->line);
+       if (ms->file)
+               (void) fprintf(stderr, "%s, %lu: ", ms->file,
+                   (unsigned long)ms->line);
+       (void) fprintf(stderr, "Warning: ");
+       va_start(va, f);
        (void) vfprintf(stderr, f, va);
        va_end(va);
        (void) fputc('\n', stderr);
index 25ea2aecb897afaf5c3c2492344284b30d87e81f..f69d5a993cd784f30670e632cf0f963daa755c2c 100644 (file)
@@ -37,7 +37,7 @@
 #include "readelf.h"
 
 #ifndef lint
-FILE_RCSID("@(#)$File: readelf.c,v 1.68 2007/12/27 16:13:26 christos Exp $")
+FILE_RCSID("@(#)$File: readelf.c,v 1.69 2008/01/26 18:45:16 christos Exp $")
 #endif
 
 #ifdef ELFCORE
@@ -397,6 +397,14 @@ donote(struct magic_set *ms, unsigned char *nbuf, size_t offset, size_t size,
                        if (file_printf(ms, "Solaris") == -1)
                                return size;
                        break;
+               case GNU_OS_KFREEBSD:
+                       if (file_printf(ms, "kFreeBSD") == -1)
+                               return size;
+                       break;
+               case GNU_OS_KNETBSD:
+                       if (file_printf(ms, "kNetBSD") == -1)
+                               return size;
+                       break;
                default:
                        if (file_printf(ms, "<unknown>") == -1)
                                return size; 
@@ -919,29 +927,30 @@ file_tryelf(struct magic_set *ms, int fd, const unsigned char *buf,
        off_t fsize;
        int flags = 0;
 
-       /*
-        * If we cannot seek, it must be a pipe, socket or fifo.
-        */
-       if((lseek(fd, (off_t)0, SEEK_SET) == (off_t)-1) && (errno == ESPIPE))
-               fd = file_pipe2file(ms, fd, buf, nbytes);
-
-       if (fstat(fd, &st) == -1) {
-               file_badread(ms);
-               return -1;
-       }
-       fsize = st.st_size;
 
        /*
         * ELF executables have multiple section headers in arbitrary
         * file locations and thus file(1) cannot determine it from easily.
         * Instead we traverse thru all section headers until a symbol table
         * one is found or else the binary is stripped.
+        * Return immediately if it's not ELF (so we avoid pipe2file unless needed).
         */
        if (buf[EI_MAG0] != ELFMAG0
            || (buf[EI_MAG1] != ELFMAG1 && buf[EI_MAG1] != OLFMAG1)
            || buf[EI_MAG2] != ELFMAG2 || buf[EI_MAG3] != ELFMAG3)
            return 0;
 
+       /*
+        * If we cannot seek, it must be a pipe, socket or fifo.
+        */
+       if((lseek(fd, (off_t)0, SEEK_SET) == (off_t)-1) && (errno == ESPIPE))
+               fd = file_pipe2file(ms, fd, buf, nbytes);
+
+       if (fstat(fd, &st) == -1) {
+               file_badread(ms);
+               return -1;
+       }
+       fsize = st.st_size;
 
        class = buf[EI_CLASS];
 
index 610c310c82a832a504d33a2e19d1483dd00bc7c6..77cc2ca7b7943f0e592d6b651c85a4967af83699 100644 (file)
@@ -229,5 +229,7 @@ typedef struct {
 #define GNU_OS_LINUX   0
 #define GNU_OS_HURD    1
 #define GNU_OS_SOLARIS 2
+#define GNU_OS_KFREEBSD        3
+#define GNU_OS_KNETBSD 4
 
 #endif