Libmagicxx v5.5.0
A C++ wrapper library over the Magic Number Recognition Library.
 
Loading...
Searching...
No Matches
magic.cpp File Reference
#include <cmath>
#include <array>
#include <utility>
#include "magic.hpp"
#include <magic.h>
Include dependency graph for magic.cpp:

Classes

class  recognition::magic::magic_private
 
struct  recognition::magic::magic_private::flags_converter
 
struct  recognition::magic::magic_private::libmagic_pair_converter
 

Namespaces

namespace  recognition
 
namespace  recognition::detail
 

Macros

#define _MAGIC_H
 
#define MAGIC_NONE   0x0000000 /* No flags */
 
#define MAGIC_DEBUG   0x0000001 /* Turn on debugging */
 
#define MAGIC_SYMLINK   0x0000002 /* Follow symlinks */
 
#define MAGIC_COMPRESS   0x0000004 /* Check inside compressed files */
 
#define MAGIC_DEVICES   0x0000008 /* Look at the contents of devices */
 
#define MAGIC_MIME_TYPE   0x0000010 /* Return the MIME type */
 
#define MAGIC_CONTINUE   0x0000020 /* Return all matches */
 
#define MAGIC_CHECK   0x0000040 /* Print warnings to stderr */
 
#define MAGIC_PRESERVE_ATIME   0x0000080 /* Restore access time on exit */
 
#define MAGIC_RAW   0x0000100 /* Don't convert unprintable chars */
 
#define MAGIC_ERROR   0x0000200 /* Handle ENOENT etc as real errors */
 
#define MAGIC_MIME_ENCODING   0x0000400 /* Return the MIME encoding */
 
#define MAGIC_MIME   (MAGIC_MIME_TYPE|MAGIC_MIME_ENCODING)
 
#define MAGIC_APPLE   0x0000800 /* Return the Apple creator/type */
 
#define MAGIC_EXTENSION
 
#define MAGIC_COMPRESS_TRANSP
 
#define MAGIC_NO_COMPRESS_FORK
 
#define MAGIC_NODESC   (MAGIC_EXTENSION|MAGIC_MIME|MAGIC_APPLE)
 
#define MAGIC_NO_CHECK_COMPRESS   0x0001000 /* Don't check for compressed files */
 
#define MAGIC_NO_CHECK_TAR   0x0002000 /* Don't check for tar files */
 
#define MAGIC_NO_CHECK_SOFT   0x0004000 /* Don't check magic entries */
 
#define MAGIC_NO_CHECK_APPTYPE   0x0008000 /* Don't check application type */
 
#define MAGIC_NO_CHECK_ELF   0x0010000 /* Don't check for elf details */
 
#define MAGIC_NO_CHECK_TEXT   0x0020000 /* Don't check for text files */
 
#define MAGIC_NO_CHECK_CDF   0x0040000 /* Don't check for cdf files */
 
#define MAGIC_NO_CHECK_CSV   0x0080000 /* Don't check for CSV files */
 
#define MAGIC_NO_CHECK_TOKENS   0x0100000 /* Don't check tokens */
 
#define MAGIC_NO_CHECK_ENCODING   0x0200000 /* Don't check text encodings */
 
#define MAGIC_NO_CHECK_JSON   0x0400000 /* Don't check for JSON files */
 
#define MAGIC_NO_CHECK_SIMH   0x0800000 /* Don't check for SIMH tape files */
 
#define MAGIC_NO_CHECK_BUILTIN
 
#define MAGIC_SNPRINTB   "\177\020\b\0debug\0\b\1symlink\0\b\2compress\0\b\3devices\0\b\4mime_type\0\b\5continue\0\b\6check\0\b\7preserve_atime\0\b\10raw\0\b\11error\0\b\12mime_encoding\0\b\13apple\0\b\14no_check_compress\0\b\15no_check_tar\0\b\16no_check_soft\0\b\17no_check_sapptype\0\b\20no_check_elf\0\b\21no_check_text\0\b\22no_check_cdf\0\b\23no_check_csv\0\b\24no_check_tokens\0\b\25no_check_encoding\0\b\26no_check_json\0\b\27no_check_simh\0\b\30extension\0\b\31transp_compression\0\"
 
#define MAGIC_NO_CHECK_ASCII   MAGIC_NO_CHECK_TEXT
 
#define MAGIC_NO_CHECK_FORTRAN   0x000000 /* Don't check ascii/fortran */
 
#define MAGIC_NO_CHECK_TROFF   0x000000 /* Don't check ascii/troff */
 
#define MAGIC_VERSION   545 /* This implementation */
 
#define MAGIC_PARAM_INDIR_MAX   0
 
#define MAGIC_PARAM_NAME_MAX   1
 
#define MAGIC_PARAM_ELF_PHNUM_MAX   2
 
#define MAGIC_PARAM_ELF_SHNUM_MAX   3
 
#define MAGIC_PARAM_ELF_NOTES_MAX   4
 
#define MAGIC_PARAM_REGEX_MAX   5
 
#define MAGIC_PARAM_BYTES_MAX   6
 
