1 #ifndef METADATA_TRANSFER_H 2 #define METADATA_TRANSFER_H 3 4 #include <st/state_transfer.h> 5 6 /* Metadata transfer and adjustment functions */ 7 PRIVATE int transfer_metadata_functions(st_init_info_t *info, 8 struct _magic_vars_t *cached_magic_vars, 9 struct _magic_vars_t *remote_magic_vars, 10 st_counterparts_t *counterparts); 11 PRIVATE int transfer_metadata_dfunctions(st_init_info_t *info, 12 struct _magic_vars_t *cached_magic_vars, 13 struct _magic_vars_t *remote_magic_vars, 14 st_counterparts_t *counterparts); 15 PRIVATE int transfer_metadata_type_members(st_init_info_t *info, 16 struct _magic_type *type, struct _magic_vars_t *cached_magic_vars, 17 struct _magic_vars_t *remote_magic_vars); 18 PRIVATE int transfer_metadata_sentries(st_init_info_t *info, 19 struct _magic_vars_t *cached_magic_vars, 20 struct _magic_vars_t *remote_magic_vars, st_counterparts_t *counterparts, 21 size_t *max_buff_sz); 22 PRIVATE int transfer_metadata_sentry_members(st_init_info_t *info, 23 struct _magic_sentry *sentry); 24 25 PRIVATE int pair_metadata_types(st_init_info_t *info, 26 struct _magic_vars_t *cached_magic_vars, 27 st_counterparts_t *counterparts, int allow_unpaired_types); 28 PRIVATE int pair_metadata_functions(st_init_info_t *info, 29 struct _magic_vars_t *cached_magic_vars, st_counterparts_t *counterparts); 30 PRIVATE int pair_metadata_sentries(st_init_info_t *info, 31 struct _magic_vars_t *cached_magic_vars, st_counterparts_t *counterparts); 32 #if !ST_ASSUME_RAW_COPY_BEFORE_TRANSFER 33 PRIVATE int allocate_pair_metadata_dsentries(st_init_info_t *info, 34 struct _magic_vars_t *cached_magic_vars, st_counterparts_t *counterparts); 35 #else 36 PRIVATE int allocate_pair_metadata_dsentries_from_raw_copy(st_init_info_t *info, 37 struct _magic_vars_t *cached_magic_vars, st_counterparts_t *counterparts); 38 #endif 39 40 /* metadata transfer helper functions */ 41 PRIVATE int md_transfer_str(st_init_info_t *info, char **str_pt); 42 #define MD_TRANSFER_STR(INFO, STR_PT) \ 43 do { \ 44 if (md_transfer_str(INFO, __UNCONST(STR_PT))) { \ 45 printf("%s, line %d. md_transfer_str(): ERROR transferring.\n", \ 46 __FILE__, __LINE__); \ 47 return EGENERIC; \ 48 } \ 49 } while(0) 50 PRIVATE int md_transfer(st_init_info_t *info, void *from, void **to, int len); 51 #define MD_TRANSFER(INFO, FROM, TO, LEN) \ 52 do { \ 53 if (md_transfer(INFO, FROM, TO, LEN)) { \ 54 printf("%s, line %d. md_transfer(): ERROR transferring.\n", \ 55 __FILE__, __LINE__); \ 56 return EGENERIC; \ 57 } \ 58 } while(0) 59 60 #endif /* METADATA_TRANSFER_H */ 61