~mdw
/
dvdrip
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
checkimg: Don't complain about every mismatch.
[dvdrip]
/
chkdvdimg.c
diff --git
a/chkdvdimg.c
b/chkdvdimg.c
index
0fbb48e
..
623c50f
100644
(file)
--- a/
chkdvdimg.c
+++ b/
chkdvdimg.c
@@
-96,23
+96,23
@@
static int all_zero_p(const unsigned char *p, size_t sz)
static void check_img(const char *file)
{
int fd = -1;
static void check_img(const char *file)
{
int fd = -1;
- struct stat st;
unsigned char b[SECTORSZ], bb[SECTORSZ];
unsigned char b[SECTORSZ], bb[SECTORSZ];
+ off_t volsz;
+ int blksz;
secaddr end;
unsigned i, j;
fd = open(file, (flags&F_FIX) ? O_RDWR : O_RDONLY);
if (fd < 0)
{ gripe_syserr(2, errno, "failed to open `%s'", file); goto end; }
secaddr end;
unsigned i, j;
fd = open(file, (flags&F_FIX) ? O_RDWR : O_RDONLY);
if (fd < 0)
{ gripe_syserr(2, errno, "failed to open `%s'", file); goto end; }
- if (fstat(fd, &st)) {
- gripe_syserr(2, errno, "failed to retrieve file status for `%s'", file);
- goto end;
- }
- if (st.st_size%SECTORSZ) {
+ blksz = SECTORSZ; volsz = device_size(fd, file, &blksz);
+ if (SECTORSZ != 2048)
+ { gripe(2, "device sector size %d /= 2048", blksz); goto end; }
+ if (volsz%SECTORSZ) {
gripe(2, "bad length for `%s' -- not whole number of sectors", file);
goto end;
}
gripe(2, "bad length for `%s' -- not whole number of sectors", file);
goto end;
}
- end =
st.st_size
/SECTORSZ;
+ end =
volsz
/SECTORSZ;
if (carefully_read(fd, 256*SECTORSZ, b, SECTORSZ, file) ||
check_anchor_header(b, 256, CAHF_GRIPE | CAHF_FULL, file))
if (carefully_read(fd, 256*SECTORSZ, b, SECTORSZ, file) ||
check_anchor_header(b, 256, CAHF_GRIPE | CAHF_FULL, file))
@@
-124,7
+124,7
@@
static void check_img(const char *file)
if (bb[0] || !all_zero_p(bb, SECTORSZ)) goto nonzero;
}
gripe(1, "too many trailing zero sectors: "
if (bb[0] || !all_zero_p(bb, SECTORSZ)) goto nonzero;
}
gripe(1, "too many trailing zero sectors: "
- "couldn't find backup anchor descriptor
"
);
+ "couldn't find backup anchor descriptor
in `%s'", file
);
goto end;
nonzero:
j = i;
goto end;
nonzero:
j = i;