X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=restore-src%2Frestore.h;h=1844a4d0b13257ccd88d9040b1bdecb4e2076685;hb=2627875b7d18858bc1f9f7652811e4d8c15a23eb;hp=06cdadf2a1b87ba586109cd9fca49e141a2899e9;hpb=12179dea039515c06168c0037d048566a3f623de;p=debian%2Famanda diff --git a/restore-src/restore.h b/restore-src/restore.h index 06cdadf..1844a4d 100644 --- a/restore-src/restore.h +++ b/restore-src/restore.h @@ -35,17 +35,10 @@ #include "fileheader.h" #include "tapelist.h" #include "amfeatures.h" +#include "device.h" #define CREAT_MODE 0640 -typedef struct match_list_s { - char *hostname; - char *diskname; - char *datestamp; - char *level; - struct match_list_s *next; -} match_list_t; - typedef struct rst_flags_s { unsigned int inline_assemble:1; unsigned int delay_assemble:1; @@ -67,27 +60,50 @@ typedef struct rst_flags_s { char *inventory_log; } rst_flags_t; +typedef struct { + enum { HOLDING_MODE, DEVICE_MODE} restore_mode; + dumpfile_t * header; + union { + int holding_fd; + Device * device; + } u; +} RestoreSource; + +typedef struct seentapes_s seentapes_t; + char *make_filename(dumpfile_t *file); -int disk_match(dumpfile_t *file, char *datestamp, - char *hostname, char *diskname, char *level); ssize_t read_file_header(dumpfile_t *file, int tapefd, int isafile, rst_flags_t *flags); -ssize_t restore(dumpfile_t *file, char *filename, int tapefd, int isafile, - rst_flags_t *flags); +void restore(RestoreSource * source, rst_flags_t * flags); +gboolean restore_holding_disk(FILE * prompt_out, + rst_flags_t * flags, + am_feature_t * features, + tapelist_t * file, + seentapes_t ** seen, + GSList * dumpspecs, + dumpfile_t * this_header, + dumpfile_t * last_header); + +gboolean search_a_tape(Device * device, FILE *prompt_out, rst_flags_t *flags, + am_feature_t *their_features, + tapelist_t *desired_tape, GSList *dumpspecs, + seentapes_t **tape_seen, + dumpfile_t * first_restored_file, int tape_count, + FILE * logstream); + void flush_open_outputs(int reassemble, dumpfile_t *only_file); -void search_tapes(FILE *prompt_out, int use_changer, tapelist_t *tapelist, - match_list_t *restorethese, rst_flags_t *flags, - am_feature_t *their_features); +void search_tapes(FILE *prompt_out, FILE *prompt_in, int use_changer, + tapelist_t *tapelist, GSList *dumpspecs, + rst_flags_t *flags, am_feature_t *their_features); int have_all_parts(dumpfile_t *file, int upto); rst_flags_t *new_rst_flags(void); int check_rst_flags(rst_flags_t *flags); void free_rst_flags(rst_flags_t *flags); -void free_match_list(match_list_t *match_list); int lock_logfile(void); void send_message(FILE *prompt_out, rst_flags_t *flags, - am_feature_t *their_features, char * format, ...); - /* __attribute__ ((format (printf, 4, 5))); */ - + am_feature_t *their_features, + char * format, ...) G_GNUC_PRINTF(4,5); +gboolean set_restore_device_read_buffer_size(Device *device, rst_flags_t *flags); #endif /* RESTORE_H */