| 1 | if (slen-- == 0) { |
|---|---|
| 2 | break; |
| 3 | } |
| 4 | *o++ = base64_table_enc[*s >> 2]; |
| 5 | st.carry = (*s++ << 4) & 0x30; |
| 6 | st.bytes++; |
| 7 | olen += 1; |
| 8 | |
| 9 | // Deliberate fallthrough: |
| 10 | BASE64_FALLTHROUGH |
| 11 | |
| 12 | case 1: if (slen-- == 0) { |
| 13 | break; |
| 14 | } |
| 15 | *o++ = base64_table_enc[st.carry | (*s >> 4)]; |
| 16 | st.carry = (*s++ << 2) & 0x3C; |
| 17 | st.bytes++; |
| 18 | olen += 1; |
| 19 | |
| 20 | // Deliberate fallthrough: |
| 21 | BASE64_FALLTHROUGH |
| 22 | |
| 23 | case 2: if (slen-- == 0) { |
| 24 | break; |
| 25 | } |
| 26 | *o++ = base64_table_enc[st.carry | (*s >> 6)]; |
| 27 | *o++ = base64_table_enc[*s++ & 0x3F]; |
| 28 | st.bytes = 0; |
| 29 | olen += 2; |
| 30 | } |
| 31 | } |
| 32 | state->bytes = st.bytes; |
| 33 | state->carry = st.carry; |
| 34 | *outlen = olen; |
| 35 |