1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219 |
- {
- $Id$
- Copyright (c) 1999-2000 by Michael Van Canneyt
- Unit containing definitions from the Linux CDROM kernel interface.
- See the file COPYING.FPC, included in this distribution,
- for details about the copyright.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- **********************************************************************}
- unit lincd;
- {$mode objfpc}
- interface
- uses
- {$ifdef ver1_0}
- linux
- {$else}
- baseunix,
- unix
- {$endif}
- ;
- { ---------------------------------------------------------------------
- cdrom.h header translation.
- ---------------------------------------------------------------------}
- { Pointers to basic pascal types, inserted by h2pas conversion program.}
- Type
- PLongint = ^Longint;
- PSmallInt = ^SmallInt;
- PByte = ^Byte;
- PWord = ^Word;
- PDWord = ^DWord;
- PDouble = ^Double;
- TU8 = Byte;
- PU8 = ^TU8;
- TU32 = Cardinal;
- PU32 = ^TU32;
- {$PACKRECORDS C}
- const
- EDRIVE_CANT_DO_THIS = {$ifdef ver1_0}Sys_EOPNOTSUPP{$else}ESysEOPNOTSUPP{$endif}; // = 95
- CDROMPAUSE = $5301;
- CDROMRESUME = $5302;
- CDROMPLAYMSF = $5303;
- CDROMPLAYTRKIND = $5304;
- CDROMREADTOCHDR = $5305;
- CDROMREADTOCENTRY = $5306;
- CDROMSTOP = $5307;
- CDROMSTART = $5308;
- CDROMEJECT = $5309;
- CDROMVOLCTRL = $530a;
- CDROMSUBCHNL = $530b;
- CDROMREADMODE2 = $530c;
- CDROMREADMODE1 = $530d;
- CDROMREADAUDIO = $530e;
- CDROMEJECT_SW = $530f;
- CDROMMULTISESSION = $5310;
- CDROM_GET_MCN = $5311;
- CDROM_GET_UPC = CDROM_GET_MCN;
- CDROMRESET = $5312;
- CDROMVOLREAD = $5313;
- CDROMREADRAW = $5314;
- CDROMREADCOOKED = $5315;
- CDROMSEEK = $5316;
- CDROMPLAYBLK = $5317;
- CDROMREADALL = $5318;
- CDROMGETSPINDOWN = $531d;
- CDROMSETSPINDOWN = $531e;
- CDROMCLOSETRAY = $5319;
- CDROM_SET_OPTIONS = $5320;
- CDROM_CLEAR_OPTIONS = $5321;
- CDROM_SELECT_SPEED = $5322;
- CDROM_SELECT_DISC = $5323;
- CDROM_MEDIA_CHANGED = $5325;
- CDROM_DRIVE_STATUS = $5326;
- CDROM_DISC_STATUS = $5327;
- CDROM_CHANGER_NSLOTS = $5328;
- CDROM_LOCKDOOR = $5329;
- CDROM_DEBUG = $5330;
- CDROM_GET_CAPABILITY = $5331;
- CDROMAUDIOBUFSIZ = $5382;
- DVD_READ_STRUCT = $5390;
- DVD_WRITE_STRUCT = $5391;
- DVD_AUTH = $5392;
- CDROM_SEND_PACKET = $5393;
- CDROM_NEXT_WRITABLE = $5394;
- CDROM_LAST_WRITTEN = $5395;
- type
- Pcdrom_msf0 = ^Tcdrom_msf0;
- Tcdrom_msf0 = record
- minute : Tu8;
- second : Tu8;
- frame : Tu8;
- end;
- Pcdrom_addr = ^Tcdrom_addr;
- Tcdrom_addr = record
- case longint of
- 0 : ( msf : Tcdrom_msf0 );
- 1 : ( lba : longint );
- end;
- Pcdrom_msf = ^Tcdrom_msf;
- Tcdrom_msf = record
- cdmsf_min0 : Tu8;
- cdmsf_sec0 : Tu8;
- cdmsf_frame0 : Tu8;
- cdmsf_min1 : Tu8;
- cdmsf_sec1 : Tu8;
- cdmsf_frame1 : Tu8;
- end;
- Pcdrom_ti = ^Tcdrom_ti;
- Tcdrom_ti = record
- cdti_trk0 : Tu8;
- cdti_ind0 : Tu8;
- cdti_trk1 : Tu8;
- cdti_ind1 : Tu8;
- end;
- Pcdrom_tochdr = ^Tcdrom_tochdr;
- Tcdrom_tochdr = record
- cdth_trk0 : Tu8;
- cdth_trk1 : Tu8;
- end;
- Pcdrom_volctrl = ^Tcdrom_volctrl;
- Tcdrom_volctrl = record
- channel0 : Tu8;
- channel1 : Tu8;
- channel2 : Tu8;
- channel3 : Tu8;
- end;
- Pcdrom_subchnl = ^Tcdrom_subchnl;
- Tcdrom_subchnl = record
- cdsc_format : Tu8;
- cdsc_audiostatus : Tu8;
- flag0 : word;
- cdsc_trk : Tu8;
- cdsc_ind : Tu8;
- cdsc_absaddr : Tcdrom_addr;
- cdsc_reladdr : Tcdrom_addr;
- end;
- const
- bm_Tcdrom_subchnl_cdsc_adr = $F;
- bp_Tcdrom_subchnl_cdsc_adr = 0;
- bm_Tcdrom_subchnl_cdsc_ctrl = $F0;
- bp_Tcdrom_subchnl_cdsc_ctrl = 4;
- function cdsc_adr(var a : Tcdrom_subchnl) : Tu8;
- procedure set_cdsc_adr(var a : Tcdrom_subchnl; __cdsc_adr : Tu8);
- function cdsc_ctrl(var a : Tcdrom_subchnl) : Tu8;
- procedure set_cdsc_ctrl(var a : Tcdrom_subchnl; __cdsc_ctrl : Tu8);
- type
- Pcdrom_tocentry = ^Tcdrom_tocentry;
- Tcdrom_tocentry = record
- cdte_track : Tu8;
- flag0 : tu8;
- cdte_format : Tu8;
- cdte_addr : Tcdrom_addr;
- cdte_datamode : Tu8;
- end;
- const
- bm_Tcdrom_tocentry_cdte_adr = $F;
- bp_Tcdrom_tocentry_cdte_adr = 0;
- bm_Tcdrom_tocentry_cdte_ctrl = $F0;
- bp_Tcdrom_tocentry_cdte_ctrl = 4;
- function cdte_adr(var a : Tcdrom_tocentry) : Tu8;
- procedure set_cdte_adr(var a : Tcdrom_tocentry; __cdte_adr : Tu8);
- function cdte_ctrl(var a : Tcdrom_tocentry) : Tu8;
- procedure set_cdte_ctrl(var a : Tcdrom_tocentry; __cdte_ctrl : Tu8);
- type
- Pcdrom_read = ^Tcdrom_read;
- Tcdrom_read = record
- cdread_lba : longint;
- cdread_bufaddr : Pchar;
- cdread_buflen : longint;
- end;
- Pcdrom_read_audio = ^Tcdrom_read_audio;
- Tcdrom_read_audio = record
- addr : Tcdrom_addr;
- addr_format : Tu8;
- nframes : longint;
- buf : Pu8;
- end;
- Pcdrom_multisession = ^Tcdrom_multisession;
- Tcdrom_multisession = record
- addr : Tcdrom_addr;
- xa_flag : Tu8;
- addr_format : Tu8;
- end;
- Pcdrom_mcn = ^Tcdrom_mcn;
- Tcdrom_mcn = record
- medium_catalog_number : array[0..13] of Tu8;
- end;
- Pcdrom_blk = ^Tcdrom_blk;
- Tcdrom_blk = record
- from : dword;
- len : word;
- end;
- const
- CDROM_PACKET_SIZE = 12;
- CGC_DATA_UNKNOWN = 0;
- CGC_DATA_WRITE = 1;
- CGC_DATA_READ = 2;
- CGC_DATA_NONE = 3;
- // Moved here
- type
- Prequest_sense = ^Trequest_sense;
- Trequest_sense = record
- flag0 : word;
- segment_number : Tu8;
- flag1 : word;
- information : array[0..3] of Tu8;
- add_sense_len : Tu8;
- command_info : array[0..3] of Tu8;
- asc : Tu8;
- ascq : Tu8;
- fruc : Tu8;
- sks : array[0..2] of Tu8;
- asb : array[0..45] of Tu8;
- end;
- Pcdrom_generic_command = ^Tcdrom_generic_command;
- Tcdrom_generic_command = record
- cmd : array[0..(CDROM_PACKET_SIZE)-1] of byte;
- buffer : Pbyte;
- buflen : dword;
- stat : longint;
- sense : Prequest_sense;
- data_direction : byte;
- quiet : longint;
- timeout : longint;
- reserved : array[0..0] of pointer;
- end;
- const
- CD_MINS = 74;
- CD_SECS = 60;
- CD_FRAMES = 75;
- CD_SYNC_SIZE = 12;
- CD_MSF_OFFSET = 150;
- CD_CHUNK_SIZE = 24;
- CD_NUM_OF_CHUNKS = 98;
- CD_FRAMESIZE_SUB = 96;
- CD_HEAD_SIZE = 4;
- CD_SUBHEAD_SIZE = 8;
- CD_EDC_SIZE = 4;
- CD_ZERO_SIZE = 8;
- CD_ECC_SIZE = 276;
- CD_FRAMESIZE = 2048;
- CD_FRAMESIZE_RAW = 2352;
- CD_FRAMESIZE_RAWER = 2646;
- CD_FRAMESIZE_RAW1 = CD_FRAMESIZE_RAW - CD_SYNC_SIZE;
- CD_FRAMESIZE_RAW0 = (CD_FRAMESIZE_RAW - CD_SYNC_SIZE) - CD_HEAD_SIZE;
- CD_XA_HEAD = CD_HEAD_SIZE + CD_SUBHEAD_SIZE;
- CD_XA_TAIL = CD_EDC_SIZE + CD_ECC_SIZE;
- CD_XA_SYNC_HEAD = CD_SYNC_SIZE + CD_XA_HEAD;
- CDROM_LBA = $01;
- CDROM_MSF = $02;
- CDROM_DATA_TRACK = $04;
- CDROM_LEADOUT = $AA;
- CDROM_AUDIO_INVALID = $00;
- CDROM_AUDIO_PLAY = $11;
- CDROM_AUDIO_PAUSED = $12;
- CDROM_AUDIO_COMPLETED = $13;
- CDROM_AUDIO_ERROR = $14;
- CDROM_AUDIO_NO_STATUS = $15;
- CDC_CLOSE_TRAY = $1;
- CDC_OPEN_TRAY = $2;
- CDC_LOCK = $4;
- CDC_SELECT_SPEED = $8;
- CDC_SELECT_DISC = $10;
- CDC_MULTI_SESSION = $20;
- CDC_MCN = $40;
- CDC_MEDIA_CHANGED = $80;
- CDC_PLAY_AUDIO = $100;
- CDC_RESET = $200;
- CDC_IOCTLS = $400;
- CDC_DRIVE_STATUS = $800;
- CDC_GENERIC_PACKET = $1000;
- CDC_CD_R = $2000;
- CDC_CD_RW = $4000;
- CDC_DVD = $8000;
- CDC_DVD_R = $10000;
- CDC_DVD_RAM = $20000;
- CDS_NO_INFO = 0;
- CDS_NO_DISC = 1;
- CDS_TRAY_OPEN = 2;
- CDS_DRIVE_NOT_READY = 3;
- CDS_DISC_OK = 4;
- CDS_AUDIO = 100;
- CDS_DATA_1 = 101;
- CDS_DATA_2 = 102;
- CDS_XA_2_1 = 103;
- CDS_XA_2_2 = 104;
- CDS_MIXED = 105;
- CDO_AUTO_CLOSE = $1;
- CDO_AUTO_EJECT = $2;
- CDO_USE_FFLAGS = $4;
- CDO_LOCK = $8;
- CDO_CHECK_TYPE = $10;
- { was #define dname def_expr }
- function CDSL_NONE : longint;
- { return type might be wrong }
- { was #define dname def_expr }
- function CDSL_CURRENT : longint;
- const
- CD_PART_MAX = 64;
- CD_PART_MASK = CD_PART_MAX - 1;
- GPCMD_BLANK = $a1;
- GPCMD_CLOSE_TRACK = $5b;
- GPCMD_FLUSH_CACHE = $35;
- GPCMD_FORMAT_UNIT = $04;
- GPCMD_GET_CONFIGURATION = $46;
- GPCMD_GET_EVENT_STATUS_NOTIFICATION = $4a;
- GPCMD_GET_PERFORMANCE = $ac;
- GPCMD_INQUIRY = $12;
- GPCMD_LOAD_UNLOAD = $a6;
- GPCMD_MECHANISM_STATUS = $bd;
- GPCMD_MODE_SELECT_10 = $55;
- GPCMD_MODE_SENSE_10 = $5a;
- GPCMD_PAUSE_RESUME = $4b;
- GPCMD_PLAY_AUDIO_10 = $45;
- GPCMD_PLAY_AUDIO_MSF = $47;
- GPCMD_PLAY_AUDIO_TI = $48;
- GPCMD_PLAY_CD = $bc;
- GPCMD_PREVENT_ALLOW_MEDIUM_REMOVAL = $1e;
- GPCMD_READ_10 = $28;
- GPCMD_READ_12 = $a8;
- GPCMD_READ_CDVD_CAPACITY = $25;
- GPCMD_READ_CD = $be;
- GPCMD_READ_CD_MSF = $b9;
- GPCMD_READ_DISC_INFO = $51;
- GPCMD_READ_DVD_STRUCTURE = $ad;
- GPCMD_READ_FORMAT_CAPACITIES = $23;
- GPCMD_READ_HEADER = $44;
- GPCMD_READ_TRACK_RZONE_INFO = $52;
- GPCMD_READ_SUBCHANNEL = $42;
- GPCMD_READ_TOC_PMA_ATIP = $43;
- GPCMD_REPAIR_RZONE_TRACK = $58;
- GPCMD_REPORT_KEY = $a4;
- GPCMD_REQUEST_SENSE = $03;
- GPCMD_RESERVE_RZONE_TRACK = $53;
- GPCMD_SCAN = $ba;
- GPCMD_SEEK = $2b;
- GPCMD_SEND_DVD_STRUCTURE = $ad;
- GPCMD_SEND_EVENT = $a2;
- GPCMD_SEND_KEY = $a3;
- GPCMD_SEND_OPC = $54;
- GPCMD_SET_READ_AHEAD = $a7;
- GPCMD_SET_STREAMING = $b6;
- GPCMD_START_STOP_UNIT = $1b;
- GPCMD_STOP_PLAY_SCAN = $4e;
- GPCMD_TEST_UNIT_READY = $00;
- GPCMD_VERIFY_10 = $2f;
- GPCMD_WRITE_10 = $2a;
- GPCMD_WRITE_AND_VERIFY_10 = $2e;
- GPCMD_SET_SPEED = $bb;
- GPCMD_PLAYAUDIO_TI = $48;
- GPCMD_GET_MEDIA_STATUS = $da;
- GPMODE_R_W_ERROR_PAGE = $01;
- GPMODE_WRITE_PARMS_PAGE = $05;
- GPMODE_AUDIO_CTL_PAGE = $0e;
- GPMODE_POWER_PAGE = $1a;
- GPMODE_FAULT_FAIL_PAGE = $1c;
- GPMODE_TO_PROTECT_PAGE = $1d;
- GPMODE_CAPABILITIES_PAGE = $2a;
- GPMODE_ALL_PAGES = $3f;
- GPMODE_CDROM_PAGE = $0d;
- DVD_STRUCT_PHYSICAL = $00;
- DVD_STRUCT_COPYRIGHT = $01;
- DVD_STRUCT_DISCKEY = $02;
- DVD_STRUCT_BCA = $03;
- DVD_STRUCT_MANUFACT = $04;
- type
- Pdvd_layer = ^Tdvd_layer;
- Tdvd_layer = record
- flag0 : longint;
- start_sector : Tu32;
- end_sector : Tu32;
- end_sector_l0 : Tu32;
- end;
- const
- bm_Tdvd_layer_book_version = $F;
- bp_Tdvd_layer_book_version = 0;
- bm_Tdvd_layer_book_type = $F0;
- bp_Tdvd_layer_book_type = 4;
- bm_Tdvd_layer_min_rate = $F00;
- bp_Tdvd_layer_min_rate = 8;
- bm_Tdvd_layer_disc_size = $F000;
- bp_Tdvd_layer_disc_size = 12;
- bm_Tdvd_layer_layer_type = $F0000;
- bp_Tdvd_layer_layer_type = 16;
- bm_Tdvd_layer_track_path = $100000;
- bp_Tdvd_layer_track_path = 20;
- bm_Tdvd_layer_nlayers = $600000;
- bp_Tdvd_layer_nlayers = 21;
- bm_Tdvd_layer_track_density = $7800000;
- bp_Tdvd_layer_track_density = 23;
- bm_Tdvd_layer_linear_density = $78000000;
- bp_Tdvd_layer_linear_density = 27;
- bm_Tdvd_layer_bca = $80000000;
- bp_Tdvd_layer_bca = 31;
- function book_version(var a : Tdvd_layer) : Tu8;
- procedure set_book_version(var a : Tdvd_layer; __book_version : Tu8);
- function book_type(var a : Tdvd_layer) : Tu8;
- procedure set_book_type(var a : Tdvd_layer; __book_type : Tu8);
- function min_rate(var a : Tdvd_layer) : Tu8;
- procedure set_min_rate(var a : Tdvd_layer; __min_rate : Tu8);
- function disc_size(var a : Tdvd_layer) : Tu8;
- procedure set_disc_size(var a : Tdvd_layer; __disc_size : Tu8);
- function layer_type(var a : Tdvd_layer) : Tu8;
- procedure set_layer_type(var a : Tdvd_layer; __layer_type : Tu8);
- function track_path(var a : Tdvd_layer) : Tu8;
- procedure set_track_path(var a : Tdvd_layer; __track_path : Tu8);
- function nlayers(var a : Tdvd_layer) : Tu8;
- procedure set_nlayers(var a : Tdvd_layer; __nlayers : Tu8);
- function track_density(var a : Tdvd_layer) : Tu8;
- procedure set_track_density(var a : Tdvd_layer; __track_density : Tu8);
- function linear_density(var a : Tdvd_layer) : Tu8;
- procedure set_linear_density(var a : Tdvd_layer; __linear_density : Tu8);
- function bca(var a : Tdvd_layer) : Tu8;
- procedure set_bca(var a : Tdvd_layer; __bca : Tu8);
- const
- DVD_LAYERS = 4;
- type
- Pdvd_physical = ^Tdvd_physical;
- Tdvd_physical = record
- _type : Tu8;
- layer_num : Tu8;
- layer : array[0..(DVD_LAYERS)-1] of Tdvd_layer;
- end;
- Pdvd_copyright = ^Tdvd_copyright;
- Tdvd_copyright = record
- _type : Tu8;
- layer_num : Tu8;
- cpst : Tu8;
- rmi : Tu8;
- end;
- Pdvd_disckey = ^Tdvd_disckey;
- Tdvd_disckey = record
- _type : Tu8;
- flag0 : word;
- value : array[0..2047] of Tu8;
- end;
- const
- bm_Tdvd_disckey_agid = $3;
- bp_Tdvd_disckey_agid = 0;
- function agid(var a : Tdvd_disckey) : dword;
- procedure set_agid(var a : Tdvd_disckey; __agid : dword);
- type
- Pdvd_bca = ^Tdvd_bca;
- Tdvd_bca = record
- _type : Tu8;
- len : longint;
- value : array[0..187] of Tu8;
- end;
- Pdvd_manufact = ^Tdvd_manufact;
- Tdvd_manufact = record
- _type : Tu8;
- layer_num : Tu8;
- len : longint;
- value : array[0..2047] of Tu8;
- end;
- Pdvd_struct = ^Tdvd_struct;
- Tdvd_struct = record
- case longint of
- 0 : ( _type : Tu8 );
- 1 : ( physical : Tdvd_physical );
- 2 : ( copyright : Tdvd_copyright );
- 3 : ( disckey : Tdvd_disckey );
- 4 : ( bca : Tdvd_bca );
- 5 : ( manufact : Tdvd_manufact );
- end;
- const
- DVD_LU_SEND_AGID = 0;
- DVD_HOST_SEND_CHALLENGE = 1;
- DVD_LU_SEND_KEY1 = 2;
- DVD_LU_SEND_CHALLENGE = 3;
- DVD_HOST_SEND_KEY2 = 4;
- DVD_AUTH_ESTABLISHED = 5;
- DVD_AUTH_FAILURE = 6;
- DVD_LU_SEND_TITLE_KEY = 7;
- DVD_LU_SEND_ASF = 8;
- DVD_INVALIDATE_AGID = 9;
- DVD_LU_SEND_RPC_STATE = 10;
- DVD_HOST_SEND_RPC_STATE = 11;
- type
- Pdvd_key = ^Tdvd_key;
- Tdvd_key = Tu8;
- Pdvd_challenge = ^Tdvd_challenge;
- Tdvd_challenge = Tu8;
- Pdvd_lu_send_agid = ^Tdvd_lu_send_agid;
- Tdvd_lu_send_agid = record
- _type : Tu8;
- flag0 : word;
- end;
- const
- bm_Tdvd_lu_send_agid_agid = $3;
- bp_Tdvd_lu_send_agid_agid = 0;
- function agid(var a : Tdvd_lu_send_agid) : dword;
- procedure set_agid(var a : Tdvd_lu_send_agid; __agid : dword);
- type
- Pdvd_host_send_challenge = ^Tdvd_host_send_challenge;
- Tdvd_host_send_challenge = record
- _type : Tu8;
- flag0 : word;
- chal : Tdvd_challenge;
- end;
- const
- bm_Tdvd_host_send_challenge_agid = $3;
- bp_Tdvd_host_send_challenge_agid = 0;
- function agid(var a : Tdvd_host_send_challenge) : dword;
- procedure set_agid(var a : Tdvd_host_send_challenge; __agid : dword);
- type
- Pdvd_send_key = ^Tdvd_send_key;
- Tdvd_send_key = record
- _type : Tu8;
- flag0 : word;
- key : Tdvd_key;
- end;
- const
- bm_Tdvd_send_key_agid = $3;
- bp_Tdvd_send_key_agid = 0;
- function agid(var a : Tdvd_send_key) : dword;
- procedure set_agid(var a : Tdvd_send_key; __agid : dword);
- type
- Pdvd_lu_send_challenge = ^Tdvd_lu_send_challenge;
- Tdvd_lu_send_challenge = record
- _type : Tu8;
- flag0 : word;
- chal : Tdvd_challenge;
- end;
- const
- bm_Tdvd_lu_send_challenge_agid = $3;
- bp_Tdvd_lu_send_challenge_agid = 0;
- function agid(var a : Tdvd_lu_send_challenge) : dword;
- procedure set_agid(var a : Tdvd_lu_send_challenge; __agid : dword);
- const
- DVD_CPM_NO_COPYRIGHT = 0;
- DVD_CPM_COPYRIGHTED = 1;
- DVD_CP_SEC_NONE = 0;
- DVD_CP_SEC_EXIST = 1;
- DVD_CGMS_UNRESTRICTED = 0;
- DVD_CGMS_SINGLE = 2;
- DVD_CGMS_RESTRICTED = 3;
- type
- Pdvd_lu_send_title_key = ^Tdvd_lu_send_title_key;
- Tdvd_lu_send_title_key = record
- _type : Tu8;
- flag0 : word;
- title_key : Tdvd_key;
- lba : longint;
- flag1 : word;
- end;
- const
- bm_Tdvd_lu_send_title_key_agid = $3;
- bp_Tdvd_lu_send_title_key_agid = 0;
- bm_Tdvd_lu_send_title_key_cpm = $1;
- bp_Tdvd_lu_send_title_key_cpm = 0;
- bm_Tdvd_lu_send_title_key_cp_sec = $2;
- bp_Tdvd_lu_send_title_key_cp_sec = 1;
- bm_Tdvd_lu_send_title_key_cgms = $C;
- bp_Tdvd_lu_send_title_key_cgms = 2;
- function agid(var a : Tdvd_lu_send_title_key) : dword;
- procedure set_agid(var a : Tdvd_lu_send_title_key; __agid : dword);
- function cpm(var a : Tdvd_lu_send_title_key) : dword;
- procedure set_cpm(var a : Tdvd_lu_send_title_key; __cpm : dword);
- function cp_sec(var a : Tdvd_lu_send_title_key) : dword;
- procedure set_cp_sec(var a : Tdvd_lu_send_title_key; __cp_sec : dword);
- function cgms(var a : Tdvd_lu_send_title_key) : dword;
- procedure set_cgms(var a : Tdvd_lu_send_title_key; __cgms : dword);
- type
- Pdvd_lu_send_asf = ^Tdvd_lu_send_asf;
- Tdvd_lu_send_asf = record
- _type : Tu8;
- flag0 : word;
- end;
- const
- bm_Tdvd_lu_send_asf_agid = $3;
- bp_Tdvd_lu_send_asf_agid = 0;
- bm_Tdvd_lu_send_asf_asf = $4;
- bp_Tdvd_lu_send_asf_asf = 2;
- function agid(var a : Tdvd_lu_send_asf) : dword;
- procedure set_agid(var a : Tdvd_lu_send_asf; __agid : dword);
- function asf(var a : Tdvd_lu_send_asf) : dword;
- procedure set_asf(var a : Tdvd_lu_send_asf; __asf : dword);
- type
- Pdvd_host_send_rpcstate = ^Tdvd_host_send_rpcstate;
- Tdvd_host_send_rpcstate = record
- _type : Tu8;
- pdrc : Tu8;
- end;
- Pdvd_lu_send_rpcstate = ^Tdvd_lu_send_rpcstate;
- Tdvd_lu_send_rpcstate = record
- flag0 : word;
- region_mask : Tu8;
- rpc_scheme : Tu8;
- end;
- const
- bm_Tdvd_lu_send_rpcstate_type = $3;
- bp_Tdvd_lu_send_rpcstate_type = 0;
- bm_Tdvd_lu_send_rpcstate_vra = $1C;
- bp_Tdvd_lu_send_rpcstate_vra = 2;
- bm_Tdvd_lu_send_rpcstate_ucca = $E0;
- bp_Tdvd_lu_send_rpcstate_ucca = 5;
- function get_type(var a : Tdvd_lu_send_rpcstate) : Tu8;
- procedure set_type(var a : Tdvd_lu_send_rpcstate; __type : Tu8);
- function get_vra(var a : Tdvd_lu_send_rpcstate) : Tu8;
- procedure set_vra(var a : Tdvd_lu_send_rpcstate; __vra : Tu8);
- function ucca(var a : Tdvd_lu_send_rpcstate) : Tu8;
- procedure set_ucca(var a : Tdvd_lu_send_rpcstate; __ucca : Tu8);
- type
- Pdvd_authinfo = ^Tdvd_authinfo;
- Tdvd_authinfo = record
- case longint of
- 0 : ( _type : Tu8 );
- 1 : ( lsa : Tdvd_lu_send_agid );
- 2 : ( hsc : Tdvd_host_send_challenge );
- 3 : ( lsk : Tdvd_send_key );
- 4 : ( lsc : Tdvd_lu_send_challenge );
- 5 : ( hsk : Tdvd_send_key );
- 6 : ( lstk : Tdvd_lu_send_title_key );
- 7 : ( lsasf : Tdvd_lu_send_asf );
- 8 : ( hrpcs : Tdvd_host_send_rpcstate );
- 9 : ( lrpcs : Tdvd_lu_send_rpcstate );
- end;
- const
- bm_Trequest_sense_valid = $1;
- bp_Trequest_sense_valid = 0;
- bm_Trequest_sense_error_code = $FE;
- bp_Trequest_sense_error_code = 1;
- bm_Trequest_sense_reserved1 = $3;
- bp_Trequest_sense_reserved1 = 0;
- bm_Trequest_sense_ili = $4;
- bp_Trequest_sense_ili = 2;
- bm_Trequest_sense_reserved2 = $8;
- bp_Trequest_sense_reserved2 = 3;
- bm_Trequest_sense_sense_key = $F0;
- bp_Trequest_sense_sense_key = 4;
- function valid(var a : Trequest_sense) : Tu8;
- procedure set_valid(var a : Trequest_sense; __valid : Tu8);
- function error_code(var a : Trequest_sense) : Tu8;
- procedure set_error_code(var a : Trequest_sense; __error_code : Tu8);
- function reserved1(var a : Trequest_sense) : Tu8;
- procedure set_reserved1(var a : Trequest_sense; __reserved1 : Tu8);
- function ili(var a : Trequest_sense) : Tu8;
- procedure set_ili(var a : Trequest_sense; __ili : Tu8);
- function reserved2(var a : Trequest_sense) : Tu8;
- procedure set_reserved2(var a : Trequest_sense; __reserved2 : Tu8);
- function sense_key(var a : Trequest_sense) : Tu8;
- procedure set_sense_key(var a : Trequest_sense; __sense_key : Tu8);
- { ---------------------------------------------------------------------
- Utility functions
- ---------------------------------------------------------------------}
- Function IsCDDevice(Device : String) : Boolean;
- Function DetectCd : String;
- implementation
- uses major,sysutils;
- { ---------------------------------------------------------------------
- Functions from cdrom.h translation.
- ---------------------------------------------------------------------}
- function cdsc_adr(var a : Tcdrom_subchnl) : Tu8;
- begin
- cdsc_adr:=(a.flag0 and bm_Tcdrom_subchnl_cdsc_adr) shr bp_Tcdrom_subchnl_cdsc_adr;
- end;
- procedure set_cdsc_adr(var a : Tcdrom_subchnl; __cdsc_adr : Tu8);
- begin
- a.flag0:=a.flag0 or ((__cdsc_adr shl bp_Tcdrom_subchnl_cdsc_adr) and bm_Tcdrom_subchnl_cdsc_adr);
- end;
- function cdsc_ctrl(var a : Tcdrom_subchnl) : Tu8;
- begin
- cdsc_ctrl:=(a.flag0 and bm_Tcdrom_subchnl_cdsc_ctrl) shr bp_Tcdrom_subchnl_cdsc_ctrl;
- end;
- procedure set_cdsc_ctrl(var a : Tcdrom_subchnl; __cdsc_ctrl : Tu8);
- begin
- a.flag0:=a.flag0 or ((__cdsc_ctrl shl bp_Tcdrom_subchnl_cdsc_ctrl) and bm_Tcdrom_subchnl_cdsc_ctrl);
- end;
- function cdte_adr(var a : Tcdrom_tocentry) : Tu8;
- begin
- cdte_adr:=(a.flag0 and bm_Tcdrom_tocentry_cdte_adr) shr bp_Tcdrom_tocentry_cdte_adr;
- end;
- procedure set_cdte_adr(var a : Tcdrom_tocentry; __cdte_adr : Tu8);
- begin
- a.flag0:=a.flag0 or ((__cdte_adr shl bp_Tcdrom_tocentry_cdte_adr) and bm_Tcdrom_tocentry_cdte_adr);
- end;
- function cdte_ctrl(var a : Tcdrom_tocentry) : Tu8;
- begin
- cdte_ctrl:=(a.flag0 and bm_Tcdrom_tocentry_cdte_ctrl) shr bp_Tcdrom_tocentry_cdte_ctrl;
- end;
- procedure set_cdte_ctrl(var a : Tcdrom_tocentry; __cdte_ctrl : Tu8);
- begin
- a.flag0:=a.flag0 or ((__cdte_ctrl shl bp_Tcdrom_tocentry_cdte_ctrl) and bm_Tcdrom_tocentry_cdte_ctrl);
- end;
- { was #define dname def_expr }
- function CDSL_NONE : longint;
- { return type might be wrong }
- begin
- CDSL_NONE:=(longint(( not (0)) shr 1)) - 1;
- end;
- { was #define dname def_expr }
- function CDSL_CURRENT : longint;
- begin
- CDSL_CURRENT:=longint(( not (0)) shr 1);
- end;
- function book_version(var a : Tdvd_layer) : Tu8;
- begin
- book_version:=(a.flag0 and bm_Tdvd_layer_book_version) shr bp_Tdvd_layer_book_version;
- end;
- procedure set_book_version(var a : Tdvd_layer; __book_version : Tu8);
- begin
- a.flag0:=a.flag0 or ((__book_version shl bp_Tdvd_layer_book_version) and bm_Tdvd_layer_book_version);
- end;
- function book_type(var a : Tdvd_layer) : Tu8;
- begin
- book_type:=(a.flag0 and bm_Tdvd_layer_book_type) shr bp_Tdvd_layer_book_type;
- end;
- procedure set_book_type(var a : Tdvd_layer; __book_type : Tu8);
- begin
- a.flag0:=a.flag0 or ((__book_type shl bp_Tdvd_layer_book_type) and bm_Tdvd_layer_book_type);
- end;
- function min_rate(var a : Tdvd_layer) : Tu8;
- begin
- min_rate:=(a.flag0 and bm_Tdvd_layer_min_rate) shr bp_Tdvd_layer_min_rate;
- end;
- procedure set_min_rate(var a : Tdvd_layer; __min_rate : Tu8);
- begin
- a.flag0:=a.flag0 or ((__min_rate shl bp_Tdvd_layer_min_rate) and bm_Tdvd_layer_min_rate);
- end;
- function disc_size(var a : Tdvd_layer) : Tu8;
- begin
- disc_size:=(a.flag0 and bm_Tdvd_layer_disc_size) shr bp_Tdvd_layer_disc_size;
- end;
- procedure set_disc_size(var a : Tdvd_layer; __disc_size : Tu8);
- begin
- a.flag0:=a.flag0 or ((__disc_size shl bp_Tdvd_layer_disc_size) and bm_Tdvd_layer_disc_size);
- end;
- function layer_type(var a : Tdvd_layer) : Tu8;
- begin
- layer_type:=(a.flag0 and bm_Tdvd_layer_layer_type) shr bp_Tdvd_layer_layer_type;
- end;
- procedure set_layer_type(var a : Tdvd_layer; __layer_type : Tu8);
- begin
- a.flag0:=a.flag0 or ((__layer_type shl bp_Tdvd_layer_layer_type) and bm_Tdvd_layer_layer_type);
- end;
- function track_path(var a : Tdvd_layer) : Tu8;
- begin
- track_path:=(a.flag0 and bm_Tdvd_layer_track_path) shr bp_Tdvd_layer_track_path;
- end;
- procedure set_track_path(var a : Tdvd_layer; __track_path : Tu8);
- begin
- a.flag0:=a.flag0 or ((__track_path shl bp_Tdvd_layer_track_path) and bm_Tdvd_layer_track_path);
- end;
- function nlayers(var a : Tdvd_layer) : Tu8;
- begin
- nlayers:=(a.flag0 and bm_Tdvd_layer_nlayers) shr bp_Tdvd_layer_nlayers;
- end;
- procedure set_nlayers(var a : Tdvd_layer; __nlayers : Tu8);
- begin
- a.flag0:=a.flag0 or ((__nlayers shl bp_Tdvd_layer_nlayers) and bm_Tdvd_layer_nlayers);
- end;
- function track_density(var a : Tdvd_layer) : Tu8;
- begin
- track_density:=(a.flag0 and bm_Tdvd_layer_track_density) shr bp_Tdvd_layer_track_density;
- end;
- procedure set_track_density(var a : Tdvd_layer; __track_density : Tu8);
- begin
- a.flag0:=a.flag0 or ((__track_density shl bp_Tdvd_layer_track_density) and bm_Tdvd_layer_track_density);
- end;
- function linear_density(var a : Tdvd_layer) : Tu8;
- begin
- linear_density:=(a.flag0 and bm_Tdvd_layer_linear_density) shr bp_Tdvd_layer_linear_density;
- end;
- procedure set_linear_density(var a : Tdvd_layer; __linear_density : Tu8);
- begin
- a.flag0:=a.flag0 or ((__linear_density shl bp_Tdvd_layer_linear_density) and bm_Tdvd_layer_linear_density);
- end;
- function bca(var a : Tdvd_layer) : Tu8;
- begin
- bca:=(a.flag0 and bm_Tdvd_layer_bca) shr bp_Tdvd_layer_bca;
- end;
- procedure set_bca(var a : Tdvd_layer; __bca : Tu8);
- begin
- a.flag0:=a.flag0 or ((__bca shl bp_Tdvd_layer_bca) and bm_Tdvd_layer_bca);
- end;
- function agid(var a : Tdvd_disckey) : dword;
- begin
- agid:=(a.flag0 and bm_Tdvd_disckey_agid) shr bp_Tdvd_disckey_agid;
- end;
- procedure set_agid(var a : Tdvd_disckey; __agid : dword);
- begin
- a.flag0:=a.flag0 or ((__agid shl bp_Tdvd_disckey_agid) and bm_Tdvd_disckey_agid);
- end;
- function agid(var a : Tdvd_lu_send_agid) : dword;
- begin
- agid:=(a.flag0 and bm_Tdvd_lu_send_agid_agid) shr bp_Tdvd_lu_send_agid_agid;
- end;
- procedure set_agid(var a : Tdvd_lu_send_agid; __agid : dword);
- begin
- a.flag0:=a.flag0 or ((__agid shl bp_Tdvd_lu_send_agid_agid) and bm_Tdvd_lu_send_agid_agid);
- end;
- function agid(var a : Tdvd_host_send_challenge) : dword;
- begin
- agid:=(a.flag0 and bm_Tdvd_host_send_challenge_agid) shr bp_Tdvd_host_send_challenge_agid;
- end;
- procedure set_agid(var a : Tdvd_host_send_challenge; __agid : dword);
- begin
- a.flag0:=a.flag0 or ((__agid shl bp_Tdvd_host_send_challenge_agid) and bm_Tdvd_host_send_challenge_agid);
- end;
- function agid(var a : Tdvd_send_key) : dword;
- begin
- agid:=(a.flag0 and bm_Tdvd_send_key_agid) shr bp_Tdvd_send_key_agid;
- end;
- procedure set_agid(var a : Tdvd_send_key; __agid : dword);
- begin
- a.flag0:=a.flag0 or ((__agid shl bp_Tdvd_send_key_agid) and bm_Tdvd_send_key_agid);
- end;
- function agid(var a : Tdvd_lu_send_challenge) : dword;
- begin
- agid:=(a.flag0 and bm_Tdvd_lu_send_challenge_agid) shr bp_Tdvd_lu_send_challenge_agid;
- end;
- procedure set_agid(var a : Tdvd_lu_send_challenge; __agid : dword);
- begin
- a.flag0:=a.flag0 or ((__agid shl bp_Tdvd_lu_send_challenge_agid) and bm_Tdvd_lu_send_challenge_agid);
- end;
- function agid(var a : Tdvd_lu_send_title_key) : dword;
- begin
- agid:=(a.flag0 and bm_Tdvd_lu_send_title_key_agid) shr bp_Tdvd_lu_send_title_key_agid;
- end;
- procedure set_agid(var a : Tdvd_lu_send_title_key; __agid : dword);
- begin
- a.flag0:=a.flag0 or ((__agid shl bp_Tdvd_lu_send_title_key_agid) and bm_Tdvd_lu_send_title_key_agid);
- end;
- function cpm(var a : Tdvd_lu_send_title_key) : dword;
- begin
- cpm:=(a.flag1 and bm_Tdvd_lu_send_title_key_cpm) shr bp_Tdvd_lu_send_title_key_cpm;
- end;
- procedure set_cpm(var a : Tdvd_lu_send_title_key; __cpm : dword);
- begin
- a.flag1:=a.flag1 or ((__cpm shl bp_Tdvd_lu_send_title_key_cpm) and bm_Tdvd_lu_send_title_key_cpm);
- end;
- function cp_sec(var a : Tdvd_lu_send_title_key) : dword;
- begin
- cp_sec:=(a.flag1 and bm_Tdvd_lu_send_title_key_cp_sec) shr bp_Tdvd_lu_send_title_key_cp_sec;
- end;
- procedure set_cp_sec(var a : Tdvd_lu_send_title_key; __cp_sec : dword);
- begin
- a.flag1:=a.flag1 or ((__cp_sec shl bp_Tdvd_lu_send_title_key_cp_sec) and bm_Tdvd_lu_send_title_key_cp_sec);
- end;
- function cgms(var a : Tdvd_lu_send_title_key) : dword;
- begin
- cgms:=(a.flag1 and bm_Tdvd_lu_send_title_key_cgms) shr bp_Tdvd_lu_send_title_key_cgms;
- end;
- procedure set_cgms(var a : Tdvd_lu_send_title_key; __cgms : dword);
- begin
- a.flag1:=a.flag1 or ((__cgms shl bp_Tdvd_lu_send_title_key_cgms) and bm_Tdvd_lu_send_title_key_cgms);
- end;
- function agid(var a : Tdvd_lu_send_asf) : dword;
- begin
- agid:=(a.flag0 and bm_Tdvd_lu_send_asf_agid) shr bp_Tdvd_lu_send_asf_agid;
- end;
- procedure set_agid(var a : Tdvd_lu_send_asf; __agid : dword);
- begin
- a.flag0:=a.flag0 or ((__agid shl bp_Tdvd_lu_send_asf_agid) and bm_Tdvd_lu_send_asf_agid);
- end;
- function asf(var a : Tdvd_lu_send_asf) : dword;
- begin
- asf:=(a.flag0 and bm_Tdvd_lu_send_asf_asf) shr bp_Tdvd_lu_send_asf_asf;
- end;
- procedure set_asf(var a : Tdvd_lu_send_asf; __asf : dword);
- begin
- a.flag0:=a.flag0 or ((__asf shl bp_Tdvd_lu_send_asf_asf) and bm_Tdvd_lu_send_asf_asf);
- end;
- function get_type(var a : Tdvd_lu_send_rpcstate) : Tu8;
- begin
- get_type:=(a.flag0 and bm_Tdvd_lu_send_rpcstate_type) shr bp_Tdvd_lu_send_rpcstate_type;
- end;
- procedure set_type(var a : Tdvd_lu_send_rpcstate; __type : Tu8);
- begin
- a.flag0:=a.flag0 or ((__type shl bp_Tdvd_lu_send_rpcstate_type) and bm_Tdvd_lu_send_rpcstate_type);
- end;
- function get_vra(var a : Tdvd_lu_send_rpcstate) : Tu8;
- begin
- get_vra:=(a.flag0 and bm_Tdvd_lu_send_rpcstate_vra) shr bp_Tdvd_lu_send_rpcstate_vra;
- end;
- procedure set_vra(var a : Tdvd_lu_send_rpcstate; __vra : Tu8);
- begin
- a.flag0:=a.flag0 or ((__vra shl bp_Tdvd_lu_send_rpcstate_vra) and bm_Tdvd_lu_send_rpcstate_vra);
- end;
- function ucca(var a : Tdvd_lu_send_rpcstate) : Tu8;
- begin
- ucca:=(a.flag0 and bm_Tdvd_lu_send_rpcstate_ucca) shr bp_Tdvd_lu_send_rpcstate_ucca;
- end;
- procedure set_ucca(var a : Tdvd_lu_send_rpcstate; __ucca : Tu8);
- begin
- a.flag0:=a.flag0 or ((__ucca shl bp_Tdvd_lu_send_rpcstate_ucca) and bm_Tdvd_lu_send_rpcstate_ucca);
- end;
- function valid(var a : Trequest_sense) : Tu8;
- begin
- valid:=(a.flag0 and bm_Trequest_sense_valid) shr bp_Trequest_sense_valid;
- end;
- procedure set_valid(var a : Trequest_sense; __valid : Tu8);
- begin
- a.flag0:=a.flag0 or ((__valid shl bp_Trequest_sense_valid) and bm_Trequest_sense_valid);
- end;
- function error_code(var a : Trequest_sense) : Tu8;
- begin
- error_code:=(a.flag0 and bm_Trequest_sense_error_code) shr bp_Trequest_sense_error_code;
- end;
- procedure set_error_code(var a : Trequest_sense; __error_code : Tu8);
- begin
- a.flag0:=a.flag0 or ((__error_code shl bp_Trequest_sense_error_code) and bm_Trequest_sense_error_code);
- end;
- function reserved1(var a : Trequest_sense) : Tu8;
- begin
- reserved1:=(a.flag1 and bm_Trequest_sense_reserved1) shr bp_Trequest_sense_reserved1;
- end;
- procedure set_reserved1(var a : Trequest_sense; __reserved1 : Tu8);
- begin
- a.flag1:=a.flag1 or ((__reserved1 shl bp_Trequest_sense_reserved1) and bm_Trequest_sense_reserved1);
- end;
- function ili(var a : Trequest_sense) : Tu8;
- begin
- ili:=(a.flag1 and bm_Trequest_sense_ili) shr bp_Trequest_sense_ili;
- end;
- procedure set_ili(var a : Trequest_sense; __ili : Tu8);
- begin
- a.flag1:=a.flag1 or ((__ili shl bp_Trequest_sense_ili) and bm_Trequest_sense_ili);
- end;
- function reserved2(var a : Trequest_sense) : Tu8;
- begin
- reserved2:=(a.flag1 and bm_Trequest_sense_reserved2) shr bp_Trequest_sense_reserved2;
- end;
- procedure set_reserved2(var a : Trequest_sense; __reserved2 : Tu8);
- begin
- a.flag1:=a.flag1 or ((__reserved2 shl bp_Trequest_sense_reserved2) and bm_Trequest_sense_reserved2);
- end;
- function sense_key(var a : Trequest_sense) : Tu8;
- begin
- sense_key:=(a.flag1 and bm_Trequest_sense_sense_key) shr bp_Trequest_sense_sense_key;
- end;
- procedure set_sense_key(var a : Trequest_sense; __sense_key : Tu8);
- begin
- a.flag1:=a.flag1 or ((__sense_key shl bp_Trequest_sense_sense_key) and bm_Trequest_sense_sense_key);
- end;
- { ---------------------------------------------------------------------
- Implementation of utility functions.
- ---------------------------------------------------------------------}
- Const
- NrDevices = 14;
- Devices : Array[1..NrDevices] of string = (
- '/dev/cdrom',
- '/dev/cdroms/cdrom?',
- '/dev/hd?',
- '/dev/sg?',
- '/dev/cdu31a',
- '/dev/cdu535',
- '/dev/sbpcd',
- '/dev/sbpcd?',
- '/dev/sonycd',
- '/dev/mcd',
- '/dev/sjcd',
- '/dev/cm206cd',
- '/dev/gscd',
- '/dev/optcd');
- Function DetectCD : String;
- Var
- I,J,L : Integer;
- S : String;
- begin
- Result:='';
- I:=0;
- While (Result='') and (I<NrDevices) do
- begin
- Inc(I);
- S:=Devices[i];
- L:=Length(S);
- If S[l]='?' then
- begin
- S:=Copy(S,1,L-1);
- For J:=0 to 3 do
- If IsCdDevice(S+Chr(Ord('0')+J)) then
- Result:=S+Chr(Ord('0')+J)
- else If IsCdDevice(S+Chr(Ord('a')+J)) then
- Result:=S+Chr(Ord('a')+J)
- end
- else
- If IsCdDevice(S) then
- Result:=S;
- end;
- end;
- Const
- IDEMajor = [IDE0_MAJOR,IDE1_MAJOR,IDE2_MAJOR,IDE3_MAJOR];
- CDMajor = [CDU31A_CDROM_MAJOR,CDU535_CDROM_MAJOR,
- MATSUSHITA_CDROM_MAJOR,MATSUSHITA_CDROM2_MAJOR,
- MATSUSHITA_CDROM3_MAJOR,MATSUSHITA_CDROM4_MAJOR,
- SANYO_CDROM_MAJOR,
- MITSUMI_CDROM_MAJOR,MITSUMI_X_CDROM_MAJOR,
- OPTICS_CDROM_MAJOR,AZTECH_CDROM_MAJOR,
- GOLDSTAR_CDROM_MAJOR,CM206_CDROM_MAJOR];
- Function TestCDRomIOCTL(Device : String) : Boolean;forward;
- Function IsCDDevice(Device : String) : Boolean;
- Var
- Info : stat;
- S : String;
- DeviceMajor,F : Integer;
- begin
- {$ifdef debug}
- Writeln('Testing device : ',Device);
- {$endif}
- Result:=False;
- {$ifdef ver1_0}
- If not fstat(device,info) then
- {$else}
- If fpstat(device,info)<>0 then
- {$endif}
- exit;
- if not ({$ifdef ver1_0}S_ISCHR{$else}fpS_ISCHR{$endif}(info.mode) or
- {$Ifdef ver1_0}S_ISBLK{$else}fpS_ISBLK{$endif}(info.mode)) then
- exit;
- S:={$ifdef ver1_0}ReadLink{$else}fpReadLink{$endif}(Device);
- If (S<>'') then
- Device:=S;
- {$ifdef ver1_0}
- If Not FStat(Device,info) then
- {$else}
- If fpStat(Device,info)<>0 then
- {$endif}
- exit;
- DeviceMajor:=info.rdev shr 8;
- If DeviceMajor in [IDE0_MAJOR,IDE1_MAJOR,IDE2_MAJOR,IDE3_MAJOR] then
- Result:=TestCDRomIOCTL(Device)
- else
- begin
- Result:=DeviceMajor in CDMajor;
- If Not Result then
- begin
- // test SCSI
- end
- else
- begin
- F:={$ifdef ver1_0}fdOpen{$else}fpOpen{$endif}(Device,OPEN_RDONLY or OPEN_NONBLOCK);
- Result:=(F>=0);
- If Result then
- {$ifdef ver1_0}fdClose{$else}fpClose{$endif}(F);
- end;
- end;
- end;
- Function TestCDRomIOCTL(Device : String) : Boolean;
- Var
- F : Integer;
- info : Tcdrom_volctrl;
- begin
- {$ifdef debug}
- Writeln('Testing for ATAPI');
- {$endif}
- Result:=False;
- f:={$ifdef ver1_0}fdOpen{$else}fpOpen{$endif}(device,OPEN_RDONLY or OPEN_NONBLOCK);
- If (f<0) then
- exit;
- {$ifdef ver1_0}
- Result:=ioctl(f,CDROMVOLREAD,@info);
- {$else}
- Result:=(fpIOCtl(f,CDROMVOLREAD,@info)=0);
- {$endif}
- {$ifdef ver1_0}fdClose{$else}fpClose{$endif}(f);
- end;
- end.
|