#define MAGIC_PARAM_ENCODING_MAX   7
 
#define MAGIC_PARAM_ELF_SHSIZE_MAX   8
 

Typedefs

typedef struct magic_set * recognition::detail::magic_t
 

Functions

magic_t recognition::detail::magic_open (int)
 
void recognition::detail::magic_close (magic_t)
 
const char * recognition::detail::magic_getpath (const char *, int)
 
const char * recognition::detail::magic_file (magic_t, const char *)
 
const char * recognition::detail::magic_descriptor (magic_t, int)
 
const char * recognition::detail::magic_buffer (magic_t, const void *, size_t)
 
const char * recognition::detail::magic_error (magic_t)
 
int recognition::detail::magic_getflags (magic_t)
 
int recognition::detail::magic_setflags (magic_t, int)
 
int recognition::detail::magic_version (void)
 
int recognition::detail::magic_load (magic_t, const char *)
 
int recognition::detail::magic_load_buffers (magic_t, void **, size_t *, size_t)
 
int recognition::detail::magic_compile (magic_t, const char *)
 
int recognition::detail::magic_check (magic_t, const char *)
 
int recognition::detail::magic_list (magic_t, const char *)
 
int recognition::detail::magic_errno (magic_t)
 
int recognition::detail::magic_setparam (magic_t, int, const void *)
 
int recognition::detail::magic_getparam (magic_t, int, void *)
 
std::string recognition::to_string (const magic::types_of_files_t &types_of_files, const std::string &type_separator=" -> ", const std::string &file_separator="\n")
 Convert the magic::types_of_files_t to string.
 
std::string recognition::to_string (const magic::expected_file_type_t &expected_file_type)
 Convert the magic::expected_file_type_t to string.
 
std::string recognition::to_string (const magic::expected_types_of_files_t &expected_types_of_files, const std::string &type_separator=" -> ", const std::string &file_separator="\n")
 Convert the magic::expected_types_of_files_t to string.
 
std::string recognition::to_string (magic::flags flag)
 Convert the magic::flags to string.
 
std::string recognition::to_string (const magic::flags_container_t &flags, const std::string &separator=", ")
 Convert the magic::flags_container_t to string.
 
std::string recognition::to_string (magic::parameters parameter)
 Convert the magic::parameters to string.
 
std::string recognition::to_string (const magic::parameter_value_map_t &parameters, const std::string &value_separator=": ", const std::string &parameter_separator=", ")
 Convert the magic::parameter_value_map_t to string.
 

Macro Definition Documentation

◆ _MAGIC_H

#define _MAGIC_H

◆ MAGIC_APPLE

#define MAGIC_APPLE   0x0000800 /* Return the Apple creator/type */

◆ MAGIC_CHECK

#define MAGIC_CHECK   0x0000040 /* Print warnings to stderr */

◆ MAGIC_COMPRESS

#define MAGIC_COMPRESS   0x0000004 /* Check inside compressed files */

◆ MAGIC_COMPRESS_TRANSP

#define MAGIC_COMPRESS_TRANSP
Value:
0x2000000 /* Check inside compressed files
* but not report compression */

◆ MAGIC_CONTINUE

#define MAGIC_CONTINUE   0x0000020 /* Return all matches */

◆ MAGIC_DEBUG

#define MAGIC_DEBUG   0x0000001 /* Turn on debugging */

◆ MAGIC_DEVICES

#define MAGIC_DEVICES   0x0000008 /* Look at the contents of devices */

◆ MAGIC_ERROR

#define MAGIC_ERROR   0x0000200 /* Handle ENOENT etc as real errors */

◆ MAGIC_EXTENSION

#define MAGIC_EXTENSION
Value:
0x1000000 /* Return a /-separated list of
* extensions */

◆ MAGIC_MIME

#define MAGIC_MIME   (MAGIC_MIME_TYPE|MAGIC_MIME_ENCODING)

◆ MAGIC_MIME_ENCODING

#define MAGIC_MIME_ENCODING   0x0000400 /* Return the MIME encoding */

◆ MAGIC_MIME_TYPE

#define MAGIC_MIME_TYPE   0x0000010 /* Return the MIME type */

◆ MAGIC_NO_CHECK_APPTYPE

#define MAGIC_NO_CHECK_APPTYPE   0x0008000 /* Don't check application type */

◆ MAGIC_NO_CHECK_ASCII

#define MAGIC_NO_CHECK_ASCII   MAGIC_NO_CHECK_TEXT

◆ MAGIC_NO_CHECK_BUILTIN

#define MAGIC_NO_CHECK_BUILTIN
Value:
( \
/* MAGIC_NO_CHECK_SOFT | */ \
0 \
)
#define MAGIC_NO_CHECK_CDF
#define MAGIC_NO_CHECK_TAR
#define MAGIC_NO_CHECK_TOKENS
#define MAGIC_NO_CHECK_COMPRESS
#define MAGIC_NO_CHECK_TEXT
#define MAGIC_NO_CHECK_ELF
#define MAGIC_NO_CHECK_ENCODING
#define MAGIC_NO_CHECK_SIMH
#define MAGIC_NO_CHECK_JSON
#define MAGIC_NO_CHECK_CSV
#define MAGIC_NO_CHECK_APPTYPE

