* A basic toolset containing miscellaneous functions for string manipluation,
* encoding/decoding, and a bunch of other stuff.
*
- * Copyright (c) 1987-2011 by the citadel.org team
+ * Copyright (c) 1987-2017 by the citadel.org team
*
* This program is open source software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
int breaklength = 68;
int readlength = 3 * breaklength / 4;
- int t;
int destoffset;
int sourceoffset;
int sourceremaining;
dest[destoffset++] = '\n';
}
- t = destoffset;
- destoffset += base64_encode_blockend(&(dest[destoffset]), &_state);
- if (t < destoffset) {
- dest[destoffset++] = '\r';
- dest[destoffset++] = '\n';
- }
+ destoffset += base64_encode_blockend(&(dest[destoffset]), &_state, 0);
}
else {
destoffset = base64_encode_block(source, sourcelen, dest, &_state);
- destoffset += base64_encode_blockend(&(dest[destoffset]), &_state);
+ destoffset += base64_encode_blockend(&(dest[destoffset]), &_state, 0);
}
dest[destoffset] = 0;
return destoffset;
int CtdlDecodeBase64(char *dest, const char *source, size_t length)
{
base64_decodestate _state;
+ int len;
base64_init_decodestate(&_state);
- return base64_decode_block(source, length, dest, &_state);
+ len = base64_decode_block(source, length, dest, &_state);
+ dest[len] = '\0';
+ return len;
}
}
-
-
-
-/*
- * Format a date/time stamp for output
- * seconds is whether to print the seconds
- */
-void fmt_date(char *buf, size_t n, time_t thetime, int seconds) {
- struct tm tm;
- char *teh_format = NULL;
-
- *buf = '\0';
- localtime_r(&thetime, &tm);
-
- if (seconds) {
- teh_format = "%F %R:%S";
- }
- else {
- teh_format = "%F %R";
- }
-
- strftime(buf, n, teh_format, &tm);
-}
-
-
-
/*
* Determine whether the specified message number is contained within the
* specified sequence set.