1 //----------------------------------------------------------------------
2 // This software is part of the OpenBeOS distribution and is covered
5 // Copyright (c) 2003 Tyler Dauwalder, tyler@dauwalder.net
6 //---------------------------------------------------------------------
8 /*! \file crc_table.cpp
10 Standalone program to generate the CRC table used for calculating
11 UDF tag id CRC values.
13 This code based off of crc code in UDF-2.50 specs, as permitted.
14 See UDF-2.50 6.5 for more information.
16 Reversed version by Jérôme Duval
20 #include <sys/types.h>
23 main(int argc
, char *argv
[]) {
27 fprintf(stderr
, "USAGE: crc_table <octal polynomial=120001 for ext2>\n");
31 sscanf(argv
[1], "%lo", &poly
);
32 if (poly
& 0xffff0000) {
33 fprintf(stderr
, "ERROR: polynomial is too large, sucka.\n");
37 printf("//! CRC 0%o table, as generated by crc_table.cpp\n", poly
);
38 printf("static uint16 crc_table[256] = { \n");
39 for (int n
= 0; n
< 256; n
++) {
43 for (int i
= 0; i
< 8; i
++) {
45 crc
= (crc
>> 1) ^ poly
;
49 printf("0x%04x%s ", crc
, (n
!= 255 ? "," : ""));