NeoMutt  2024-04-16-36-g75b6fb
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 71 of file rfc2047.c.

72{
73 char *s0 = res;
74
75 memcpy(res, "=?", 2);
76 res += 2;
77 memcpy(res, tocode, strlen(tocode));
78 res += strlen(tocode);
79 memcpy(res, "?B?", 3);
80 res += 3;
81
82 while (srclen)
83 {
84 char encoded[11] = { 0 };
85 size_t rc;
86 size_t in_len = MIN(3, srclen);
87
88 rc = mutt_b64_encode(src, in_len, encoded, sizeof(encoded));
89 for (size_t i = 0; i < rc; i++)
90 *res++ = encoded[i];
91
92 srclen -= in_len;
93 src += in_len;
94 }
95
96 memcpy(res, "?=", 2);
97 res += 2;
98 return res - s0;
99}
size_t mutt_b64_encode(const char *in, size_t inlen, char *out, size_t outlen)
Convert raw bytes to null-terminated base64 string.
Definition: base64.c:87
#define MIN(a, b)
Definition: memory.h:32
+ 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 104 of file rfc2047.c.

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