summaryrefslogtreecommitdiff
path: root/src/libstddjb/fmtscan_num.c
blob: d9fea338eefdbf7c9b1fbbf7ccc348729bd0c1f9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/* ISC license. */

#include <skalibs/fmtscan.h>

unsigned char fmtscan_num (unsigned char c, unsigned char n)
{
  return
    ((c < '0') || (n > 36)) ? n :
    (n <= 10) ? (c - '0' <= n) ? c - '0' : n :
    (c - '0' <= 9) ? c - '0' :
    (c < 'A') ? n :
    (c - 'A' < n - 10) ? c - 'A' + 10 :
    (c < 'a') ? n :
    (c - 'a' < n - 10) ? c - 'a' + 10 :
    n ;
}