NeoMutt  2025-09-05-7-geaa2bd
Teaching an old dog new tricks
DOXYGEN
Loading...
Searching...
No Matches
Mime Encoder API

Prototype for an encoding function. More...

Functions

static size_t b_encoder (char *res, const char *src, size_t srclen, const char *tocode)
 Base64 Encode a string - Implements encoder_t -.
 
static size_t q_encoder (char *res, const char *src, size_t srclen, const char *tocode)
 Quoted-printable Encode a string - Implements encoder_t -.
 

Detailed Description

Prototype for an encoding function.

Parameters
resBuffer for the result
srcString to encode
srclenLength of string to encode
tocodeCharacter encoding
Return values
numBytes written to buffer

Function Documentation

◆ b_encoder()

static size_t b_encoder ( char *  res,
const char *  src,
size_t  srclen,
const char *  tocode 
)
static

Base64 Encode a string - Implements encoder_t -.

Definition at line 69 of file rfc2047.c.

70{
71 char *s0 = res;
72
73 memcpy(res, "=?", 2);
74 res += 2;
75 memcpy(res, tocode, strlen(tocode));
76 res += strlen(tocode);
77 memcpy(res, "?B?", 3);
78 res += 3;
79
80 while (srclen)
81 {
82 char encoded[11] = { 0 };
83 size_t rc;
84 size_t in_len = MIN(3, srclen);
85
86 rc = mutt_b64_encode(src, in_len, encoded, sizeof(encoded));
87 for (size_t i = 0; i < rc; i++)
88 *res++ = encoded[i];
89
90 srclen -= in_len;
91 src += in_len;
92 }
93
94 memcpy(res, "?=", 2);
95 res += 2;
96 return res - s0;
97}
size_t mutt_b64_encode(const char *in, size_t inlen, char *out, size_t outlen)
Convert raw bytes to NUL-terminated base64 string.
Definition: base64.c:87
#define MIN(a, b)
Definition: memory.h:37
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ q_encoder()

static size_t q_encoder ( char *  res,
const char *  src,
size_t  srclen,
const char *  tocode 
)
static

Quoted-printable Encode a string - Implements encoder_t -.

Definition at line 102 of file rfc2047.c.

103{
104 static const char hex[] = "0123456789ABCDEF";
105 char *s0 = res;
106
107 memcpy(res, "=?", 2);
108 res += 2;
109 memcpy(res, tocode, strlen(tocode));
110 res += strlen(tocode);
111 memcpy(res, "?Q?", 3);
112 res += 3;
113 while (srclen--)
114 {
115 unsigned char c = *src++;
116 if (c == ' ')
117 {
118 *res++ = '_';
119 }
120 else if ((c >= 0x7f) || (c < 0x20) || (c == '_') || strchr(MimeSpecials, c))
121 {
122 *res++ = '=';
123 *res++ = hex[(c & 0xf0) >> 4];
124 *res++ = hex[c & 0x0f];
125 }
126 else
127 {
128 *res++ = c;
129 }
130 }
131 memcpy(res, "?=", 2);
132 res += 2;
133 return res - s0;
134}
const char MimeSpecials[]
Characters that need special treatment in MIME.
Definition: mime.c:67
+ Here is the caller graph for this function: