Changeset 4795:cf3e4ecde1f5 in roaraudio for libroar
- Timestamp:
- 03/14/11 15:47:34 (13 years ago)
- Branch:
- default
- Phase:
- public
- Location:
- libroar
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
libroar/crc.c
r4708 r4795 39 39 #define CRC24_INIT 0x00B704CEL 40 40 41 #define ADLER32_BASE 65521L 42 #define ADLER32_INIT 1L 43 41 44 uint32_t roar_crc24_add(uint32_t state, const void * data, size_t len) { 42 45 const unsigned char * p = data; … … 57 60 return state & 0x00FFFFFFL; 58 61 } 62 63 uint32_t roar_adler32_add(uint32_t state, const void * data, size_t len) { 64 const unsigned char * p = data; 65 uint32_t s1 = state & 0xFFFFL; 66 uint32_t s2 = (state >> 16) & 0xFFFFL; 67 size_t n; 68 69 if ( data == NULL ) 70 return ADLER32_INIT; 71 72 for (n = 0; n < len; n++) { 73 s1 = (s1 + p[n]) % ADLER32_BASE; 74 s2 = (s2 + s1 ) % ADLER32_BASE; 75 } 76 77 return (s2 << 16) + s1; 78 } 79 59 80 60 81 int roar_hash_crc24_init(void * state) { … … 93 114 } 94 115 116 117 int roar_hash_adler32_init(void * state) { 118 uint32_t * self = state; 119 120 *self = roar_adler32_init(); 121 122 return 0; 123 } 124 125 int roar_hash_adler32_digest(void * state, void * digest, size_t * len) { 126 uint32_t * self = state; 127 unsigned char * out = digest; 128 register uint32_t crc; 129 130 if ( *len < 4 ) 131 return -1; 132 133 *len = 4; 134 135 crc = *self; 136 137 out[0] = ((crc & 0xFF000000) >> 24) & 0xFF; 138 out[1] = ((crc & 0x00FF0000) >> 16) & 0xFF; 139 out[2] = ((crc & 0x0000FF00) >> 8) & 0xFF; 140 out[3] = ((crc & 0x000000FF) >> 0) & 0xFF; 141 142 return 0; 143 } 144 145 int roar_hash_adler32_proc(void * state, const void * data, size_t len) { 146 uint32_t * self = state; 147 148 *self = roar_adler32_add(*self, data, len); 149 150 return 0; 151 } 152 95 153 //ll -
libroar/hash.c
r4708 r4795 46 46 47 47 static const struct hashes { 48 const intid;49 const char *name;50 const ssize_t dlen;48 const uint_least32_t id; 49 const char * name; 50 const ssize_t dlen; 51 51 } _libroar_hashes[] = { 52 52 /* … … 88 88 {ROAR_HT_ISBN10, "ISBN10", 8 }, 89 89 {ROAR_HT_ISBN13, "ISBN13", 8 }, 90 {ROAR_HT_ADLER32, "ADLER32", 4 }, 90 91 {-1, NULL} 91 92 }; … … 102 103 roar_hash_crc24_digest, NULL, roar_hash_crc24_proc 103 104 }, 105 {ROAR_HT_ADLER32, sizeof(uint32_t), -1, 106 roar_hash_adler32_init, NULL, 107 roar_hash_adler32_digest, NULL, roar_hash_adler32_proc 108 }, 104 109 {-1, -1, -1, NULL, NULL, NULL, NULL, NULL} 105 110 };
Note: See TracChangeset
for help on using the changeset viewer.