1//go:build cgo
2
3package clib
4
5/*
6#include "base64wrap.h"
7#include <stdlib.h>
8*/
9import "C"
10import "unsafe"
11
12// WrapBase64 wraps base64-encoded data at 76 characters per line with \r\n
13// separators, as required by MIME (RFC 2045).
14func WrapBase64(data string) string {
15 if len(data) == 0 {
16 return ""
17 }
18
19 cData := C.CString(data)
20 defer C.free(unsafe.Pointer(cData))
21
22 var outLen C.size_t
23 result := C.wrap_base64(cData, C.size_t(len(data)), &outLen)
24 if result == nil {
25 return ""
26 }
27 defer C.free(unsafe.Pointer(result))
28
29 return C.GoStringN(result, C.int(outLen))
30}