FreeCalypso > hg > fc-pcsc-tools
view libcommon/decimal_str.c @ 75:f661ad7eb126
doc/Low-level-commands: document started
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 16 Feb 2021 15:35:05 +0000 |
parents | 3ef90bd13fbe |
children |
line wrap: on
line source
/* * This module implements some functions for initial parsing of decimal * string arguments, intended for implementation of commands like * write-iccid and write-imsi. */ #include <sys/types.h> #include <ctype.h> #include <stdio.h> parse_decimal_string_arg(arg, dest, maxdigits) char *arg; u_char *dest; unsigned maxdigits; { unsigned n, ndig; if (!*arg) { fprintf(stderr, "error: empty argument given for decimal string\n"); return(-1); } for (n = 0; *arg; ) { if (!isdigit(*arg)) { fprintf(stderr, "error: non-digit char in decimal string argument\n"); return(-1); } if (n >= maxdigits) { fprintf(stderr, "error: decimal string exceeds limit of %u digits\n", maxdigits); return(-1); } dest[n++] = *arg++ - '0'; } ndig = n; while (n < maxdigits) dest[n++] = 0xF; return ndig; } pack_reversed_nibbles(nibbles, bytes, nbytes) u_char *nibbles, *bytes; unsigned nbytes; { u_char *sp, *dp; unsigned n; sp = nibbles; dp = bytes; for (n = 0; n < nbytes; n++) { *dp++ = sp[0] | (sp[1] << 4); sp += 2; } }