Added encode flag to control whether the encoded string ends in a newline after padding or not

This commit is contained in:
Jordan Cristiano 2015-06-21 01:17:25 -04:00
parent e7e498efd9
commit 9adb42e579
2 changed files with 11 additions and 1 deletions

View File

@ -13,8 +13,14 @@ typedef enum
step_A, step_B, step_C step_A, step_B, step_C
} base64_encodestep; } base64_encodestep;
typedef enum
{
BASE64_ENC_NO_NEWLINE_TERM = 0x1
} base64_encodeflags;
typedef struct typedef struct
{ {
base64_encodeflags flags;
base64_encodestep step; base64_encodestep step;
char result; char result;
int stepcount; int stepcount;

View File

@ -11,6 +11,7 @@ const int CHARS_PER_LINE = 72;
void base64_init_encodestate(base64_encodestate* state_in) void base64_init_encodestate(base64_encodestate* state_in)
{ {
state_in->flags = 0;
state_in->step = step_A; state_in->step = step_A;
state_in->result = 0; state_in->result = 0;
state_in->stepcount = 0; state_in->stepcount = 0;
@ -102,7 +103,10 @@ int base64_encode_blockend(char* code_out, base64_encodestate* state_in)
case step_A: case step_A:
break; break;
} }
*codechar++ = '\n'; if ((BASE64_ENC_NO_NEWLINE_TERM & state_in->flags) == 0)
{
*codechar++ = '\n';
}
return codechar - code_out; return codechar - code_out;
} }