CHG: Updated Reveng from 1.3.0 -> 1.3.1

It now allows of values to be entered as hex i.e. 0x00
This commit is contained in:
iceman1001 2016-02-11 18:28:34 +01:00
commit fe144f121d
4 changed files with 130 additions and 118 deletions

View file

@ -444,7 +444,7 @@ ippx:
if(uflags & C_RESULT) { if(uflags & C_RESULT) {
for(qptr = apolys; qptr < pptr; ++qptr) for(qptr = apolys; qptr < pptr; ++qptr)
pfree(qptr); pfree(qptr);
//return 1; return 1;
//exit(EXIT_SUCCESS); //exit(EXIT_SUCCESS);
} }
if(!(model.flags & P_REFIN) != !(model.flags & P_REFOUT)){ if(!(model.flags & P_REFIN) != !(model.flags & P_REFOUT)){

View file

@ -1,5 +1,5 @@
/* model.c /* model.c
* Greg Cook, 9/Apr/2015 * Greg Cook, 29/Jul/2015
*/ */
/* CRC RevEng, an arbitrary-precision CRC calculator and algorithm finder /* CRC RevEng, an arbitrary-precision CRC calculator and algorithm finder
@ -21,7 +21,8 @@
* along with CRC RevEng. If not, see <http://www.gnu.org/licenses/>. * along with CRC RevEng. If not, see <http://www.gnu.org/licenses/>.
*/ */
/* 2014-01-14: added CRC-8/DVB-S2 /* 2015-07-29: eliminated struct malias.isprimry
* 2014-01-14: added CRC-8/DVB-S2
* 2014-01-11: corrected CRC-40/GSM, added alias CRC-8/AES * 2014-01-11: corrected CRC-40/GSM, added alias CRC-8/AES
* 2013-10-14: added CRC-13/BBC and six cdma2000 algorithms * 2013-10-14: added CRC-13/BBC and six cdma2000 algorithms
* 2013-06-11: ensure BMP_BIT is an integer constant to compile presets * 2013-06-11: ensure BMP_BIT is an integer constant to compile presets
@ -67,8 +68,7 @@ struct mpreset {
struct malias { struct malias {
const char *name; const char *name;
const struct mpreset *model; const struct mpreset *const model;
const int isprimry;
}; };
#ifdef PRESETS #ifdef PRESETS
@ -404,110 +404,110 @@ static const struct mpreset models[] = {
/* List of names with pointers to models, pre-sorted for use with bsearch() */ /* List of names with pointers to models, pre-sorted for use with bsearch() */
static const struct malias aliases[] = { static const struct malias aliases[] = {
{"ARC", models+47, 1}, /* 0 */ {"ARC", models+47}, /* 0 */
{"B-CRC-32", models+ 4, 0}, /* 1 */ {"B-CRC-32", models+ 4}, /* 1 */
{"CKSUM", models+ 2, 0}, /* 2 */ {"CKSUM", models+ 2}, /* 2 */
{"CRC-10", models+58, 1}, /* 3 */ {"CRC-10", models+58}, /* 3 */
{"CRC-10/CDMA2000", models+71, 1}, /* 4 */ {"CRC-10/CDMA2000", models+71}, /* 4 */
{"CRC-11", models+45, 1}, /* 5 */ {"CRC-11", models+45}, /* 5 */
{"CRC-12/3GPP", models+53, 1}, /* 6 */ {"CRC-12/3GPP", models+53}, /* 6 */
{"CRC-12/CDMA2000", models+70, 1}, /* 7 */ {"CRC-12/CDMA2000", models+70}, /* 7 */
{"CRC-12/DECT", models+52, 1}, /* 8 */ {"CRC-12/DECT", models+52}, /* 8 */
{"CRC-13/BBC", models+69, 1}, /* 9 */ {"CRC-13/BBC", models+69}, /* 9 */
{"CRC-14/DARC", models+30, 1}, /* 10 */ {"CRC-14/DARC", models+30}, /* 10 */
{"CRC-15", models+56, 1}, /* 11 */ {"CRC-15", models+56}, /* 11 */
{"CRC-15/MPT1327", models+67, 1}, /* 12 */ {"CRC-15/MPT1327", models+67}, /* 12 */
{"CRC-16", models+47, 0}, /* 13 */ {"CRC-16", models+47}, /* 13 */
{"CRC-16/ACORN", models+15, 0}, /* 14 */ {"CRC-16/ACORN", models+15}, /* 14 */
{"CRC-16/ARC", models+47, 0}, /* 15 */ {"CRC-16/ARC", models+47}, /* 15 */
{"CRC-16/AUG-CCITT", models+17, 1}, /* 16 */ {"CRC-16/AUG-CCITT", models+17}, /* 16 */
{"CRC-16/BUYPASS", models+46, 1}, /* 17 */ {"CRC-16/BUYPASS", models+46}, /* 17 */
{"CRC-16/CCITT", models+16, 0}, /* 18 */ {"CRC-16/CCITT", models+16}, /* 18 */
{"CRC-16/CCITT-FALSE", models+21, 1}, /* 19 */ {"CRC-16/CCITT-FALSE", models+21}, /* 19 */
{"CRC-16/CCITT-TRUE", models+16, 0}, /* 20 */ {"CRC-16/CCITT-TRUE", models+16}, /* 20 */
{"CRC-16/CDMA2000", models+66, 1}, /* 21 */ {"CRC-16/CDMA2000", models+66}, /* 21 */
{"CRC-16/DARC", models+22, 0}, /* 22 */ {"CRC-16/DARC", models+22}, /* 22 */
{"CRC-16/DDS-110", models+49, 1}, /* 23 */ {"CRC-16/DDS-110", models+49}, /* 23 */
{"CRC-16/DECT-R", models+ 8, 1}, /* 24 */ {"CRC-16/DECT-R", models+ 8}, /* 24 */
{"CRC-16/DECT-X", models+ 7, 1}, /* 25 */ {"CRC-16/DECT-X", models+ 7}, /* 25 */
{"CRC-16/DNP", models+36, 1}, /* 26 */ {"CRC-16/DNP", models+36}, /* 26 */
{"CRC-16/EN-13757", models+35, 1}, /* 27 */ {"CRC-16/EN-13757", models+35}, /* 27 */
{"CRC-16/EPC", models+22, 0}, /* 28 */ {"CRC-16/EPC", models+22}, /* 28 */
{"CRC-16/GENIBUS", models+22, 1}, /* 29 */ {"CRC-16/GENIBUS", models+22}, /* 29 */
{"CRC-16/I-CODE", models+22, 0}, /* 30 */ {"CRC-16/I-CODE", models+22}, /* 30 */
{"CRC-16/IBM-SDLC", models+24, 0}, /* 31 */ {"CRC-16/IBM-SDLC", models+24}, /* 31 */
{"CRC-16/ISO-HDLC", models+24, 0}, /* 32 */ {"CRC-16/ISO-HDLC", models+24}, /* 32 */
{"CRC-16/LHA", models+47, 0}, /* 33 */ {"CRC-16/LHA", models+47}, /* 33 */
{"CRC-16/MAXIM", models+48, 1}, /* 34 */ {"CRC-16/MAXIM", models+48}, /* 34 */
{"CRC-16/MCRF4XX", models+23, 1}, /* 35 */ {"CRC-16/MCRF4XX", models+23}, /* 35 */
{"CRC-16/RIELLO", models+19, 1}, /* 36 */ {"CRC-16/RIELLO", models+19}, /* 36 */
{"CRC-16/SPI-FUJITSU", models+17, 0}, /* 37 */ {"CRC-16/SPI-FUJITSU", models+17}, /* 37 */
{"CRC-16/T10-DIF", models+57, 1}, /* 38 */ {"CRC-16/T10-DIF", models+57}, /* 38 */
{"CRC-16/TELEDISK", models+63, 1}, /* 39 */ {"CRC-16/TELEDISK", models+63}, /* 39 */
{"CRC-16/TMS37157", models+18, 1}, /* 40 */ {"CRC-16/TMS37157", models+18}, /* 40 */
{"CRC-16/USB", models+51, 1}, /* 41 */ {"CRC-16/USB", models+51}, /* 41 */
{"CRC-16/VERIFONE", models+46, 0}, /* 42 */ {"CRC-16/VERIFONE", models+46}, /* 42 */
{"CRC-24", models+55, 1}, /* 43 */ {"CRC-24", models+55}, /* 43 */
{"CRC-24/FLEXRAY-A", models+42, 1}, /* 44 */ {"CRC-24/FLEXRAY-A", models+42}, /* 44 */
{"CRC-24/FLEXRAY-B", models+41, 1}, /* 45 */ {"CRC-24/FLEXRAY-B", models+41}, /* 45 */
{"CRC-24/OPENPGP", models+55, 0}, /* 46 */ {"CRC-24/OPENPGP", models+55}, /* 46 */
{"CRC-3/ROHC", models+43, 1}, /* 47 */ {"CRC-3/ROHC", models+43}, /* 47 */
{"CRC-31/PHILIPS", models+12, 1}, /* 48 */ {"CRC-31/PHILIPS", models+12}, /* 48 */
{"CRC-32", models+ 6, 1}, /* 49 */ {"CRC-32", models+ 6}, /* 49 */
{"CRC-32/AAL5", models+ 4, 0}, /* 50 */ {"CRC-32/AAL5", models+ 4}, /* 50 */
{"CRC-32/ADCCP", models+ 6, 0}, /* 51 */ {"CRC-32/ADCCP", models+ 6}, /* 51 */
{"CRC-32/BZIP2", models+ 4, 1}, /* 52 */ {"CRC-32/BZIP2", models+ 4}, /* 52 */
{"CRC-32/CASTAGNOLI", models+29, 0}, /* 53 */ {"CRC-32/CASTAGNOLI", models+29}, /* 53 */
{"CRC-32/DECT-B", models+ 4, 0}, /* 54 */ {"CRC-32/DECT-B", models+ 4}, /* 54 */
{"CRC-32/ISCSI", models+29, 0}, /* 55 */ {"CRC-32/ISCSI", models+29}, /* 55 */
{"CRC-32/MPEG-2", models+ 3, 1}, /* 56 */ {"CRC-32/MPEG-2", models+ 3}, /* 56 */
{"CRC-32/POSIX", models+ 2, 1}, /* 57 */ {"CRC-32/POSIX", models+ 2}, /* 57 */
{"CRC-32C", models+29, 1}, /* 58 */ {"CRC-32C", models+29}, /* 58 */
{"CRC-32D", models+65, 1}, /* 59 */ {"CRC-32D", models+65}, /* 59 */
{"CRC-32Q", models+54, 1}, /* 60 */ {"CRC-32Q", models+54}, /* 60 */
{"CRC-4/ITU", models+32, 1}, /* 61 */ {"CRC-4/ITU", models+32}, /* 61 */
{"CRC-40/GSM", models+ 1, 1}, /* 62 */ {"CRC-40/GSM", models+ 1}, /* 62 */
{"CRC-5/EPC", models+40, 1}, /* 63 */ {"CRC-5/EPC", models+40}, /* 63 */
{"CRC-5/ITU", models+64, 1}, /* 64 */ {"CRC-5/ITU", models+64}, /* 64 */
{"CRC-5/USB", models+31, 1}, /* 65 */ {"CRC-5/USB", models+31}, /* 65 */
{"CRC-6/CDMA2000-A", models+61, 1}, /* 66 */ {"CRC-6/CDMA2000-A", models+61}, /* 66 */
{"CRC-6/CDMA2000-B", models+26, 1}, /* 67 */ {"CRC-6/CDMA2000-B", models+26}, /* 67 */
{"CRC-6/DARC", models+44, 1}, /* 68 */ {"CRC-6/DARC", models+44}, /* 68 */
{"CRC-6/ITU", models+13, 1}, /* 69 */ {"CRC-6/ITU", models+13}, /* 69 */
{"CRC-64", models+37, 1}, /* 70 */ {"CRC-64", models+37}, /* 70 */
{"CRC-64/WE", models+38, 1}, /* 71 */ {"CRC-64/WE", models+38}, /* 71 */
{"CRC-64/XZ", models+39, 1}, /* 72 */ {"CRC-64/XZ", models+39}, /* 72 */
{"CRC-7", models+25, 1}, /* 73 */ {"CRC-7", models+25}, /* 73 */
{"CRC-7/ROHC", models+62, 1}, /* 74 */ {"CRC-7/ROHC", models+62}, /* 74 */
{"CRC-8", models+ 9, 1}, /* 75 */ {"CRC-8", models+ 9}, /* 75 */
{"CRC-8/AES", models+28, 0}, /* 76 */ {"CRC-8/AES", models+28}, /* 76 */
{"CRC-8/CDMA2000", models+60, 1}, /* 77 */ {"CRC-8/CDMA2000", models+60}, /* 77 */
{"CRC-8/DARC", models+34, 1}, /* 78 */ {"CRC-8/DARC", models+34}, /* 78 */
{"CRC-8/DVB-S2", models+68, 1}, /* 79 */ {"CRC-8/DVB-S2", models+68}, /* 79 */
{"CRC-8/EBU", models+28, 1}, /* 80 */ {"CRC-8/EBU", models+28}, /* 80 */
{"CRC-8/I-CODE", models+27, 1}, /* 81 */ {"CRC-8/I-CODE", models+27}, /* 81 */
{"CRC-8/ITU", models+10, 1}, /* 82 */ {"CRC-8/ITU", models+10}, /* 82 */
{"CRC-8/MAXIM", models+33, 1}, /* 83 */ {"CRC-8/MAXIM", models+33}, /* 83 */
{"CRC-8/ROHC", models+11, 1}, /* 84 */ {"CRC-8/ROHC", models+11}, /* 84 */
{"CRC-8/WCDMA", models+59, 1}, /* 85 */ {"CRC-8/WCDMA", models+59}, /* 85 */
{"CRC-82/DARC", models+14, 1}, /* 86 */ {"CRC-82/DARC", models+14}, /* 86 */
{"CRC-A", models+20, 1}, /* 87 */ {"CRC-A", models+20}, /* 87 */
{"CRC-B", models+24, 0}, /* 88 */ {"CRC-B", models+24}, /* 88 */
{"CRC-CCITT", models+16, 0}, /* 89 */ {"CRC-CCITT", models+16}, /* 89 */
{"CRC-IBM", models+47, 0}, /* 90 */ {"CRC-IBM", models+47}, /* 90 */
{"DOW-CRC", models+33, 0}, /* 91 */ {"DOW-CRC", models+33}, /* 91 */
{"JAMCRC", models+ 5, 1}, /* 92 */ {"JAMCRC", models+ 5}, /* 92 */
{"KERMIT", models+16, 1}, /* 93 */ {"KERMIT", models+16}, /* 93 */
{"MODBUS", models+50, 1}, /* 94 */ {"MODBUS", models+50}, /* 94 */
{"PKZIP", models+ 6, 0}, /* 95 */ {"PKZIP", models+ 6}, /* 95 */
{"R-CRC-16", models+ 8, 0}, /* 96 */ {"R-CRC-16", models+ 8}, /* 96 */
{"X-25", models+24, 1}, /* 97 */ {"X-25", models+24}, /* 97 */
{"X-CRC-12", models+52, 0}, /* 98 */ {"X-CRC-12", models+52}, /* 98 */
{"X-CRC-16", models+ 7, 0}, /* 99 */ {"X-CRC-16", models+ 7}, /* 99 */
{"XFER", models+ 0, 1}, /* 100 */ {"XFER", models+ 0}, /* 100 */
{"XMODEM", models+15, 1}, /* 101 */ {"XMODEM", models+15}, /* 101 */
{"ZMODEM", models+15, 0}, /* 102 */ {"ZMODEM", models+15}, /* 102 */
{NULL, NULL, 0}, /* terminating entry */ {NULL, NULL }, /* terminating entry */
}; };
# define NALIASES 103 # define NALIASES 103
@ -520,7 +520,7 @@ static const struct mpreset models[] = {
# define NPRESETS 0 # define NPRESETS 0
static const struct malias aliases[] = { static const struct malias aliases[] = {
{NULL, NULL, 0}, /* terminating entry */ {NULL, NULL }, /* terminating entry */
}; };
# define NALIASES 0 # define NALIASES 0
@ -587,7 +587,7 @@ int
mbynam(model_t *dest, const char *key) { mbynam(model_t *dest, const char *key) {
/* Sets parameters in dest according to the model named by key. /* Sets parameters in dest according to the model named by key.
*/ */
struct malias akey = {NULL, NULL, 0}, *aptr; struct malias akey = {NULL, NULL}, *aptr;
char *ukey, *uptr; char *ukey, *uptr;
if(!aliases->name) if(!aliases->name)
@ -615,7 +615,7 @@ mbynum(model_t *dest, int num) {
/* Sets parameters in dest according to the model indexed by num. */ /* Sets parameters in dest according to the model indexed by num. */
if(num > NPRESETS) if(num > NPRESETS)
num = NPRESETS; num = NPRESETS;
munpack(dest, models+num); munpack(dest, num+models);
} }
int int
@ -635,7 +635,8 @@ mnames(void) {
const struct malias *aptr = aliases; const struct malias *aptr = aliases;
while(aptr->name) { while(aptr->name) {
if(aptr->isprimry) if(aptr->name == aptr->model->name
|| !strcmp(aptr->name, aptr->model->name))
size += strlen(aptr->name) + 1; size += strlen(aptr->name) + 1;
++aptr; ++aptr;
} }
@ -644,7 +645,8 @@ mnames(void) {
aptr = aliases; aptr = aliases;
sptr = string; sptr = string;
while(aptr->name) { while(aptr->name) {
if(aptr->isprimry) { if(aptr->name == aptr->model->name
|| !strcmp(aptr->name, aptr->model->name)) {
strcpy(sptr, aptr->name); strcpy(sptr, aptr->name);
sptr += strlen(aptr->name); sptr += strlen(aptr->name);
*sptr++ = '\n'; *sptr++ = '\n';

View file

@ -1,5 +1,5 @@
/* poly.c /* poly.c
* Greg Cook, 9/Apr/2015 * Greg Cook, 29/Jul/2015
*/ */
/* CRC RevEng, an arbitrary-precision CRC calculator and algorithm finder /* CRC RevEng, an arbitrary-precision CRC calculator and algorithm finder
@ -21,7 +21,8 @@
* along with CRC RevEng. If not, see <http://www.gnu.org/licenses/>. * along with CRC RevEng. If not, see <http://www.gnu.org/licenses/>.
*/ */
/* 2015-04-03: added direct mode to strtop() /* 2015-07-29: discard leading $, &, 0x from argument to strtop()
* 2015-04-03: added direct mode to strtop()
* 2014-01-11: added LOFS(), RNDUP() * 2014-01-11: added LOFS(), RNDUP()
* 2013-09-16: SIZE(), IDX(), OFS() macros bitshift if BMP_POF2 * 2013-09-16: SIZE(), IDX(), OFS() macros bitshift if BMP_POF2
* 2013-02-07: conditional non-2^n fix, pmpar() return mask constant type * 2013-02-07: conditional non-2^n fix, pmpar() return mask constant type
@ -211,6 +212,15 @@ strtop(const char *string, int flags, int bperhx) {
if(bperhx > BMP_BIT || bperhx <= 0 || string == NULL || *string == '\0') if(bperhx > BMP_BIT || bperhx <= 0 || string == NULL || *string == '\0')
return(poly); return(poly);
if(~flags & P_DIRECT) {
if(*string == '$' || *string == '&')
++string;
else if(*string == '0'
&& (string[1] == 'x' || string[1] == 'X'))
string += 2;
}
length = (*string != '\0');
for(pass=0; pass<2 && length > 0UL; ++pass) { for(pass=0; pass<2 && length > 0UL; ++pass) {
s = string; s = string;
length = 0UL; length = 0UL;

View file

@ -1,5 +1,5 @@
/* reveng.h /* reveng.h
* Greg Cook, 9/Apr/2015 * Greg Cook, 30/Jul/2015
*/ */
/* CRC RevEng, an arbitrary-precision CRC calculator and algorithm finder /* CRC RevEng, an arbitrary-precision CRC calculator and algorithm finder
@ -92,7 +92,7 @@
/* Global definitions */ /* Global definitions */
/* CRC RevEng version string */ /* CRC RevEng version string */
#define VERSION "1.3.0" #define VERSION "1.3.1"
/* bmpbit.c */ /* bmpbit.c */
typedef BMP_T bmp_t; typedef BMP_T bmp_t;