static int addfile(scm **V, int C, const char *name) { static int n = 0; static int c = 0; scm *s; if ((s = scm_ifile(name))) { if ((n == 0 && c == 0) || (n == scm_get_n(s) && c == scm_get_c(s))) { n = scm_get_n(s); c = scm_get_c(s); if ((scm_scan_catalog(s))) { V[C] = s; return ++C; } } else apperr("SCM TIFF '%s' has size %d chan %d." " Expected size %d chan %d.", name, scm_get_n(s), scm_get_c(s), n, c); scm_close(s); } return C; }
int query(int argc, char **argv) { long long total = 0; // Iterate over all input file arguments. for (int argi = 0; argi < argc; argi++) { long long size = 0; long long length = 0; long long leaves = 0; scm *s; if ((s = scm_ifile(argv[argi]))) { if (scm_read_catalog(s)) { length = scm_get_length(s); for (long long i = 0; i < length; i++) { if (isleaf(s, i)) { leaves += 1; size += (long long) s->n * (long long) s->n * (long long) s->c * (long long) s->b / 8; } } } scm_close(s); printf("%s pixels: %d channels: %d bits: %d pages: %lld leaves: %lld bytes: %lld\n", argv[argi], s->n, s->c, s->b, length, leaves, size); } total += size; } printf("total bytes: %lld\n", total); return 0; }