more debugging

This commit is contained in:
Olaf Rempel 2007-04-30 21:57:10 +02:00
parent 65b85824ed
commit b8f40b506f
4 changed files with 22 additions and 11 deletions

View File

@ -27,7 +27,10 @@ int main(int argc, char *argv[])
config_patch(config->data, CFG_PORTNAME_MASK + 1, "PORT-001"); config_patch(config->data, CFG_PORTNAME_MASK + 1, "PORT-001");
config_patch(config->data, CFG_PORTNAME_MASK + 2, "PORT-002"); config_patch(config->data, CFG_PORTNAME_MASK + 2, "PORT-002");
put_filedata(argv[2], config); char outname[64];
strncpy(outname, argv[1], sizeof(outname));
strcat(outname, ".patched");
put_filedata(outname, config);
free(config); free(config);
return 0; return 0;

View File

@ -48,6 +48,13 @@ static int patch_ip(void *config, struct cfg_patch *patch, int code, const char
return (inet_pton(AF_INET, parameter, config + patch->offset) <= 0) ? -1 : 0; return (inet_pton(AF_INET, parameter, config + patch->offset) <= 0) ? -1 : 0;
} }
static int patch_defaultgw(void *config, struct cfg_patch *patch, int code, const char *parameter)
{
/* metric? */
*((uint8_t *)(config + 0x110d)) = 0x02;
return patch_ip(config, patch, code, parameter);
}
static int patch_portname(void *config, struct cfg_patch *patch, int code, const char *parameter) static int patch_portname(void *config, struct cfg_patch *patch, int code, const char *parameter)
{ {
int num = code - patch->code; int num = code - patch->code;
@ -75,7 +82,7 @@ static struct cfg_patch patcharr[] = {{
.size = 0x1d, .size = 0x1d,
}, { }, {
.code = CFG_DEFAULTGW, .code = CFG_DEFAULTGW,
.patch = patch_ip, .patch = patch_defaultgw,
.offset = 0x10fc, .offset = 0x10fc,
}, { }, {
.code = CFG_IPADDRESS, .code = CFG_IPADDRESS,
@ -100,7 +107,7 @@ static struct cfg_patch patcharr[] = {{
.mask = 0xFFFFFFE0, .mask = 0xFFFFFFE0,
.patch = patch_portname, .patch = patch_portname,
.offset = 0x336c, .offset = 0x336c,
.size = 8, .size = 9,
.min = 1, .max = 26, .min = 1, .max = 26,
}}; }};

9
lzsc.c
View File

@ -49,17 +49,17 @@ static int put_bits(struct lzs_state *state, uint32_t bits, uint32_t len)
/* TODO: check dstsize */ /* TODO: check dstsize */
static int put_literal_byte(struct lzs_state *state, uint8_t byte) static int put_literal_byte(struct lzs_state *state, uint8_t byte)
{ {
printf(" put_literal_byte: 0x%02x\n", byte); printf(" put_literal_byte: 0x%02x\n", byte);
return put_bits(state, (0 << 8) | byte, 1+8); return put_bits(state, (0 << 8) | byte, 1+8);
} }
/* TODO: check dstsize */ /* TODO: check dstsize */
static int put_compressed_string(struct lzs_state *state, uint32_t offset, uint32_t len) static int put_compressed_string(struct lzs_state *state, uint32_t offset, uint32_t len)
{ {
printf(" put_compressed_string: offset=0x%03x len=0x%03x\n", offset, len); printf(" put_compressed_string: offset=0x%03x len=0x%03x\n", offset, len);
if (offset > 0x7ff || len > 0x800) if (offset > 0x7ff || len > 0x800)
printf(" ERROR\n"); printf(" ERROR\n");
if (offset < 128) if (offset < 128)
put_bits(state, (1 << 8) | (1 << 7) | offset, 1+1+7); put_bits(state, (1 << 8) | (1 << 7) | offset, 1+1+7);
@ -249,6 +249,8 @@ int lzs_pack(uint8_t *srcbuf, int srcsize, uint8_t *dstbuf, int dstsize)
/* get length of match (min. 2, 0 if collision) */ /* get length of match (min. 2, 0 if collision) */
int matchlen = getMatchLen(search->pos, state.src, maxlen); int matchlen = getMatchLen(search->pos, state.src, maxlen);
printf(" testing pos=0x%03x has 0x%02x matching bytes\n", (state.src - search->pos), matchlen);
if (matchlen > bestmatchlen) { if (matchlen > bestmatchlen) {
bestmatchlen = matchlen; bestmatchlen = matchlen;
bestmatch = search; bestmatch = search;
@ -257,6 +259,7 @@ int lzs_pack(uint8_t *srcbuf, int srcsize, uint8_t *dstbuf, int dstsize)
/* found something? */ /* found something? */
if (bestmatch != NULL) { if (bestmatch != NULL) {
printf(" selected pos=0x%03x with 0x%02x matching bytes\n", (state.src - bestmatch->pos), bestmatchlen);
put_compressed_string(&state, state.src - bestmatch->pos, bestmatchlen); put_compressed_string(&state, state.src - bestmatch->pos, bestmatchlen);
/* add bytes to history hash */ /* add bytes to history hash */
while (bestmatchlen--) while (bestmatchlen--)

8
lzsd.c
View File

@ -99,12 +99,10 @@ uint32_t lzs_unpack(uint8_t *srcbuf, uint32_t srcsize, uint8_t *dstbuf, uint32_t
/* end condition (7bit offset == 0x00) */ /* end condition (7bit offset == 0x00) */
if (tag == 1 && offset == 0) { if (tag == 1 && offset == 0) {
/* align src to next byte */ /* align src to next byte */
if (state.bitcnt > 7) uint32_t cnt = state.bitcnt;
printf("ERROR: alignment?\n"); uint32_t tmp = get_bits(&state, cnt);
state.bitcnt = 0; printf("=== BLOCK END (align=%d bits=0x%x) === \n", cnt, tmp);
printf("=== BLOCK END === \n");
get_zyxel_header(&state); get_zyxel_header(&state);
state.srcblkstart = state.src; state.srcblkstart = state.src;
state.dstblkstart = state.dst; state.dstblkstart = state.dst;