Build: Fix a typo in autogen.sh
[xz/debian.git] / debug / hex2bin.c
blob453684369379e6ca5d9cd78ab51c06cd901da13e
1 // SPDX-License-Identifier: 0BSD
3 ///////////////////////////////////////////////////////////////////////////////
4 //
5 /// \file hex2bin.c
6 /// \brief Converts hexadecimal input strings to binary
7 //
8 // Author: Lasse Collin
9 //
10 ///////////////////////////////////////////////////////////////////////////////
12 #include "sysdefs.h"
13 #include <stdio.h>
14 #include <ctype.h>
17 static int
18 getbin(int x)
20 if (x >= '0' && x <= '9')
21 return x - '0';
23 if (x >= 'A' && x <= 'F')
24 return x - 'A' + 10;
26 return x - 'a' + 10;
30 int
31 main(void)
33 while (true) {
34 int byte = getchar();
35 if (byte == EOF)
36 return 0;
37 if (!isxdigit(byte))
38 continue;
40 const int digit = getchar();
41 if (digit == EOF || !isxdigit(digit)) {
42 fprintf(stderr, "Invalid input\n");
43 return 1;
46 byte = (getbin(byte) << 4) | getbin(digit);
47 if (putchar(byte) == EOF) {
48 perror(NULL);
49 return 1;