|
Lines 56-62
Link Here
|
| 56 |
{ |
56 |
{ |
| 57 |
int ch, arg, addr; |
57 |
int ch, arg, addr; |
| 58 |
int eject=0, list=0, multi=0, preemp=0, speed=1, test_write=0; |
58 |
int eject=0, list=0, multi=0, preemp=0, speed=1, test_write=0; |
| 59 |
char *devname = "/dev/acd0c", *prog_name; |
59 |
const char *dev_name = "/dev/acd0c", *prog_name; |
| 60 |
int block_size = 0; |
60 |
int block_size = 0; |
| 61 |
|
61 |
|
| 62 |
prog_name = argv[0]; |
62 |
prog_name = argv[0]; |
|
Lines 67-73
Link Here
|
| 67 |
break; |
67 |
break; |
| 68 |
|
68 |
|
| 69 |
case 'f': |
69 |
case 'f': |
| 70 |
devname = optarg; |
70 |
dev_name = optarg; |
| 71 |
break; |
71 |
break; |
| 72 |
|
72 |
|
| 73 |
case 'l': |
73 |
case 'l': |
|
Lines 106-113
Link Here
|
| 106 |
if (argc == 0) |
106 |
if (argc == 0) |
| 107 |
usage(prog_name); |
107 |
usage(prog_name); |
| 108 |
|
108 |
|
| 109 |
if ((fd = open(devname, O_RDWR, 0)) < 0) |
109 |
if ((fd = open(dev_name, O_RDWR, 0)) < 0) |
| 110 |
err(EX_NOINPUT, "open(%s)", devname); |
110 |
err(EX_NOINPUT, "open(%s)", dev_name); |
| 111 |
|
111 |
|
| 112 |
if (ioctl(fd, CDRIOCWRITESPEED, &speed) < 0) |
112 |
if (ioctl(fd, CDRIOCWRITESPEED, &speed) < 0) |
| 113 |
err(EX_IOERR, "ioctl(CDRIOCWRITESPEED)"); |
113 |
err(EX_IOERR, "ioctl(CDRIOCWRITESPEED)"); |
|
Lines 134-140
Link Here
|
| 134 |
err(EX_IOERR, "ioctl(CDIOREADTOCENTRY)"); |
134 |
err(EX_IOERR, "ioctl(CDIOREADTOCENTRY)"); |
| 135 |
if (ioctl(fd, CDRIOCNEXTWRITEABLEADDR, &addr) < 0) |
135 |
if (ioctl(fd, CDRIOCNEXTWRITEABLEADDR, &addr) < 0) |
| 136 |
err(EX_IOERR, "ioctl(CDRIOCNEXTWRITEABLEADDR)"); |
136 |
err(EX_IOERR, "ioctl(CDRIOCNEXTWRITEABLEADDR)"); |
| 137 |
fprintf(stderr, "%d, %d\n", |
137 |
fprintf(stderr, "%ul, %d\n", |
| 138 |
ntohl(entry.entry.addr.lba), addr); |
138 |
ntohl(entry.entry.addr.lba), addr); |
| 139 |
|
139 |
|
| 140 |
break; |
140 |
break; |
|
Lines 207-213
Link Here
|
| 207 |
while (fgets(file_buf, sizeof(file_buf), fp) != NULL) { |
207 |
while (fgets(file_buf, sizeof(file_buf), fp) != NULL) { |
| 208 |
if (*file_buf == '#' || *file_buf == '\n') |
208 |
if (*file_buf == '#' || *file_buf == '\n') |
| 209 |
continue; |
209 |
continue; |
| 210 |
if (eol = strchr(file_buf, '\n')) |
210 |
if ((eol = strchr(file_buf, '\n')) != NULL) |
| 211 |
*eol = NULL; |
211 |
*eol = NULL; |
| 212 |
write_file(file_buf, block_size); |
212 |
write_file(file_buf, block_size); |
| 213 |
} |
213 |
} |
|
Lines 233-239
Link Here
|
| 233 |
} |
233 |
} |
| 234 |
|
234 |
|
| 235 |
void |
235 |
void |
| 236 |
cleanup(int dummy) |
236 |
cleanup(int dummy __unused) |
| 237 |
{ |
237 |
{ |
| 238 |
if (ioctl(fd, CDRIOCSETBLOCKSIZE, &saved_block_size) < 0) |
238 |
if (ioctl(fd, CDRIOCSETBLOCKSIZE, &saved_block_size) < 0) |
| 239 |
err(EX_IOERR, "ioctl(CDRIOCSETBLOCKSIZE)"); |
239 |
err(EX_IOERR, "ioctl(CDRIOCSETBLOCKSIZE)"); |
|
Lines 252-258
Link Here
|
| 252 |
{ |
252 |
{ |
| 253 |
int addr, count, file, filesize, size; |
253 |
int addr, count, file, filesize, size; |
| 254 |
char buf[2352*BLOCKS]; |
254 |
char buf[2352*BLOCKS]; |
| 255 |
struct stat stat; |
255 |
struct stat filestat; |
| 256 |
static int cdopen, done_stdin, tot_size = 0; |
256 |
static int cdopen, done_stdin, tot_size = 0; |
| 257 |
|
257 |
|
| 258 |
if (!strcmp(name, "-")) { |
258 |
if (!strcmp(name, "-")) { |
|
Lines 278-286
Link Here
|
| 278 |
if (ioctl(fd, CDRIOCNEXTWRITEABLEADDR, &addr) < 0) |
278 |
if (ioctl(fd, CDRIOCNEXTWRITEABLEADDR, &addr) < 0) |
| 279 |
err(EX_IOERR, "ioctl(CDRIOCNEXTWRITEABLEADDR)"); |
279 |
err(EX_IOERR, "ioctl(CDRIOCNEXTWRITEABLEADDR)"); |
| 280 |
|
280 |
|
| 281 |
if (fstat(file, &stat) < 0) |
281 |
if (fstat(file, &filestat) < 0) |
| 282 |
err(EX_IOERR, "fstat(%s)", name); |
282 |
err(EX_IOERR, "fstat(%s)", name); |
| 283 |
filesize = stat.st_size / 1024; |
283 |
filesize = filestat.st_size / 1024; |
| 284 |
|
284 |
|
| 285 |
if (!quiet) { |
285 |
if (!quiet) { |
| 286 |
fprintf(stderr, "next writeable LBA %d\n", addr); |
286 |
fprintf(stderr, "next writeable LBA %d\n", addr); |