6
Function ReadCDTOC(Device : String; Var CDTOC : Array of TTocEntry) : Integer;
10
tochdr : Tcdrom_tochdr;
11
tocentry : tcdrom_tocentry;
14
drive:=fpOpen(Device, Open_RDONLY or Open_NONBLOCK);
20
if fpioctl(drive, CDROMREADTOCHDR, @tochdr)<>0 then
25
If (tochdr.cdth_trk1-tochdr.cdth_trk0)>High(CDToc) then
30
for i := tochdr.cdth_trk0 to tochdr.cdth_trk1 do
32
tocentry.cdte_track := i;
33
tocentry.cdte_format := CDROM_MSF;
34
fpIOCtl(drive, CDROMREADTOCENTRY, @tocentry);
35
// We should do some error checking here actually.
38
min := tocentry.cdte_addr.msf.minute;
39
sec := tocentry.cdte_addr.msf.second;
40
frame := tocentry.cdte_addr.msf.frame;
46
tocentry.cdte_track := $AA;
47
tocentry.cdte_format := CDROM_MSF;
48
fpIOCtl(drive, CDROMREADTOCENTRY, @tocentry);
51
Min := tocentry.cdte_addr.msf.minute;
52
sec := tocentry.cdte_addr.msf.second;
53
frame := tocentry.cdte_addr.msf.frame;
54
inc(frame, min*60*75);
61
{ ---------------------------------------------------------------------
63
---------------------------------------------------------------------}
65
Function ExtractDevice(S : String) : String;
78
While (P<=Length(S)) and (S[P] in [#9,' ']) do
81
While (L<=Length(S)) and (Not (S[L] in [#9,' '])) do
84
Result:=Copy(S,P,L-P);
88
Function TestFSTab(var Devices : Array of String) : Integer;
96
Assign(FSTab,'/etc/fstab');
102
While Not EOF(fstab) do
105
Line:=ExtractDevice(Line);
106
If IsCdDevice(Line) and (Result<=High(Devices)) then
108
Devices[Result]:=Line;
118
Function GetCDRomDevices(Var Devices : Array of string) : Integer;
124
Result:=TestFSTab(Devices);