void
string_append_base64 (GString *string,
GBytes *bytes)
{ constunsignedchar *data;
size_t len;
size_t max;
size_t before; char *out; int state = 0, outlen; int save = 0;
data = g_bytes_get_data (bytes, &len);
/* We can use a smaller limit here, since we know the saved state is 0,
+1 is needed for trailing \0, also check for unlikely integer overflow */
g_return_if_fail (len < ((G_MAXSIZE - 1 - string->len) / 4 - 1) * 3);
/* The glib docs say: * *Theoutputbuffermustbelargeenoughtofitallthedatathatwill *bewrittentoit.Duetothewaybase64encodesyouwillneed *atleast:(@len/3+1)*4+4bytes(+4maybeneededincaseof *non-zerostate).Ifyouenableline-breakingyouwillneedatleast: *((@len/3+1)*4+4)/76+1bytesofextraspace.
*/
max = (len / 3 + 1) * 4;
max += ((len / 3 + 1) * 4 + 4) / 76 + 1; /* and the null byte */
max += 1;
before = string->len;
g_string_set_size (string, string->len + max);
out = string->str + before;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.