X-Git-Url: https://vcs.fsf.org/?p=exim.git;a=blobdiff_plain;f=src%2Fsrc%2Frfc2047.c;h=041a18858768ace59de0f89b6c38c433ffe8fbdd;hp=1a4ecc251ad596f9e6feefcc5154719d6803b859;hb=9b2583c440ab9104070054dfa02e8611799f777b;hpb=059ec3d9952740285fb1ebf47961b8aca2eb1b4a diff --git a/src/src/rfc2047.c b/src/src/rfc2047.c index 1a4ecc251..041a18858 100644 --- a/src/src/rfc2047.c +++ b/src/src/rfc2047.c @@ -1,10 +1,8 @@ -/* $Cambridge: exim/src/src/rfc2047.c,v 1.1 2004/10/07 10:39:01 ph10 Exp $ */ - /************************************************* * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) University of Cambridge 1995 - 2004 */ +/* Copyright (c) University of Cambridge 1995 - 2015 */ /* See the file NOTICE for conditions of use and distribution. */ /* This file contains a function for decoding message header lines that may @@ -52,7 +50,7 @@ ptr = *ptrptr = store_get(Ustrlen(string) + 1); /* No longer than this */ while (*string != 0) { - register int ch = *string++; + int ch = *string++; if (ch == '_') *ptr++ = ' '; else if (ch == '=') @@ -122,7 +120,7 @@ for (;; string = mimeword + 2) encoding = toupper((*q1ptr)[1]); **endptr = 0; if (encoding == 'B') - dlen = auth_b64decode(*q2ptr+1, dptrptr); + dlen = b64decode(*q2ptr+1, dptrptr); else if (encoding == 'Q') dlen = rfc2047_qpdecode(*q2ptr+1, dptrptr); **endptr = '?'; /* restore */ @@ -199,9 +197,9 @@ uschar *mimeword, *q1, *q2, *endword; *error = NULL; mimeword = decode_mimeword(string, lencheck, &q1, &q2, &endword, &dlen, &dptr); -if (mimeword == NULL) +if (!mimeword) { - if (lenptr != NULL) *lenptr = size; + if (lenptr) *lenptr = size; return string; } @@ -212,7 +210,7 @@ string building code. */ yield = store_get(++size); -while (mimeword != NULL) +while (mimeword) { #if HAVE_ICONV @@ -220,7 +218,7 @@ while (mimeword != NULL) #endif if (mimeword != string) - yield = string_cat(yield, &size, &ptr, string, mimeword - string); + yield = string_catn(yield, &size, &ptr, string, mimeword - string); /* Do a charset translation if required. This is supported only on hosts that have the iconv() function. Translation errors set error, but carry on, @@ -279,7 +277,7 @@ while (mimeword != NULL) else { DEBUG(D_any) debug_printf("iconv error translating \"%.*s\" to %s: " - "%s\n", endword + 2 - mimeword, mimeword, target, strerror(errno)); + "%s\n", (int)(endword + 2 - mimeword), mimeword, target, strerror(errno)); } } @@ -307,7 +305,7 @@ while (mimeword != NULL) /* Add the new string onto the result */ - yield = string_cat(yield, &size, &ptr, tptr, tlen); + yield = string_catn(yield, &size, &ptr, tptr, tlen); } #if HAVE_ICONV @@ -319,7 +317,7 @@ while (mimeword != NULL) string = endword + 2; mimeword = decode_mimeword(string, lencheck, &q1, &q2, &endword, &dlen, &dptr); - if (mimeword != NULL) + if (mimeword) { uschar *s = string; while (isspace(*s)) s++; @@ -330,10 +328,10 @@ while (mimeword != NULL) /* Copy the remaining characters of the string, zero-terminate it, and return the length as well if requested. */ -yield = string_cat(yield, &size, &ptr, string, Ustrlen(string)); +yield = string_cat(yield, &size, &ptr, string); yield[ptr] = 0; -if (lenptr != NULL) *lenptr = ptr; -if (sizeptr != NULL) *sizeptr = size; +if (lenptr) *lenptr = ptr; +if (sizeptr) *sizeptr = size; return yield; }