use exact type
This commit is contained in:
parent
c9b1c760b1
commit
e2291b22a2
2 changed files with 18 additions and 19 deletions
20
crc32.c
20
crc32.c
|
@ -1,9 +1,9 @@
|
||||||
enum { CRC_TABLE_SIZE = 0x100 };
|
enum { CRC_TABLE_SIZE = 0x100 };
|
||||||
|
|
||||||
ulong
|
uint32_t
|
||||||
crc_reflect(ulong input)
|
crc_reflect(uint32_t input)
|
||||||
{
|
{
|
||||||
ulong reflected = 0;
|
uint32_t reflected = 0;
|
||||||
for (int i = 0; i < 4 * 8; i++) {
|
for (int i = 0; i < 4 * 8; i++) {
|
||||||
reflected <<= 1;
|
reflected <<= 1;
|
||||||
reflected |= input & 1;
|
reflected |= input & 1;
|
||||||
|
@ -13,10 +13,10 @@ crc_reflect(ulong input)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
crc_fill_table(ulong *table, int big, ulong polynomial)
|
crc_fill_table(uint32_t *table, int big, uint32_t polynomial)
|
||||||
{
|
{
|
||||||
ulong lsb = (big) ? 1 << 31 : 1; /* least significant bit */
|
uint32_t lsb = (big) ? 1 << 31 : 1; /* least significant bit */
|
||||||
ulong poly = (big) ? polynomial : crc_reflect(polynomial);
|
uint32_t poly = (big) ? polynomial : crc_reflect(polynomial);
|
||||||
|
|
||||||
for (int c = 0; c < CRC_TABLE_SIZE; c++, table++) {
|
for (int c = 0; c < CRC_TABLE_SIZE; c++, table++) {
|
||||||
*table = (big) ? c << 24 : c;
|
*table = (big) ? c << 24 : c;
|
||||||
|
@ -33,15 +33,15 @@ crc_fill_table(ulong *table, int big, ulong polynomial)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
crc_be_cycle(ulong *table, ulong *remainder, char c)
|
crc_be_cycle(uint32_t *table, uint32_t *remainder, char c)
|
||||||
{
|
{
|
||||||
ulong byte = table[(((*remainder) >> 24) ^ c) & 0xff];
|
uint32_t byte = table[(((*remainder) >> 24) ^ c) & 0xff];
|
||||||
*remainder = (((*remainder) << 8) ^ byte) & 0xFFFFFFFF;
|
*remainder = (((*remainder) << 8) ^ byte) & 0xFFFFFFFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
crc_le_cycle(ulong *table, ulong *remainder, char c)
|
crc_le_cycle(uint32_t *table, uint32_t *remainder, char c)
|
||||||
{
|
{
|
||||||
ulong byte = table[((*remainder) ^ c) & 0xFF];
|
uint32_t byte = table[((*remainder) ^ c) & 0xFF];
|
||||||
*remainder = ((*remainder) >> 8) ^ byte;
|
*remainder = ((*remainder) >> 8) ^ byte;
|
||||||
}
|
}
|
||||||
|
|
17
main.c
17
main.c
|
@ -1,7 +1,6 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <stdint.h>
|
||||||
typedef unsigned long ulong;
|
|
||||||
|
|
||||||
#include "crc32.c"
|
#include "crc32.c"
|
||||||
#include "args.c"
|
#include "args.c"
|
||||||
|
@ -19,9 +18,9 @@ struct string_node_s {
|
||||||
|
|
||||||
static string_node *input_node = NULL;
|
static string_node *input_node = NULL;
|
||||||
|
|
||||||
static ulong starting = 0xFFFFFFFF;
|
static uint32_t starting = 0xFFFFFFFF;
|
||||||
static char big_endian = 0;
|
static char big_endian = 0;
|
||||||
static ulong polynomial = 0x04C11DB7;
|
static uint32_t polynomial = 0x04C11DB7;
|
||||||
static char print_binary = 0;
|
static char print_binary = 0;
|
||||||
static char xor_output = 1;
|
static char xor_output = 1;
|
||||||
static char reflect_output = 0;
|
static char reflect_output = 0;
|
||||||
|
@ -118,13 +117,13 @@ open_stream(char *filename)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static ulong
|
static uint32_t
|
||||||
cycle_file(FILE *stream)
|
cycle_file(FILE *stream)
|
||||||
{
|
{
|
||||||
ulong remainder = starting;
|
uint32_t remainder = starting;
|
||||||
void (*cycle)(ulong*, ulong*, char) =
|
void (*cycle)(uint32_t*, uint32_t*, char) =
|
||||||
(big_endian) ? crc_be_cycle : crc_le_cycle;
|
(big_endian) ? crc_be_cycle : crc_le_cycle;
|
||||||
ulong table[CRC_TABLE_SIZE];
|
uint32_t table[CRC_TABLE_SIZE];
|
||||||
|
|
||||||
crc_fill_table(table, big_endian, polynomial);
|
crc_fill_table(table, big_endian, polynomial);
|
||||||
do {
|
do {
|
||||||
|
@ -146,7 +145,7 @@ cycle_file(FILE *stream)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
print_crc(ulong remainder)
|
print_crc(uint32_t remainder)
|
||||||
{
|
{
|
||||||
if (print_binary)
|
if (print_binary)
|
||||||
fwrite(&remainder, sizeof(remainder), 1, stdout);
|
fwrite(&remainder, sizeof(remainder), 1, stdout);
|
||||||
|
|
Loading…
Add table
Reference in a new issue