// SPDX-License-Identifier: GPL-2.0-or-later /* * Copyright (c) 2021 SUSE LLC * * Convert bytes from standard input to hexadecimal representation. * * Parameters: * -d Convert hexadecimal values from standard input to binary representation * instead. */ #include #include int decode_hex(void) { int ret; unsigned int val; while ((ret = scanf("%2x", &val)) == 1) putchar(val); return ret != EOF || ferror(stdin); } int encode_hex(void) { int val; for (val = getchar(); val >= 0 && val <= 0xff; val = getchar()) printf("%02x", val); return val != EOF || ferror(stdin); } int main(int argc, char **argv) { int ret, decode = 0; while ((ret = getopt(argc, argv, "d"))) { if (ret < 0) break; switch (ret) { case 'd': decode = 1; break; } } if (decode) return decode_hex(); else return encode_hex(); }