diff options
author | Karl Berry <karl@freefriends.org> | 2010-06-13 22:23:34 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-06-13 22:23:34 +0000 |
commit | f06e0d7e9489163b444e1381a9e670ed1789725d (patch) | |
tree | d838b80e2b32cea0554b0a238b8344fe8059b4ad /Build/source/extra/xz/debug/hex2bin.c | |
parent | 686b7eed06371a6d8721b657c0e77207732172dc (diff) |
rename to plain xz for the sake of diffs and consistent path in doc
git-svn-id: svn://tug.org/texlive/trunk@18954 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/extra/xz/debug/hex2bin.c')
-rw-r--r-- | Build/source/extra/xz/debug/hex2bin.c | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/Build/source/extra/xz/debug/hex2bin.c b/Build/source/extra/xz/debug/hex2bin.c new file mode 100644 index 00000000000..73246244746 --- /dev/null +++ b/Build/source/extra/xz/debug/hex2bin.c @@ -0,0 +1,53 @@ +/////////////////////////////////////////////////////////////////////////////// +// +/// \file hex2bin.c +/// \brief Converts hexadecimal input strings to binary +// +// Author: Lasse Collin +// +// This file has been put into the public domain. +// You can do whatever you want with this file. +// +/////////////////////////////////////////////////////////////////////////////// + +#include "sysdefs.h" +#include <stdio.h> +#include <ctype.h> + + +static int +getbin(int x) +{ + if (x >= '0' && x <= '9') + return x - '0'; + + if (x >= 'A' && x <= 'F') + return x - 'A' + 10; + + return x - 'a' + 10; +} + + +int +main(void) +{ + while (true) { + int byte = getchar(); + if (byte == EOF) + return 0; + if (!isxdigit(byte)) + continue; + + const int digit = getchar(); + if (digit == EOF || !isxdigit(digit)) { + fprintf(stderr, "Invalid input\n"); + return 1; + } + + byte = (getbin(byte) << 4) | getbin(digit); + if (putchar(byte) == EOF) { + perror(NULL); + return 1; + } + } +} |