"Fossies" - the Fresh Open Source Software Archive

Member "file-5.35/src/magic.h.in" (19 Aug 2018, 5680 Bytes) of package /linux/misc/file-5.35.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. See also the latest Fossies "Diffs" side-by-side code changes report for "magic.h.in": 5.34_vs_5.35.

    1 /*
    2  * Copyright (c) Christos Zoulas 2003.
    3  * All Rights Reserved.
    4  *
    5  * Redistribution and use in source and binary forms, with or without
    6  * modification, are permitted provided that the following conditions
    7  * are met:
    8  * 1. Redistributions of source code must retain the above copyright
    9  *    notice immediately at the beginning of the file, without modification,
   10  *    this list of conditions, and the following disclaimer.
   11  * 2. Redistributions in binary form must reproduce the above copyright
   12  *    notice, this list of conditions and the following disclaimer in the
   13  *    documentation and/or other materials provided with the distribution.
   14  *
   15  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   16  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   18  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
   19  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   20  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   21  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   22  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   23  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   24  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   25  * SUCH DAMAGE.
   26  */
   27 #ifndef _MAGIC_H
   28 #define _MAGIC_H
   29 
   30 #include <sys/types.h>
   31 
   32 #define MAGIC_NONE      0x0000000 /* No flags */
   33 #define MAGIC_DEBUG     0x0000001 /* Turn on debugging */
   34 #define MAGIC_SYMLINK       0x0000002 /* Follow symlinks */
   35 #define MAGIC_COMPRESS      0x0000004 /* Check inside compressed files */
   36 #define MAGIC_DEVICES       0x0000008 /* Look at the contents of devices */
   37 #define MAGIC_MIME_TYPE     0x0000010 /* Return the MIME type */
   38 #define MAGIC_CONTINUE      0x0000020 /* Return all matches */
   39 #define MAGIC_CHECK     0x0000040 /* Print warnings to stderr */
   40 #define MAGIC_PRESERVE_ATIME    0x0000080 /* Restore access time on exit */
   41 #define MAGIC_RAW       0x0000100 /* Don't convert unprintable chars */
   42 #define MAGIC_ERROR     0x0000200 /* Handle ENOENT etc as real errors */
   43 #define MAGIC_MIME_ENCODING 0x0000400 /* Return the MIME encoding */
   44 #define MAGIC_MIME      (MAGIC_MIME_TYPE|MAGIC_MIME_ENCODING)
   45 #define MAGIC_APPLE     0x0000800 /* Return the Apple creator/type */
   46 #define MAGIC_EXTENSION     0x1000000 /* Return a /-separated list of
   47                        * extensions */
   48 #define MAGIC_COMPRESS_TRANSP   0x2000000 /* Check inside compressed files
   49                        * but not report compression */
   50 #define MAGIC_NODESC        (MAGIC_EXTENSION|MAGIC_MIME|MAGIC_APPLE)
   51 
   52 #define MAGIC_NO_CHECK_COMPRESS 0x0001000 /* Don't check for compressed files */
   53 #define MAGIC_NO_CHECK_TAR  0x0002000 /* Don't check for tar files */
   54 #define MAGIC_NO_CHECK_SOFT 0x0004000 /* Don't check magic entries */
   55 #define MAGIC_NO_CHECK_APPTYPE  0x0008000 /* Don't check application type */
   56 #define MAGIC_NO_CHECK_ELF  0x0010000 /* Don't check for elf details */
   57 #define MAGIC_NO_CHECK_TEXT 0x0020000 /* Don't check for text files */
   58 #define MAGIC_NO_CHECK_CDF  0x0040000 /* Don't check for cdf files */
   59 #define MAGIC_NO_CHECK_TOKENS   0x0100000 /* Don't check tokens */
   60 #define MAGIC_NO_CHECK_ENCODING 0x0200000 /* Don't check text encodings */
   61 #define MAGIC_NO_CHECK_JSON 0x0400000 /* Don't check for JSON files */
   62 
   63 /* No built-in tests; only consult the magic file */
   64 #define MAGIC_NO_CHECK_BUILTIN  ( \
   65     MAGIC_NO_CHECK_COMPRESS | \
   66     MAGIC_NO_CHECK_TAR  | \
   67 /*  MAGIC_NO_CHECK_SOFT | */ \
   68     MAGIC_NO_CHECK_APPTYPE  | \
   69     MAGIC_NO_CHECK_ELF  | \
   70     MAGIC_NO_CHECK_TEXT | \
   71     MAGIC_NO_CHECK_CDF  | \
   72     MAGIC_NO_CHECK_TOKENS   | \
   73     MAGIC_NO_CHECK_ENCODING | \
   74     MAGIC_NO_CHECK_JSON | \
   75     0             \
   76 )
   77 
   78 #define MAGIC_SNPRINTB "\177\020\
   79 b\0debug\0\
   80 b\1symlink\0\
   81 b\2compress\0\
   82 b\3devices\0\
   83 b\4mime_type\0\
   84 b\5continue\0\
   85 b\6check\0\
   86 b\7preserve_atime\0\
   87 b\10raw\0\
   88 b\11error\0\
   89 b\12mime_encoding\0\
   90 b\13apple\0\
   91 b\14no_check_compress\0\
   92 b\15no_check_tar\0\
   93 b\16no_check_soft\0\
   94 b\17no_check_sapptype\0\
   95 b\20no_check_elf\0\
   96 b\21no_check_text\0\
   97 b\22no_check_cdf\0\
   98 b\23no_check_reserved0\0\
   99 b\24no_check_tokens\0\
  100 b\25no_check_encoding\0\
  101 b\26no_check_json\0\
  102 b\27no_check_reserved2\0\
  103 b\30extension\0\
  104 b\31transp_compression\0\
  105 "
  106 
  107 /* Defined for backwards compatibility (renamed) */
  108 #define MAGIC_NO_CHECK_ASCII    MAGIC_NO_CHECK_TEXT
  109 
  110 /* Defined for backwards compatibility; do nothing */
  111 #define MAGIC_NO_CHECK_FORTRAN  0x000000 /* Don't check ascii/fortran */
  112 #define MAGIC_NO_CHECK_TROFF    0x000000 /* Don't check ascii/troff */
  113 
  114 #define MAGIC_VERSION       X.YY    /* This implementation */
  115 
  116 
  117 #ifdef __cplusplus
  118 extern "C" {
  119 #endif
  120 
  121 typedef struct magic_set *magic_t;
  122 magic_t magic_open(int);
  123 void magic_close(magic_t);
  124 
  125 const char *magic_getpath(const char *, int);
  126 const char *magic_file(magic_t, const char *);
  127 const char *magic_descriptor(magic_t, int);
  128 const char *magic_buffer(magic_t, const void *, size_t);
  129 
  130 const char *magic_error(magic_t);
  131 int magic_getflags(magic_t);
  132 int magic_setflags(magic_t, int);
  133 
  134 int magic_version(void);
  135 int magic_load(magic_t, const char *);
  136 int magic_load_buffers(magic_t, void **, size_t *, size_t);
  137 
  138 int magic_compile(magic_t, const char *);
  139 int magic_check(magic_t, const char *);
  140 int magic_list(magic_t, const char *);
  141 int magic_errno(magic_t);
  142 
  143 #define MAGIC_PARAM_INDIR_MAX       0
  144 #define MAGIC_PARAM_NAME_MAX        1
  145 #define MAGIC_PARAM_ELF_PHNUM_MAX   2
  146 #define MAGIC_PARAM_ELF_SHNUM_MAX   3
  147 #define MAGIC_PARAM_ELF_NOTES_MAX   4
  148 #define MAGIC_PARAM_REGEX_MAX       5
  149 #define MAGIC_PARAM_BYTES_MAX       6
  150 
  151 int magic_setparam(magic_t, int, const void *);
  152 int magic_getparam(magic_t, int, void *);
  153 
  154 #ifdef __cplusplus
  155 };
  156 #endif
  157 
  158 #endif /* _MAGIC_H */