Skip to content

Commit

Permalink
Refactor hex_to_str().
Browse files Browse the repository at this point in the history
  • Loading branch information
monaka committed Jun 26, 2012
1 parent ed9488f commit 568af55
Showing 1 changed file with 13 additions and 9 deletions.
22 changes: 13 additions & 9 deletions src/load.c
Expand Up @@ -608,13 +608,11 @@ static char*
hex_to_str(char *hex, char *str, uint16_t *str_len)
{
char *src, *dst;
uint16_t hex_len = strlen(hex);
int escape = 0;

*str_len = 0;

for (src = hex, dst = str; hex_len > 0; (*str_len)++, hex_len--) {
if (*src == '\\' && hex_len > 1) {
src++; hex_len--;
for (src = hex, dst = str; *src != '\0'; src++) {
if (escape) {
switch(*src) {
case 'a': *dst++ = '\a'/* BEL */; break;
case 'b': *dst++ = '\b'/* BS */; break;
Expand All @@ -629,12 +627,18 @@ hex_to_str(char *hex, char *str, uint16_t *str_len)
case '\\': *dst++ = *src; break;
default:break;
}
src++;
escape = 0;
} else {
*dst++ = *src++;
if (*src == '\\') {
escape = 1;
} else {
escape = 0;
*dst++ = *src;
}
}
if (!escape) {
(*str_len)++;
}
}

return str;
}

0 comments on commit 568af55

Please sign in to comment.