summaryrefslogtreecommitdiffstats
path: root/usr.sbin/burncd
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
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')
-rw-r--r--usr.sbin/burncd/burncd.86
-rw-r--r--usr.sbin/burncd/burncd.c26
2 files changed, 25 insertions, 7 deletions
diff --git a/usr.sbin/burncd/burncd.8 b/usr.sbin/burncd/burncd.8
index 0ed8cec..e5ba2c5 100644
--- a/usr.sbin/burncd/burncd.8
+++ b/usr.sbin/burncd/burncd.8
@@ -68,6 +68,12 @@ test write, dont actually wirte on the media.
may be one of:
.Pp
.Bl -tag -width XXXXXXXXXXXX
+.It Ar msinfo
+Show the first LBA of the last track on the media
+and the next writeable address on the media for use with
+.Xr mkisofs 1
+.Ar -msinfo
+switch when adding additional data to ISO filesystems with extra sessions.
.It Ar blank
Blank a CD-RW medium.
This uses the fast blanking method, so data are not physically overwritten, only those areas that make the media appear blank for further usage.
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