FreeBSD Bugzilla – Attachment 9722 Details for
Bug 19789
[PATCH] msinfo reports incorrect data for multisession disks
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
file.diff
file.diff (text/plain), 3.10 KB, created by
seva
on 2000-07-09 00:20:00 UTC
(
hide
)
Description:
file.diff
Filename:
MIME Type:
Creator:
seva
Created:
2000-07-09 00:20:00 UTC
Size:
3.10 KB
patch
obsolete
>Index: burncd.c >=================================================================== >RCS file: /usr/rep/src/usr.sbin/burncd/burncd.c,v >retrieving revision 1.10 >diff -u -r1.10 burncd.c >--- burncd.c 2000/03/03 23:17:27 1.10 >+++ burncd.c 2000/07/05 09:34:42 >@@ -40,7 +40,7 @@ > #include <sys/cdio.h> > #include <sys/cdrio.h> > >-#define BLOCKS 16 >+#define BLOCKS 500 > > static int fd, saved_block_size; > void cleanup(int); >@@ -52,7 +52,7 @@ > char *devname = "/dev/acd0c"; > char buf[2352*BLOCKS]; > int arg, file, addr, count, filesize; >- int block_size = 0, cdopen = 0, size, tot_size = 0; >+ int block_size = 0, cdopen = 0, trackopen=0, size, tot_size = 0; > struct cdr_track track; > struct stat stat; > >@@ -110,14 +110,18 @@ > } > if (!strcmp(argv[arg], "msinfo")) { > struct ioc_read_toc_single_entry entry; >+ struct ioc_toc_header h; > >+ if (ioctl(fd, CDIOREADTOCHEADER, &h) < 0) >+ err(EX_IOERR, "ioctl(CDIOREADTOCHEADER)"); > bzero(&entry, sizeof(struct ioc_read_toc_single_entry)); > entry.address_format = CD_LBA_FORMAT; >+ entry.track = h.ending_track; > 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); >+ fprintf(stderr, "%d, %d\n", ntohl(entry.entry.addr.lba), addr); > break; > } > if (!strcmp(argv[arg], "blank")) { >@@ -161,32 +165,39 @@ > if ((file = open(argv[arg], O_RDONLY, 0)) < 0) > err(EX_NOINPUT, "open(%s)", argv[arg]); > >- if (!cdopen) { >- if (ioctl(fd, CDRIOCOPENDISK) < 0) >- err(EX_IOERR, "ioctl(CDRIOCOPENDISK)"); >- cdopen = 1; >- } >- if (ioctl(fd, CDRIOCOPENTRACK, &track) < 0) >- err(EX_IOERR, "ioctl(CDRIOCOPENTRACK)"); >- >- if (ioctl(fd, CDRIOCNEXTWRITEABLEADDR, &addr) < 0) >- err(EX_IOERR, "ioctl(CDRIOCNEXTWRITEABLEADDR)"); >+ trackopen=0; > > if (fstat(file, &stat) < 0) > err(EX_IOERR, "fstat(%s)", argv[arg]); > filesize = stat.st_size / 1024; >- if (!quiet) { >- fprintf(stderr, "next writeable LBA %d\n", addr); >- fprintf(stderr, "writing from file %s size %d KB\n", >- argv[arg], filesize); >- } >- lseek(fd, addr * block_size, SEEK_SET); >+ > size = 0; > if (filesize == 0) > filesize++; /* cheat, avoid divide by zero */ > > while ((count = read(file, buf, block_size * BLOCKS)) > 0) { > int res; >+ >+ if (!cdopen) { >+ if (ioctl(fd, CDRIOCOPENDISK) < 0) >+ err(EX_IOERR, "ioctl(CDRIOCOPENDISK)"); >+ cdopen = 1; >+ } >+ >+ if (!trackopen) { >+ if (ioctl(fd, CDRIOCOPENTRACK, &track) < 0) >+ err(EX_IOERR, "ioctl(CDRIOCOPENTRACK)"); >+ >+ if (ioctl(fd, CDRIOCNEXTWRITEABLEADDR, &addr) < 0) >+ err(EX_IOERR, "ioctl(CDRIOCNEXTWRITEABLEADDR)"); >+ if (!quiet) { >+ fprintf(stderr, "next writeable LBA %d\n", addr); >+ fprintf(stderr, "writing from file %s size %d KB\n", >+ argv[arg], filesize); >+ } >+ lseek(fd, addr * block_size, SEEK_SET); >+ trackopen=1; >+ }; > if (count % block_size) { > /* pad file to % block_size */ > bzero(&buf[count], block_size * BLOCKS - count);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 19789
: 9722