FreeCalypso > hg > fc-pcsc-tools
diff libcommon/gsm7_encode.c @ 20:90e7020df08a
GSM7 string parsers accept new bypass-encoding escapes
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 12 Feb 2021 03:44:59 +0000 |
parents | b8d27c72747a |
children |
line wrap: on
line diff
--- a/libcommon/gsm7_encode.c Fri Feb 12 03:33:26 2021 +0000 +++ b/libcommon/gsm7_encode.c Fri Feb 12 03:44:59 2021 +0000 @@ -29,13 +29,20 @@ return(-1); } c = *cp++; + if (c >= '0' && c <= '7' && isxdigit(*cp)) { + c = ((c - '0') << 4) | decode_hex_digit(*cp++); + goto bypass_encoding; + } switch (c) { case 'n': c = '\n'; - break; + goto bypass_encoding; case 'r': c = '\r'; - break; + goto bypass_encoding; + case 'e': + c = 0x1B; + goto bypass_encoding; case '"': case '\\': break; @@ -51,6 +58,7 @@ "error: character in alpha tag string cannot be encoded in GSM7\n"); return(-1); } +bypass_encoding: if (c & 0x80) nadd = 2; else