*/
/*
- Copyright (C) 2000-2004 Kern Sibbald and John Walker
+ Copyright (C) 2000-2005 Kern Sibbald
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
MA 02111-1307, USA.
*/
-
+
/* From stored.c */
uint32_t new_VolSessionId();
/* From acquire.c */
-DCR *acquire_device_for_append(JCR *jcr);
-DCR *acquire_device_for_read(JCR *jcr);
-bool release_device(JCR *jcr);
+bool reserve_device_for_append(DCR *dcr);
+DCR *acquire_device_for_append(DCR *dcr);
+bool reserve_device_for_read(DCR *dcr);
+DCR *acquire_device_for_read(DCR *dcr);
+bool release_device(DCR *dcr);
DCR *new_dcr(JCR *jcr, DEVICE *dev);
void free_dcr(DCR *dcr);
bool dir_update_file_attributes(DCR *dcr, DEV_RECORD *rec);
bool dir_send_job_status(JCR *jcr);
bool dir_create_jobmedia_record(DCR *dcr);
+bool dir_update_device(JCR *jcr, DEVICE *dev);
+bool dir_update_changer(JCR *jcr, AUTOCHANGER *changer);
/* authenticate.c */
int authenticate_director(JCR *jcr);
/* From autochanger.c */
int autoload_device(DCR *dcr, int writing, BSOCK *dir);
-bool autochanger_list(DCR *dcr, BSOCK *dir);
-void invalidate_slot_in_catalog(DCR *dcr);
-char *edit_device_codes(JCR *jcr, char *omsg, const char *imsg, const char *cmd);
+bool autochanger_cmd(DCR *dcr, BSOCK *dir, const char *cmd);
+void mark_volume_not_inchanger(DCR *dcr);
+char *edit_device_codes(DCR *dcr, char *omsg, const char *cmd);
/* From block.c */
void dump_block(DEV_BLOCK *b, const char *msg);
/* From dev.c */
-DEVICE *init_dev(DEVICE *dev, DEVRES *device);
+DEVICE *init_dev(JCR *jcr, DEVICE *dev, DEVRES *device);
int open_dev(DEVICE *dev, char *VolName, int mode);
+off_t lseek_dev(DEVICE *dev, off_t offset, int whence);
+int open_first_part(DEVICE *dev);
+int open_next_part(DEVICE *dev);
+int open_guess_name_dev(DEVICE *dev);
void close_dev(DEVICE *dev);
void force_close_dev(DEVICE *dev);
bool truncate_dev(DEVICE *dev);
char * strerror_dev(DEVICE *dev);
void clrerror_dev(DEVICE *dev, int func);
bool update_pos_dev(DEVICE *dev);
-int rewind_dev(DEVICE *dev);
+bool rewind_dev(DEVICE *dev);
bool load_dev(DEVICE *dev);
bool offline_dev(DEVICE *dev);
int flush_dev(DEVICE *dev);
int weof_dev(DEVICE *dev, int num);
int write_block(DEVICE *dev);
-int write_dev(DEVICE *dev, char *buf, size_t len);
-int read_dev(DEVICE *dev, char *buf, size_t len);
uint32_t status_dev(DEVICE *dev);
-int eod_dev(DEVICE *dev);
+bool eod_dev(DEVICE *dev);
bool fsf_dev(DEVICE *dev, int num);
bool fsr_dev(DEVICE *dev, int num);
bool bsf_dev(DEVICE *dev, int num);
void detach_jcr_from_device(DEVICE *dev, JCR *jcr);
JCR *next_attached_jcr(DEVICE *dev, JCR *jcr);
bool dev_can_write(DEVICE *dev);
-int offline_or_rewind_dev(DEVICE *dev);
+bool offline_or_rewind_dev(DEVICE *dev);
bool reposition_dev(DEVICE *dev, uint32_t file, uint32_t block);
-void init_dev_wait_timers(DEVICE *dev);
+void init_device_wait_timers(DCR *dcr);
bool double_dev_wait_time(DEVICE *dev);
-
/* Get info about device */
-char * dev_name(DEVICE *dev);
char * dev_vol_name(DEVICE *dev);
uint32_t dev_block(DEVICE *dev);
uint32_t dev_file(DEVICE *dev);
bool dev_is_tape(DEVICE *dev);
+/* From dvd.c */
+bool dvd_close_job(DCR *dcr);
+
+
/* From device.c */
bool open_device(DCR *dcr);
bool first_open_device(DEVICE *dev);
const char *edit_blocked_reason(DEVICE *dev);
/* From dircmd.c */
-void *handle_connection_request(void *arg);
+void *handle_connection_request(void *arg);
/* From fd_cmds.c */
/* From job.c */
void stored_free_jcr(JCR *jcr);
-void connection_from_filed(void *arg);
+void connection_from_filed(void *arg);
void handle_filed_connection(BSOCK *fd, char *job_name);
/* From label.c */
int read_dev_volume_label(DCR *dcr);
+int read_dev_volume_label_guess(DCR *dcr, bool write);
void create_session_label(DCR *dcr, DEV_RECORD *rec, int label);
void create_volume_label(DEVICE *dev, const char *VolName, const char *PoolName);
bool write_new_volume_label_to_dev(DCR *dcr, const char *VolName, const char *PoolName);
+#define ANSI_VOL_LABEL 0
+#define ANSI_EOF_LABEL 1
+#define ANSI_EOV_LABEL 2
+bool write_ansi_ibm_labels(DCR *dcr, int type, const char *VolName);
+int read_ansi_ibm_label(DCR *dcr);
bool write_session_label(DCR *dcr, int label);
bool write_volume_label_to_block(DCR *dcr);
+bool rewrite_volume_label(DCR *dcr, bool recycle);
void dump_volume_label(DEVICE *dev);
void dump_label_record(DEVICE *dev, DEV_RECORD *rec, int verbose);
bool unser_volume_label(DEVICE *dev, DEV_RECORD *rec);
bool unser_session_label(SESSION_LABEL *label, DEV_RECORD *rec);
/* From match_bsr.c */
-int match_bsr(BSR *bsr, DEV_RECORD *rec, VOLUME_LABEL *volrec,
+int match_bsr(BSR *bsr, DEV_RECORD *rec, VOLUME_LABEL *volrec,
SESSION_LABEL *sesrec);
int match_bsr_block(BSR *bsr, DEV_BLOCK *block);
void position_bsr_block(BSR *bsr, DEV_BLOCK *block);
const char *stream_to_ascii(int stream, int fi);
bool write_record_to_block(DEV_BLOCK *block, DEV_RECORD *rec);
bool can_write_record_to_block(DEV_BLOCK *block, DEV_RECORD *rec);
-bool read_record_from_block(DEV_BLOCK *block, DEV_RECORD *rec);
+bool read_record_from_block(DEV_BLOCK *block, DEV_RECORD *rec);
DEV_RECORD *new_record();
void free_record(DEV_RECORD *rec);
void empty_record(DEV_RECORD *rec);
bool mount_cb(DCR *dcr));
/* From spool.c */
-bool begin_data_spool (JCR *jcr);
-bool discard_data_spool (JCR *jcr);
-bool commit_data_spool (JCR *jcr);
+bool begin_data_spool (DCR *dcr);
+bool discard_data_spool (DCR *dcr);
+bool commit_data_spool (DCR *dcr);
bool are_attributes_spooled (JCR *jcr);
bool begin_attribute_spool (JCR *jcr);
bool discard_attribute_spool (JCR *jcr);
bool commit_attribute_spool (JCR *jcr);
bool write_block_to_spool_file (DCR *dcr);
void list_spool_stats (BSOCK *bs);
+
+/* From wait.c */
+int wait_for_sysop(DCR *dcr);
+bool wait_for_device(DCR *dcr, const char *msg, bool first);