NeoMutt  2025-12-11-769-g906513
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 77 of file rfc2047.c.

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

111{
112 static const char hex[] = "0123456789ABCDEF";
113 char *s0 = res;
114
115 memcpy(res, "=?", 2);
116 res += 2;
117 memcpy(res, tocode, strlen(tocode));
118 res += strlen(tocode);
119 memcpy(res, "?Q?", 3);
120 res += 3;
121 while (srclen--)
122 {
123 unsigned char c = *src++;
124 if (c == ' ')
125 {
126 *res++ = '_';
127 }
128 else if ((c >= 0x7f) || (c < 0x20) || (c == '_') || strchr(RFC2047Specials, c))
129 {
130 *res++ = '=';
131 *res++ = hex[(c & 0xf0) >> 4];
132 *res++ = hex[c & 0x0f];
133 }
134 else
135 {
136 *res++ = c;
137 }
138 }
139 memcpy(res, "?=", 2);
140 res += 2;
141 return res - s0;
142}
static const char RFC2047Specials[]
Definition rfc2047.c:72
+ Here is the caller graph for this function: