diff options
author | sos <sos@FreeBSD.org> | 2000-03-03 23:17:27 +0000 |
---|---|---|
committer | sos <sos@FreeBSD.org> | 2000-03-03 23:17:27 +0000 |
commit | 44ed8ebdc6948ba4220730ecb99f23f53d20a6ac (patch) | |
tree | a7301b8aa5e506c092aa38949043ac860d609025 /usr.sbin/burncd/burncd.c | |
parent | 1aaf1d9ecdd22aaf659a954f4b144a7fe71595c2 (diff) | |
download | FreeBSD-src-44ed8ebdc6948ba4220730ecb99f23f53d20a6ac.zip FreeBSD-src-44ed8ebdc6948ba4220730ecb99f23f53d20a6ac.tar.gz |
Add msinfo command, used for multisession CD generation with
mkisofs. Gives the last track start LBA, and the next writable LBA.
Inspired by: peter
Diffstat (limited to 'usr.sbin/burncd/burncd.c')
-rw-r--r-- | usr.sbin/burncd/burncd.c | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/usr.sbin/burncd/burncd.c b/usr.sbin/burncd/burncd.c index ea36208..660e28b 100644 --- a/usr.sbin/burncd/burncd.c +++ b/usr.sbin/burncd/burncd.c @@ -101,13 +101,6 @@ main(int argc, char **argv) err_set_exit(cleanup); for (arg = 0; arg < argc; arg++) { - if (!strcmp(argv[arg], "blank")) { - if (!quiet) - fprintf(stderr, "blanking CD, please wait..\n"); - if (ioctl(fd, CDRIOCBLANK) < 0) - err(EX_IOERR, "ioctl(CDRIOCBLANK)"); - continue; - } if (!strcmp(argv[arg], "fixate")) { if (!quiet) fprintf(stderr, "fixating CD, please wait..\n"); @@ -115,6 +108,25 @@ main(int argc, char **argv) err(EX_IOERR, "ioctl(CDRIOCCLOSEDISK)"); break; } + if (!strcmp(argv[arg], "msinfo")) { + struct ioc_read_toc_single_entry entry; + + bzero(&entry, sizeof(struct ioc_read_toc_single_entry)); + entry.address_format = CD_LBA_FORMAT; + if (ioctl(fd, CDIOREADTOCENTRY, &entry) < 0) + err(EX_IOERR, "ioctl(CDIOREADTOCENTRY)"); + if (ioctl(fd, CDRIOCNEXTWRITEABLEADDR, &addr) < 0) + err(EX_IOERR, "ioctl(CDRIOCNEXTWRITEABLEADDR)"); + fprintf(stderr, "%d, %d\n", entry.entry.addr.lba, addr); + break; + } + if (!strcmp(argv[arg], "blank")) { + if (!quiet) + fprintf(stderr, "blanking CD, please wait..\n"); + if (ioctl(fd, CDRIOCBLANK) < 0) + err(EX_IOERR, "ioctl(CDRIOCBLANK)"); + continue; + } if (!strcmp(argv[arg], "audio") || !strcmp(argv[arg], "raw")) { track.test_write = test_write; track.track_type = CDR_DB_RAW; |