Lines 88-94
Link Here
|
88 |
break; |
88 |
break; |
89 |
|
89 |
|
90 |
case 'v': |
90 |
case 'v': |
91 |
verbose = 1; |
91 |
verbose++; |
92 |
break; |
92 |
break; |
93 |
|
93 |
|
94 |
default: |
94 |
default: |
Lines 147-155
Link Here
|
147 |
} |
147 |
} |
148 |
hdr.nblocks = sb.st_size / hdr.blksz; |
148 |
hdr.nblocks = sb.st_size / hdr.blksz; |
149 |
if ((sb.st_size % hdr.blksz) != 0) { |
149 |
if ((sb.st_size % hdr.blksz) != 0) { |
150 |
if (verbose != 0) |
150 |
if (verbose >= 0) /* always warn */ |
151 |
fprintf(stderr, "file size is not multiple " |
151 |
fprintf(stderr, "file size is not multiple " |
152 |
"of %d, padding data\n", hdr.blksz); |
152 |
"of %d, padding data\n", hdr.blksz); |
|
|
153 |
fprintf(stderr, "Warning: a UFS filesystem label may not be visible via geom_label\n"); |
153 |
hdr.nblocks++; |
154 |
hdr.nblocks++; |
154 |
} |
155 |
} |
155 |
toc = safe_malloc((hdr.nblocks + 1) * sizeof(*toc)); |
156 |
toc = safe_malloc((hdr.nblocks + 1) * sizeof(*toc)); |
Lines 172-178
Link Here
|
172 |
/* Reserve space for header */ |
173 |
/* Reserve space for header */ |
173 |
lseek(fdw, offset, SEEK_SET); |
174 |
lseek(fdw, offset, SEEK_SET); |
174 |
|
175 |
|
175 |
if (verbose != 0) |
176 |
if (verbose > 0) |
176 |
fprintf(stderr, "data size %ju bytes, number of clusters " |
177 |
fprintf(stderr, "data size %ju bytes, number of clusters " |
177 |
"%u, index length %zu bytes\n", sb.st_size, |
178 |
"%u, index length %zu bytes\n", sb.st_size, |
178 |
hdr.nblocks, iov[1].iov_len); |
179 |
hdr.nblocks, iov[1].iov_len); |
Lines 187-199
Link Here
|
187 |
"failed"); |
188 |
"failed"); |
188 |
/* Not reached */ |
189 |
/* Not reached */ |
189 |
} |
190 |
} |
190 |
if (verbose != 0) |
191 |
if (verbose > 1) |
191 |
fprintf(stderr, "cluster #%d, in %u bytes, " |
192 |
fprintf(stderr, "cluster #%d, in %u bytes, " |
192 |
"out %lu bytes\n", i, hdr.blksz, destlen); |
193 |
"out %lu bytes\n", i, hdr.blksz, destlen); |
193 |
} else { |
194 |
} else { |
194 |
destlen = DEV_BSIZE - (offset % DEV_BSIZE); |
195 |
destlen = DEV_BSIZE - (offset % DEV_BSIZE); |
195 |
memset(obuf, 0, destlen); |
196 |
memset(obuf, 0, destlen); |
196 |
if (verbose != 0) |
197 |
if (verbose > 0) |
197 |
fprintf(stderr, "padding data with %lu bytes so " |
198 |
fprintf(stderr, "padding data with %lu bytes so " |
198 |
"that file size is multiple of %d\n", destlen, |
199 |
"that file size is multiple of %d\n", destlen, |
199 |
DEV_BSIZE); |
200 |
DEV_BSIZE); |
Lines 207-213
Link Here
|
207 |
} |
208 |
} |
208 |
close(fdr); |
209 |
close(fdr); |
209 |
|
210 |
|
210 |
if (verbose != 0) |
211 |
if (verbose > 0) |
211 |
fprintf(stderr, "compressed data to %ju bytes, saved %lld " |
212 |
fprintf(stderr, "compressed data to %ju bytes, saved %lld " |
212 |
"bytes, %.2f%% decrease.\n", offset, (long long)(sb.st_size - offset), |
213 |
"bytes, %.2f%% decrease.\n", offset, (long long)(sb.st_size - offset), |
213 |
100.0 * (long long)(sb.st_size - offset) / (float)sb.st_size); |
214 |
100.0 * (long long)(sb.st_size - offset) / (float)sb.st_size); |