github.com/jurelou/go-magic@v0.0.0-20230518182705-f2995a311800/functions.h (about)

     1  #if !defined(_FUNCTIONS_H)
     2  #define _FUNCTIONS_H 1
     3  
     4  #if defined(__cplusplus)
     5  extern "C" {
     6  #endif
     7  
     8  #include "common.h"
     9  
    10  #define MAGIC_FUNCTION(f, r, x, ...)			 \
    11  	do {						 \
    12  		if ((x) & MAGIC_DEBUG)			 \
    13  			r = f(__VA_ARGS__);		 \
    14  		else {					 \
    15  			save_t __##f;			 \
    16  			override_error_output(&(__##f)); \
    17  			r = f(__VA_ARGS__);		 \
    18  			restore_error_output(&(__##f));  \
    19  		}					 \
    20  	} while(0)
    21  
    22  typedef struct file_data {
    23  	fpos_t position;
    24  	int old_fd;
    25  	int new_fd;
    26  } file_data_t;
    27  
    28  typedef struct save {
    29  	file_data_t file;
    30  	int status;
    31  } save_t;
    32  
    33  extern magic_t magic_open_wrapper(int flags);
    34  extern void magic_close_wrapper(magic_t magic);
    35  
    36  extern const char* magic_error_wrapper(magic_t magic);
    37  extern int magic_errno_wrapper(magic_t magic);
    38  
    39  extern const char* magic_getpath_wrapper(void);
    40  
    41  extern int magic_getparam_wrapper(magic_t magic, int parameter, void *value);
    42  extern int magic_setparam_wrapper(magic_t magic, int parameter,
    43  				  const void *value);
    44  
    45  extern int magic_getflags_wrapper(magic_t magic);
    46  extern int magic_setflags_wrapper(magic_t magic, int flags);
    47  
    48  extern int magic_load_wrapper(magic_t magic, const char *magic_file, int flags);
    49  extern int magic_load_buffers_wrapper(magic_t magic, void **buffers,
    50  				      size_t *sizes, size_t count, int flags);
    51  
    52  extern int magic_compile_wrapper(magic_t magic, const char *magic_file, int flags);
    53  extern int magic_check_wrapper(magic_t magic, const char *magic_file, int flags);
    54  
    55  extern const char* magic_file_wrapper(magic_t magic, const char *filename,
    56  				      int flags);
    57  extern const char* magic_buffer_wrapper(magic_t magic, const void *buffer,
    58  					size_t size, int flags);
    59  extern const char* magic_descriptor_wrapper(magic_t magic, int fd, int flags);
    60  
    61  extern int magic_version_wrapper(void);
    62  
    63  #if defined(__cplusplus)
    64  }
    65  #endif
    66  
    67  #endif /* _FUNCTIONS_H */