-/* $Cambridge: exim/src/src/mime.c,v 1.16 2009/11/06 13:29:47 nm4 Exp $ */
-
/*************************************************
* Exim - an Internet mail transport agent *
*************************************************/
give info on detected "problems" in MIME
encodings. Those are defined in mime.h. */
-void mime_set_anomaly(int level, char *text) {
+void mime_set_anomaly(int level, const char *text) {
mime_anomaly_level = level;
- mime_anomaly_text = US text;
+ mime_anomaly_text = CUS text;
}
/* just dump MIME part without any decoding */
-static int mime_decode_asis(FILE* in, FILE* out, uschar* boundary)
+static ssize_t
+mime_decode_asis(FILE* in, FILE* out, uschar* boundary)
{
- int len, size = 0;
+ ssize_t len, size = 0;
uschar buffer[MIME_MAX_LINE_LENGTH];
while(fgets(CS buffer, MIME_MAX_LINE_LENGTH, mime_stream) != NULL) {
/* decode base64 MIME part */
-static int mime_decode_base64(FILE* in, FILE* out, uschar* boundary)
+static ssize_t
+mime_decode_base64(FILE* in, FILE* out, uschar* boundary)
{
uschar ibuf[MIME_MAX_LINE_LENGTH], obuf[MIME_MAX_LINE_LENGTH];
uschar *ipos, *opos;
- size_t len, size = 0;
+ ssize_t len, size = 0;
int bytestate = 0;
opos = obuf;
- while (fgets(ibuf, MIME_MAX_LINE_LENGTH, in) != NULL)
+ while (Ufgets(ibuf, MIME_MAX_LINE_LENGTH, in) != NULL)
{
if (boundary != NULL
&& Ustrncmp(ibuf, "--", 2) == 0
return -1; /* error */
size += len;
/* copy incomplete last byte to start of obuf, where we continue */
- if (bytestate & 3 != 0)
+ if ((bytestate & 3) != 0)
*obuf = *opos;
opos = obuf;
}
/* decode quoted-printable MIME part */
-static int mime_decode_qp(FILE* in, FILE* out, uschar* boundary)
+static ssize_t
+mime_decode_qp(FILE* in, FILE* out, uschar* boundary)
{
uschar ibuf[MIME_MAX_LINE_LENGTH], obuf[MIME_MAX_LINE_LENGTH];
uschar *ipos, *opos;
- size_t len, size = 0;
+ ssize_t len, size = 0;
while (fgets(CS ibuf, MIME_MAX_LINE_LENGTH, in) != NULL)
{
uschar decode_path[1024];
FILE *decode_file = NULL;
long f_pos = 0;
- unsigned int size_counter = 0;
- int (*decode_function)(FILE*, FILE*, uschar*);
+ ssize_t size_counter = 0;
+ ssize_t (*decode_function)(FILE*, FILE*, uschar*);
if (mime_stream == NULL)
return FAIL;
clearerr(mime_stream);
fseek(mime_stream, f_pos, SEEK_SET);
- if (size_counter < 0 || fclose(decode_file) != 0)
+ if (fclose(decode_file) != 0 || size_counter < 0)
return DEFER;
/* round up to the next KiB */