Update TortoiseGitPlink to PuTTY Plink 0.78
[TortoiseGit.git] / src / TortoisePlink / utils / base64_decode.c
blobbf26ef58850ffff8ca67d3d0b56bb5f02f15841e
1 #include "misc.h"
3 void base64_decode_bs(BinarySink *bs, ptrlen input)
5 BinarySource src[1];
6 BinarySource_BARE_INIT_PL(src, input);
8 while (get_avail(src)) {
9 char b64atom[4];
10 unsigned char binatom[3];
12 for (size_t i = 0; i < 4 ;) {
13 char c = get_byte(src);
14 if (get_err(src))
15 c = '=';
16 if (c == '\n' || c == '\r')
17 continue;
18 b64atom[i++] = c;
21 put_data(bs, binatom, base64_decode_atom(b64atom, binatom));
25 void base64_decode_fp(FILE *fp, ptrlen input)
27 stdio_sink ss;
28 stdio_sink_init(&ss, fp);
29 base64_decode_bs(BinarySink_UPCAST(&ss), input);
32 strbuf *base64_decode_sb(ptrlen input)
34 strbuf *sb = strbuf_new_nm();
35 base64_decode_bs(BinarySink_UPCAST(sb), input);
36 return sb;