📄 cdrecord.h
字号:
/* * Definitions for disk_status flags */#define DSF_DID_V 0x0001 /* Disk id valid */#define DSF_DBC_V 0x0002 /* Disk bar code valid */#define DSF_URU 0x0004 /* Disk is for unrestricted use */#define DSF_ERA 0x0008 /* Disk is erasable */typedef struct disk_status dstat_t;struct disk_status { long ds_cdrflags; /* Recording flags from cdrecord*/ long ds_diskid; /* Disk identification */ int ds_flags; /* Disk_status flags */ int ds_type; /* Abstract disk type */ Uchar ds_disktype; /* Disk type (from TOC/PMA) */ Uchar ds_diskstat; /* Disk status (MMC) */ Uchar ds_sessstat; /* Status of last sesion (MMC) */ Uchar ds_trfirst; /* first track # */ Uchar ds_trlast; /* last track # */ Uchar ds_trfirst_ls; /* first track # in last session*/ Uchar ds_barcode[8]; /* Disk bar code */ long ds_first_leadin; /* Start of first lead in (ATIP)*/ long ds_last_leadout; /* Start of last lead out (ATIP)*/ long ds_curr_leadin; /* Start of next lead in */ long ds_curr_leadout; /* Start of next lead out */ long ds_maxblocks; /* # of official blocks on disk */ long ds_maxrblocks; /* # real blocks on disk */ long ds_fwa; /* first writable addr */};/* * First approach of a CDR device abstraction layer. * This interface will change as long as I did not find the * optimum that fits for all devices. *//*--------------------------------------------------------------------------*/typedef struct cdr_cmd cdr_t;#ifdef _SCSITRANSP_Hstruct cdr_cmd { int cdr_dev; int cdr_flags; char *cdr_drname; /* Driver ID string */ char *cdr_drtext; /* Driver ID text */ struct cd_mode_page_2A *cdr_cdcap;/* dstat_t *cdr_dstat;*/#ifdef _SCSIREG_H cdr_t *(*cdr_identify) __PR((SCSI *scgp, cdr_t *, struct scsi_inquiry *)); /* identify drive */#else cdr_t *(*cdr_identify) __PR((SCSI *scgp, cdr_t *, void *)); /* identify drive */#endif int (*cdr_attach) __PR((SCSI *scgp, cdr_t *)); /* init error decoding etc*/ int (*cdr_getdisktype) __PR((SCSI *scgp, cdr_t *, dstat_t *)); /* get disk type */ int (*cdr_load) __PR((SCSI *scgp)); /* load disk */ int (*cdr_unload) __PR((SCSI *scgp)); /* unload disk */ int (*cdr_buffer_cap) __PR((SCSI *scgp, long *sizep, long *freep)); /* read buffer capacity */ int (*cdr_check_recovery) __PR((SCSI *scgp)); /* check if recover is needed */ int (*cdr_recover) __PR((SCSI *scgp, int track)); /* do recover */ int (*cdr_set_speed_dummy) __PR((SCSI *scgp, int *speedp, int dummy)); /* set recording speed & dummy write */ int (*cdr_set_secsize) __PR((SCSI *scgp, int secsize)); /* set sector size */ int (*cdr_next_wr_address) __PR((SCSI *scgp, int track, track_t *trackp, long *ap)); /* get next writable addr. */ int (*cdr_reserve_track) __PR((SCSI *scgp, unsigned long len)); /* reserve a track for future use */ int (*cdr_write_trackdata) __PR((SCSI *scgp, caddr_t buf, long daddr, long bytecnt, int seccnt, BOOL islast)); int (*cdr_send_cue) __PR((SCSI *scgp, int track, track_t *trackp)); /* send cue sheet */ int (*cdr_open_track) __PR((SCSI *scgp, cdr_t *, int track, track_t *trackp)); /* open new track */ int (*cdr_close_track) __PR((SCSI *scgp, int track, track_t *trackp)); /* close written track */ int (*cdr_open_session) __PR((SCSI *scgp, cdr_t *, int tracks, track_t *trackp, int toctype, int multi)); /* open new session */ int (*cdr_close_session) __PR((SCSI *scgp)); /* really needed ??? */ int (*cdr_session_offset) __PR((SCSI *scgp, long *soff)); /* read session offset*/ int (*cdr_fixate) __PR((SCSI *scgp, int onp, int dummy, int toctype, int tracks, track_t *trackp)); /* write toc on disk */ int (*cdr_blank) __PR((SCSI *scgp, long addr, int blanktype)); /* blank something */ int (*cdr_opc) __PR((SCSI *scgp, caddr_t bp, int cnt, int doopc)); /* Do OPC */};#endif/* * Definitions for cdr_flags */#define CDR_TAO 0x01 /* Drive supports Track at once */#define CDR_DAO 0x02 /* Drive supports Disk at once */#define CDR_PACKET 0x04 /* Drive supports packet writing*/#define CDR_SWABAUDIO 0x08 /* Drive swabs audio data */#define CDR_ISREADER 0x10 /* Drive is s CD-ROM reader */#define CDR_TRAYLOAD 0x20 /* Drive loads CD with tray */#define CDR_CADDYLOAD 0x40 /* Drive loads CD with caddy */#define CDR_NO_LOLIMIT 0x80 /* Drive ignores lead-out limit */#define CDR_DVD 0x100 /* Drive is a DVD drive */#define CDR_ALLOC 0x1000 /* structure is allocated *//* * cdrecord.c */extern int read_buf __PR((int f, char *bp, int size));extern int get_buf __PR((int f, char **bpp, int size));#ifdef _SCSITRANSP_Hextern int pad_track __PR((SCSI *scgp, cdr_t *dp, int track, track_t *trackp, long startsec, long amt, BOOL dolast, long *bytesp));extern void load_media __PR((SCSI *scgp, cdr_t *, BOOL));extern void unload_media __PR((SCSI *scgp, cdr_t *, int));#endifextern void raisepri __PR((int));extern int getnum __PR((char* arg, long* valp));/* * defaults.c */extern void cdr_defaults __PR((char **devp, int *speedp, long *fsp));/* * cd_misc.c */extern int from_bcd __PR((int b));extern int to_bcd __PR((int i));extern long msf_to_lba __PR((int m, int s, int f, BOOL force_positive));extern BOOL lba_to_msf __PR((long lba, msf_t *mp));extern void print_min_atip __PR((long li, long lo));/* * fifo.c */extern void init_fifo __PR((long));extern BOOL init_faio __PR((int tracks, track_t *track, int));extern BOOL await_faio __PR((void));extern void kill_faio __PR((void));extern int wait_faio __PR((void));extern int faio_read_buf __PR((int f, char *bp, int size));extern int faio_get_buf __PR((int f, char **bpp, int size));extern void fifo_stats __PR((void));extern int fifo_percent __PR((BOOL addone));/* * wm_session.c */extern int write_session_data __PR((cdr_t *dp, int track, track_t *trackp));/* * wm_track.c *//*extern int write_track_data __PR((cdr_t *dp, int track, track_t *trackp));*//* * wm_packet.c */#ifdef _SCSITRANSP_Hextern int write_packet_data __PR((SCSI *scgp, cdr_t *dp, int track, track_t *trackp));#endif/* * modes.c */#ifdef _SCSITRANSP_Hextern BOOL get_mode_params __PR((SCSI *scgp, int page, char *pagename, Uchar *modep, Uchar *cmodep, Uchar *dmodep, Uchar *smodep, int *lenp));extern BOOL set_mode_params __PR((SCSI *scgp, char *pagename, Uchar *modep, int len, int save, int secsize));#endif/* * misc.c */#ifdef timerclearextern void timevaldiff __PR((struct timeval *start, struct timeval *stop));#endif/* * scsi_cdr.c */#ifdef _SCSITRANSP_Hextern BOOL unit_ready __PR((SCSI *scgp));extern BOOL wait_unit_ready __PR((SCSI *scgp, int secs));extern BOOL scsi_in_progress __PR((SCSI *scgp));extern int test_unit_ready __PR((SCSI *scgp));extern int rezero_unit __PR((SCSI *scgp));extern int request_sense __PR((SCSI *scgp));extern int inquiry __PR((SCSI *scgp, caddr_t, int));extern int read_capacity __PR((SCSI *scgp));extern int scsi_load_unload __PR((SCSI *scgp, int));extern int scsi_prevent_removal __PR((SCSI *scgp, int));extern int scsi_start_stop_unit __PR((SCSI *scgp, int, int));extern int scsi_set_speed __PR((SCSI *scgp, int readspeed, int writespeed));extern int scsi_get_speed __PR((SCSI *scgp, int *readspeedp, int *writespeedp));extern int qic02 __PR((SCSI *scgp, int));extern int write_xg0 __PR((SCSI *scgp, caddr_t, long, long, int));extern int write_xg1 __PR((SCSI *scgp, caddr_t, long, long, int));extern int write_xg5 __PR((SCSI *scgp, caddr_t, long, long, int));extern int scsi_flush_cache __PR((SCSI *scgp));extern int read_buffer __PR((SCSI *scgp, caddr_t bp, int cnt, int mode));extern int read_subchannel __PR((SCSI *scgp, caddr_t bp, int track, int cnt,int msf, int subq, int fmt));extern int read_toc __PR((SCSI *scgp, caddr_t, int, int, int, int));extern int read_toc_philips __PR((SCSI *scgp, caddr_t, int, int, int, int));extern int read_header __PR((SCSI *scgp, caddr_t, long, int, int));extern int read_disk_info __PR((SCSI *scgp, caddr_t, int));extern int read_track_info __PR((SCSI *scgp, caddr_t, int, int));extern int send_opc __PR((SCSI *scgp, caddr_t, int cnt, int doopc));extern int scsi_close_tr_session __PR((SCSI *scgp, int type, int track, BOOL immed));extern int read_master_cue __PR((SCSI *scgp, caddr_t bp, int sheet, int cnt));extern int send_cue_sheet __PR((SCSI *scgp, caddr_t bp, long size));extern int read_buff_cap __PR((SCSI *scgp, long *, long *));extern int scsi_blank __PR((SCSI *scgp, long addr, int blanktype, BOOL immed));extern BOOL allow_atapi __PR((SCSI *scgp, BOOL new));extern int mode_select __PR((SCSI *scgp, Uchar *, int, int, int));extern int mode_sense __PR((SCSI *scgp, Uchar *dp, int cnt, int page, int pcf));extern int mode_select_sg0 __PR((SCSI *scgp, Uchar *, int, int, int));extern int mode_sense_sg0 __PR((SCSI *scgp, Uchar *dp, int cnt, int page, int pcf));extern int mode_select_g0 __PR((SCSI *scgp, Uchar *, int, int, int));extern int mode_select_g1 __PR((SCSI *scgp, Uchar *, int, int, int));extern int mode_sense_g0 __PR((SCSI *scgp, Uchar *dp, int cnt, int page, int pcf));extern int mode_sense_g1 __PR((SCSI *scgp, Uchar *dp, int cnt, int page, int pcf));extern int read_tochdr __PR((SCSI *scgp, cdr_t *, int *, int *));extern int read_cdtext __PR((SCSI *scgp));extern int read_trackinfo __PR((SCSI *scgp, int, long *, struct msf *, int *, int *, int *));extern int read_B0 __PR((SCSI *scgp, BOOL isbcd, long *b0p, long *lop));extern int read_session_offset __PR((SCSI *scgp, long *));extern int read_session_offset_philips __PR((SCSI *scgp, long *));extern int sense_secsize __PR((SCSI *scgp, int current));extern int select_secsize __PR((SCSI *scgp, int));extern BOOL is_cddrive __PR((SCSI *scgp));extern BOOL is_unknown_dev __PR((SCSI *scgp));extern int read_scsi __PR((SCSI *scgp, caddr_t, long, int));extern int read_g0 __PR((SCSI *scgp, caddr_t, long, int));extern int read_g1 __PR((SCSI *scgp, caddr_t, long, int));extern BOOL getdev __PR((SCSI *scgp, BOOL));extern void printdev __PR((SCSI *scgp));extern BOOL do_inquiry __PR((SCSI *scgp, BOOL));extern BOOL recovery_needed __PR((SCSI *scgp));extern int scsi_load __PR((SCSI *scgp));extern int scsi_unload __PR((SCSI *scgp));extern int scsi_cdr_write __PR((SCSI *scgp, caddr_t bp, long sectaddr, long size, int blocks, BOOL islast));extern struct cd_mode_page_2A * mmc_cap __PR((SCSI *scgp, Uchar *modep));extern void mmc_getval __PR((struct cd_mode_page_2A *mp, BOOL *cdrrp, BOOL *cdwrp, BOOL *cdrrwp, BOOL *cdwrwp, BOOL *dvdp));extern BOOL is_mmc __PR((SCSI *scgp, BOOL *dvdp));extern BOOL mmc_check __PR((SCSI *scgp, BOOL *cdrrp, BOOL *cdwrp, BOOL *cdrrwp, BOOL *cdwrwp, BOOL *dvdp));extern void print_capabilities __PR((SCSI *scgp));#endif/* * cdr_drv.c */#ifdef _SCSITRANSP_H#ifdef _SCSIREG_Hextern cdr_t *drive_identify __PR((SCSI *scgp, cdr_t *, struct scsi_inquiry *ip));#elseextern cdr_t *drive_identify __PR((SCSI *scgp,cdr_t *, void *ip));#endifextern int drive_attach __PR((SCSI *scgp, cdr_t *));#endifextern int attach_unknown __PR((void));#ifdef _SCSITRANSP_Hextern int blank_dummy __PR((SCSI *scgp, long addr, int blanktype));extern int drive_getdisktype __PR((SCSI *scgp, cdr_t *dp, dstat_t *dsp));extern int cmd_ill __PR((SCSI *scgp));extern int cmd_dummy __PR((SCSI *scgp));extern int no_sendcue __PR((SCSI *scgp, int tracks, track_t *trackp));extern int buf_dummy __PR((SCSI *scgp, long *sp, long *fp));#endifextern BOOL set_cdrcmds __PR((char *name, cdr_t **dpp));#ifdef _SCSITRANSP_Hextern cdr_t *get_cdrcmds __PR((SCSI *scgp));#endif/* * isosize.c */extern long isosize __PR((int f));/* * audiosize.c */extern BOOL is_auname __PR((const char *name));extern long ausize __PR((int f));extern BOOL is_wavname __PR((const char *name));extern long wavsize __PR((int f));/* * auinfo.c */extern void auinfo __PR((char *name, int track, track_t *trackp));extern void setmcn __PR((char *mcn, track_t *trackp));extern void setisrc __PR((char *isrc, track_t *trackp));extern void setindex __PR((char *tindex, track_t *trackp));/* * diskid.c */extern void pr_manufacturer __PR((msf_t *mp, BOOL rw, BOOL audio));extern int manufacturer_id __PR((msf_t *mp));extern long disk_rcap __PR((msf_t *mp, long maxblock, BOOL rw, BOOL audio));/*--------------------------------------------------------------------------*//* Test only *//*--------------------------------------------------------------------------*//*extern int do_cue __PR((int tracks, track_t *trackp, struct mmc_cue **cuep));*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -