base64wrap_nocgo.go

 1//go:build !cgo
 2
 3package clib
 4
 5import "strings"
 6
 7// WrapBase64 wraps base64-encoded data at 76 characters per line with \r\n
 8// separators, as required by MIME (RFC 2045).
 9// This is the pure Go fallback used when cgo is not available.
10func WrapBase64(data string) string {
11	const lineLength = 76
12	if len(data) == 0 {
13		return ""
14	}
15	var result strings.Builder
16	for i := 0; i < len(data); i += lineLength {
17		end := i + lineLength
18		if end > len(data) {
19			end = len(data)
20		}
21		result.WriteString(data[i:end])
22		if end < len(data) {
23			result.WriteString("\r\n")
24		}
25	}
26	return result.String()
27}