aboutsummaryrefslogtreecommitdiff
path: root/mailutils/mail.c
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2018-09-10 14:37:07 +0100
committerRon Yorston <rmy@pobox.com>2018-09-10 14:59:33 +0100
commitd89ced75b204f0eb5611f522864beb81d1b393f5 (patch)
tree5daa31427e287fe079a0ef551097753773fdb266 /mailutils/mail.c
parentf72845d9332fa6311a46dbcad3180d5008182982 (diff)
parent05b18065ab9c375f6185b65a3631d4c6cc1a4be9 (diff)
downloadbusybox-w32-d89ced75b204f0eb5611f522864beb81d1b393f5.tar.gz
busybox-w32-d89ced75b204f0eb5611f522864beb81d1b393f5.tar.bz2
busybox-w32-d89ced75b204f0eb5611f522864beb81d1b393f5.zip
Merge branch 'busybox' into merge
Diffstat (limited to 'mailutils/mail.c')
-rw-r--r--mailutils/mail.c29
1 files changed, 19 insertions, 10 deletions
diff --git a/mailutils/mail.c b/mailutils/mail.c
index 7af7edd6c..6726654f7 100644
--- a/mailutils/mail.c
+++ b/mailutils/mail.c
@@ -107,7 +107,7 @@ static char* FAST_FUNC parse_url(char *url, char **user, char **pass)
107} 107}
108*/ 108*/
109 109
110void FAST_FUNC encode_base64(char *fname, const char *text, const char *eol) 110static void encode_n_base64(const char *fname, const char *text, size_t len)
111{ 111{
112 enum { 112 enum {
113 SRC_BUF_SIZE = 57, /* This *MUST* be a multiple of 3 */ 113 SRC_BUF_SIZE = 57, /* This *MUST* be a multiple of 3 */
@@ -116,18 +116,12 @@ void FAST_FUNC encode_base64(char *fname, const char *text, const char *eol)
116#define src_buf text 116#define src_buf text
117 char src[SRC_BUF_SIZE]; 117 char src[SRC_BUF_SIZE];
118 FILE *fp = fp; 118 FILE *fp = fp;
119 ssize_t len = len;
120 char dst_buf[DST_BUF_SIZE + 1]; 119 char dst_buf[DST_BUF_SIZE + 1];
121 120
122 if (fname) { 121 if (fname) {
123 fp = (NOT_LONE_DASH(fname)) ? xfopen_for_read(fname) : (FILE *)text; 122 fp = (NOT_LONE_DASH(fname)) ? xfopen_for_read(fname) : stdin;
124 src_buf = src; 123 src_buf = src;
125 } else if (text) { 124 }
126 // though we do not call uuencode(NULL, NULL) explicitly
127 // still we do not want to break things suddenly
128 len = strlen(text);
129 } else
130 return;
131 125
132 while (1) { 126 while (1) {
133 size_t size; 127 size_t size;
@@ -145,7 +139,7 @@ void FAST_FUNC encode_base64(char *fname, const char *text, const char *eol)
145 // encode the buffer we just read in 139 // encode the buffer we just read in
146 bb_uuencode(dst_buf, src_buf, size, bb_uuenc_tbl_base64); 140 bb_uuencode(dst_buf, src_buf, size, bb_uuenc_tbl_base64);
147 if (fname) { 141 if (fname) {
148 puts(eol); 142 puts("");
149 } else { 143 } else {
150 src_buf += size; 144 src_buf += size;
151 len -= size; 145 len -= size;
@@ -157,6 +151,21 @@ void FAST_FUNC encode_base64(char *fname, const char *text, const char *eol)
157#undef src_buf 151#undef src_buf
158} 152}
159 153
154void FAST_FUNC printstr_base64(const char *text)
155{
156 encode_n_base64(NULL, text, strlen(text));
157}
158
159void FAST_FUNC printbuf_base64(const char *text, unsigned len)
160{
161 encode_n_base64(NULL, text, len);
162}
163
164void FAST_FUNC printfile_base64(const char *fname)
165{
166 encode_n_base64(fname, NULL, 0);
167}
168
160/* 169/*
161 * get username and password from a file descriptor 170 * get username and password from a file descriptor
162 */ 171 */