diff options
author | Moritz Röhrich <moritz@ildefons.de> | 2021-01-07 17:40:20 +0100 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2021-01-07 16:10:47 -0600 |
commit | b6b5becf359370c7f32d8419bcf8f50a47fbe933 (patch) | |
tree | 4926ca2fe9180730dd9adfcb464d16c8d4ba2ffc /lib | |
parent | 824de078e4bdc752da9559cc64df627028310cc3 (diff) | |
download | toybox-b6b5becf359370c7f32d8419bcf8f50a47fbe933.tar.gz |
new toy: base32
Add new toy `base32`. Add tests for `base32`.
base32 is added by adapting the base64 encode/decode function to also do
base32 encoding/decoding. Then their respective main functions set up
the global parameter `n` to be the number of bits used in the encoding
(5 for base32 and 6 for base64) and `align` to align the result to a
certain length via padding. These are deliberately kept as parameters to
enable future expansion for other bases easily.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/lib.c | 12 | ||||
-rw-r--r-- | lib/lib.h | 1 |
2 files changed, 13 insertions, 0 deletions
@@ -870,6 +870,18 @@ void base64_init(char *p) *(p++) = '/'; } +// Init base32 table + +void base32_init(char *p) +{ + int i; + + for (i = 'A'; i != '8'; i++) { + if (i == 'Z'+1) i = '2'; + *(p++) = i; + } +} + int yesno(int def) { return fyesno(stdin, def); @@ -255,6 +255,7 @@ void delete_tempfile(int fdin, int fdout, char **tempname); void replace_tempfile(int fdin, int fdout, char **tempname); void crc_init(unsigned int *crc_table, int little_endian); void base64_init(char *p); +void base32_init(char *p); int yesno(int def); int fyesno(FILE *fp, int def); int qstrcmp(const void *a, const void *b); |