• Alexey Dobriyan's avatar
    kstrto*: converting strings to integers done (hopefully) right · 33ee3b2e
    Alexey Dobriyan authored
    1. simple_strto*() do not contain overflow checks and crufty,
       libc way to indicate failure.
    2. strict_strto*() also do not have overflow checks but the name and
       comments pretend they do.
    3. Both families have only "long long" and "long" variants,
       but users want strtou8()
    4. Both "simple" and "strict" prefixes are wrong:
       Simple doesn't exactly say what's so simple, strict should not exist
       because conversion should be strict by default.
    
    The solution is to use "k" prefix and add convertors for more types.
    Enter
    	kstrtoull()
    	kstrtoll()
    	kstrtoul()
    	kstrtol()
    	kstrtouint()
    	kstrtoint()
    
    	kstrtou64()
    	kstrtos64()
    	kstrtou32()
    	kstrtos32()
    	kstrtou16()
    	kstrtos16()
    	kstrtou8()
    	kstrtos8()
    
    Include runtime testsuite (somewhat incomplete) as well.
    
    strict_strto*() become deprecated, stubbed to kstrto*() and
    eventually will be removed altogether.
    
    Use kstrto*() in code today!
    
    Note: on some archs _kstrtoul() and _kstrtol() are left in t...
    33ee3b2e
kstrtox.c 4.15 KB