* key.c: Include <ctype.h>.
(_gpgme_key_append_name): Skip one more char when
processing escaped char. Submitted by Marc Mutz <mutz@kde.org>.
Handle hexadecimal encodings. Also reported by Marc. Thanks!
+2002-06-03 Marcus Brinkmann <marcus@g10code.de>
+
+ * key.c: Include <ctype.h>.
+ (_gpgme_key_append_name): Skip one more char when
+ processing escaped char. Submitted by Marc Mutz <mutz@kde.org>.
+ Handle hexadecimal encodings. Also reported by Marc. Thanks!
+
2002-06-02 Marcus Brinkmann <marcus@g10code.de>
* ath.h: Enable the _gpgme_ prefix. Fix all those prefix macros.
#include <stdlib.h>
#include <string.h>
#include <assert.h>
+#include <ctype.h>
#include "util.h"
#include "ops.h"
*d++ = '\\';
*d++ = '\0';
}
- else if (s[1] == 'x' && my_isdigit (s[2]) && my_isdigit (s[3]))
+ else if (s[1] == 'x' && isxdigit (s[2]) && isxdigit (s[3]))
{
- unsigned int val = (s[2]-'0')*16 + (s[3]-'0');
- if (!val)
+ int val = hextobyte (&s[2]);
+ if (val == -1)
{
- *d++ = '\\';
- *d++ = '\0';
- }
- else
- *(byte*)d++ = val;
- s += 3;
+ /* Should not happen. */
+ *d++ = *s++;
+ *d++ = *s++;
+ *d++ = *s++;
+ *d++ = *s++;
+ }
+ else
+ {
+ if (!val)
+ {
+ *d++ = '\\';
+ *d++ = '\0';
+ }
+ else
+ *(byte*)d++ = val;
+ s += 4;
+ }
}
else
{