summaryrefslogtreecommitdiff
path: root/src/libstddjb/fmtscan_num.c
blob: 094eb2aab71b0b03c3c961d9f214aa29409e4f17 (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 (register 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 ;
}