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 */