3 * Copyright (c) 2013 John Cunningham Bowler
5 * Last changed in libpng 1.6.0 [February 14, 2013]
7 * This code is released under the libpng license.
8 * For conditions of distribution and use, see the disclaimer
11 * Generate crc32 and adler32 checksums of the given input files, used to
12 * generate check-codes for use when matching ICC profiles within libpng.
19 read_one_file(FILE *ip
, const char *name
)
22 uLong a32
= adler32(0, NULL
, 0);
23 uLong c32
= crc32(0, NULL
, 0);
35 if (length
< sizeof header
)
39 a32
= adler32(a32
, &b
, 1);
40 c32
= crc32(c32
, &b
, 1);
47 printf("PNG_ICC_CHECKSUM(0x%8.8lx, 0x%8.8lx,\n PNG_MD5("
48 "0x%2.2x%2.2x%2.2x%2.2x, 0x%2.2x%2.2x%2.2x%2.2x, 0x%2.2x%2.2x%2.2x%2.2x,"
49 " 0x%2.2x%2.2x%2.2x%2.2x), %d,\n"
50 " \"%4.4d/%2.2d/%2.2d %2.2d:%2.2d:%2.2d\", %lu, \"%s\")\n",
51 (unsigned long)a32
, (unsigned long)c32
,
52 header
[84], header
[85], header
[86], header
[87],
53 header
[88], header
[89], header
[90], header
[91],
54 header
[92], header
[93], header
[94], header
[95],
55 header
[96], header
[97], header
[98], header
[99],
56 # define u16(x) (header[x] * 256 + header[x+1])
57 # define u32(x) (u16(x) * 65536 + u16(x+2))
58 u32(64), u16(24), u16(26), u16(28), u16(30), u16(32), u16(34),
59 (unsigned long)length
, name
);
64 int main(int argc
, char **argv
)
68 printf("/* adler32, crc32, MD5[16], intent, date, length, file-name */\n");
74 for (i
=1; i
<argc
; ++i
)
76 FILE *ip
= fopen(argv
[i
], "rb");
78 if (ip
== NULL
|| !read_one_file(ip
, argv
[i
]))
82 fprintf(stderr
, "%s: read error\n", argv
[i
]);
83 printf("/* ERROR: %s */\n", argv
[i
]);
92 if (!read_one_file(stdin
, "-"))
96 fprintf(stderr
, "stdin: read error\n");
97 printf("/* ERROR: stdin */\n");