diff options
author | Rich Felker <dalias@aerifal.cx> | 2012-03-01 23:43:31 -0500 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2012-03-01 23:43:31 -0500 |
commit | ca19774c913739ef2bea9586a847d8719f19840f (patch) | |
tree | 5a82d2687e4d2dad5163039565f1fe90c9d1272a | |
parent | e0614f7cd418afedd06c9bcd5abb965608bc52f8 (diff) | |
download | musl-ca19774c913739ef2bea9586a847d8719f19840f.tar.gz musl-ca19774c913739ef2bea9586a847d8719f19840f.tar.bz2 musl-ca19774c913739ef2bea9586a847d8719f19840f.tar.xz musl-ca19774c913739ef2bea9586a847d8719f19840f.zip |
implement a64l and l64a (legacy xsi stuff)
-rw-r--r-- | src/misc/a64l.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/misc/a64l.c b/src/misc/a64l.c new file mode 100644 index 00000000..86aeefe0 --- /dev/null +++ b/src/misc/a64l.c @@ -0,0 +1,26 @@ +#include <stdlib.h> +#include <string.h> +#include <stdint.h> + +static const char digits[] = + "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + +long a64l(const char *s) +{ + int e; + uint32_t x = 0; + for (e=0; e<36 && *s; e+=6, s++) + x |= (strchr(digits, *s)-digits)<<e; + return x; +} + +char *l64a(long x0) +{ + static char s[7]; + char *p; + uint32_t x = x0; + for (p=s; x; p++, x>>=6) + *p = digits[x&63]; + *p = 0; + return s; +} |