-
Notifications
You must be signed in to change notification settings - Fork 27
Expand file tree
/
Copy pathread_cd.py
More file actions
executable file
·91 lines (75 loc) · 2.16 KB
/
read_cd.py
File metadata and controls
executable file
·91 lines (75 loc) · 2.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/usr/bin/env python3
# SPDX-FileCopyrightText: 2021 The python-scsi Authors
#
# SPDX-License-Identifier: LGPL-2.1-or-later
# coding: utf-8
import sys
# from pyscsi.pyscsi import scsi_enum_readcd as READCD
from pyscsi.pyscsi.scsi import SCSI
from pyscsi.pyscsi.scsi_sense import SCSICheckCondition
from pyscsi.utils import init_device
def usage():
print(
"Usage: read_cd.py [-lba <lba>] [-tl <transfer-length>] [-est <expected-sector-type>] [-dap <dap>] [-mcsb <main-channel-selection-bits>] [-c2ei <c2-error-information>] [-scsb <sub-channel-selection-bits>] <device>"
)
def atoi(s):
if s[:2] == "0x":
return int(s, 16)
else:
return int(s, 10)
def main():
i = 1
lba = 0
tl = 1
est = 0
dap = 0
mcsb = 0x02
c2ei = 0
scsb = 0
while i < len(sys.argv):
if sys.argv[i] == "--help":
return usage()
if sys.argv[i] == "-lba":
del sys.argv[i]
lba = atoi(sys.argv[i])
del sys.argv[i]
continue
if sys.argv[i] == "-tl":
del sys.argv[i]
tl = atoi(sys.argv[i])
del sys.argv[i]
continue
if sys.argv[i] == "-est":
del sys.argv[i]
est = atoi(sys.argv[i])
del sys.argv[i]
continue
if sys.argv[i] == "-dap":
del sys.argv[i]
dap = atoi(sys.argv[i])
del sys.argv[i]
continue
if sys.argv[i] == "-mcsb":
del sys.argv[i]
mcsb = atoi(sys.argv[i])
del sys.argv[i]
continue
if sys.argv[i] == "-c2ei":
del sys.argv[i]
c2ei = atoi(sys.argv[i])
del sys.argv[i]
continue
if sys.argv[i] == "-scsb":
del sys.argv[i]
scsb = atoi(sys.argv[i])
del sys.argv[i]
continue
i += 1
if len(sys.argv) < 2:
return usage()
device = init_device(sys.argv[1])
s = SCSI(device)
cmd = s.readcd(lba=lba, tl=tl, est=est, dap=dap, mcsb=mcsb, c2ei=c2ei, scsb=scsb)
print(cmd.result)
if __name__ == "__main__":
main()