◆ MAGIC_NO_CHECK_CDF

#define MAGIC_NO_CHECK_CDF   0x0040000 /* Don't check for cdf files */

◆ MAGIC_NO_CHECK_COMPRESS

#define MAGIC_NO_CHECK_COMPRESS   0x0001000 /* Don't check for compressed files */

◆ MAGIC_NO_CHECK_CSV

#define MAGIC_NO_CHECK_CSV   0x0080000 /* Don't check for CSV files */

◆ MAGIC_NO_CHECK_ELF

#define MAGIC_NO_CHECK_ELF   0x0010000 /* Don't check for elf details */

◆ MAGIC_NO_CHECK_ENCODING

#define MAGIC_NO_CHECK_ENCODING   0x0200000 /* Don't check text encodings */

◆ MAGIC_NO_CHECK_FORTRAN

#define MAGIC_NO_CHECK_FORTRAN   0x000000 /* Don't check ascii/fortran */

◆ MAGIC_NO_CHECK_JSON

#define MAGIC_NO_CHECK_JSON   0x0400000 /* Don't check for JSON files */

◆ MAGIC_NO_CHECK_SIMH

#define MAGIC_NO_CHECK_SIMH   0x0800000 /* Don't check for SIMH tape files */

◆ MAGIC_NO_CHECK_SOFT

#define MAGIC_NO_CHECK_SOFT   0x0004000 /* Don't check magic entries */

◆ MAGIC_NO_CHECK_TAR

#define MAGIC_NO_CHECK_TAR   0x0002000 /* Don't check for tar files */

◆ MAGIC_NO_CHECK_TEXT

#define MAGIC_NO_CHECK_TEXT   0x0020000 /* Don't check for text files */

◆ MAGIC_NO_CHECK_TOKENS

#define MAGIC_NO_CHECK_TOKENS   0x0100000 /* Don't check tokens */

◆ MAGIC_NO_CHECK_TROFF

#define MAGIC_NO_CHECK_TROFF   0x000000 /* Don't check ascii/troff */

◆ MAGIC_NO_COMPRESS_FORK

#define MAGIC_NO_COMPRESS_FORK
Value:
0x4000000 /* Don't allow decompression that
* needs to fork */

◆ MAGIC_NODESC

#define MAGIC_NODESC   (MAGIC_EXTENSION|MAGIC_MIME|MAGIC_APPLE)

◆ MAGIC_NONE

#define MAGIC_NONE   0x0000000 /* No flags */

◆ MAGIC_PARAM_BYTES_MAX

#define MAGIC_PARAM_BYTES_MAX   6

◆ MAGIC_PARAM_ELF_NOTES_MAX

#define MAGIC_PARAM_ELF_NOTES_MAX   4

◆ MAGIC_PARAM_ELF_PHNUM_MAX

#define MAGIC_PARAM_ELF_PHNUM_MAX   2

◆ MAGIC_PARAM_ELF_SHNUM_MAX

#define MAGIC_PARAM_ELF_SHNUM_MAX   3

◆ MAGIC_PARAM_ELF_SHSIZE_MAX

#define MAGIC_PARAM_ELF_SHSIZE_MAX   8

◆ MAGIC_PARAM_ENCODING_MAX

#define MAGIC_PARAM_ENCODING_MAX   7

◆ MAGIC_PARAM_INDIR_MAX

#define MAGIC_PARAM_INDIR_MAX   0

◆ MAGIC_PARAM_NAME_MAX

#define MAGIC_PARAM_NAME_MAX   1

◆ MAGIC_PARAM_REGEX_MAX

#define MAGIC_PARAM_REGEX_MAX   5

◆ MAGIC_PRESERVE_ATIME

#define MAGIC_PRESERVE_ATIME   0x0000080 /* Restore access time on exit */

◆ MAGIC_RAW

#define MAGIC_RAW   0x0000100 /* Don't convert unprintable chars */

◆ MAGIC_SNPRINTB

#define MAGIC_SNPRINTB   "\177\020\b\0debug\0\b\1symlink\0\b\2compress\0\b\3devices\0\b\4mime_type\0\b\5continue\0\b\6check\0\b\7preserve_atime\0\b\10raw\0\b\11error\0\b\12mime_encoding\0\b\13apple\0\b\14no_check_compress\0\b\15no_check_tar\0\b\16no_check_soft\0\b\17no_check_sapptype\0\b\20no_check_elf\0\b\21no_check_text\0\b\22no_check_cdf\0\b\23no_check_csv\0\b\24no_check_tokens\0\b\25no_check_encoding\0\b\26no_check_json\0\b\27no_check_simh\0\b\30extension\0\b\31transp_compression\0\"

◆ MAGIC_SYMLINK

#define MAGIC_SYMLINK   0x0000002 /* Follow symlinks */

◆ MAGIC_VERSION

#define MAGIC_VERSION   545 /* This implementation */