summaryrefslogtreecommitdiffstats
path: root/usr.sbin/burncd/burncd.c
diff options
context:
space:
mode:
authorsos <sos@FreeBSD.org>2000-03-03 23:17:27 +0000
committersos <sos@FreeBSD.org>2000-03-03 23:17:27 +0000
commit44ed8ebdc6948ba4220730ecb99f23f53d20a6ac (patch)
treea7301b8aa5e506c092aa38949043ac860d609025 /usr.sbin/burncd/burncd.c
parent1aaf1d9ecdd22aaf659a954f4b144a7fe71595c2 (diff)
downloadFreeBSD-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.c26
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;
OpenPOWER on IntegriCloud