SHA256
1
0
forked from pool/mailx

Accepting request 181762 from server:mail

- Do not pseudo detect Latin nor UTF-8 in binary attachments (bnc#827010)
- Add patch mailx-12.5-parentheses.dif, that is try to tranquilize
  gcc due warning about parentheses (please check!)

OBS-URL: https://build.opensuse.org/request/show/181762
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/mailx?expand=0&rev=27
This commit is contained in:
Stephan Kulow 2013-07-03 08:24:38 +00:00 committed by Git OBS Bridge
commit 890b1ff0cc
4 changed files with 433 additions and 9 deletions

View File

@ -12,7 +12,7 @@
enum tdflags { enum tdflags {
--- mime.c --- mime.c
+++ mime.c 2012-03-30 14:50:10.318065066 +0000 +++ mime.c 2013-07-02 10:25:35.000000000 +0000
@@ -302,13 +302,78 @@ gettcharset(void) @@ -302,13 +302,78 @@ gettcharset(void)
return t; return t;
} }
@ -101,7 +101,7 @@
if (w & GIDENT) { if (w & GIDENT) {
if (hp->h_from && name_highbit(hp->h_from)) if (hp->h_from && name_highbit(hp->h_from))
goto needs; goto needs;
@@ -355,7 +421,7 @@ need_hdrconv(struct header *hp, enum gfi @@ -355,7 +422,7 @@ need_hdrconv(struct header *hp, enum gfi
if (w & GSUBJECT && has_highbit(hp->h_subject)) if (w & GSUBJECT && has_highbit(hp->h_subject))
goto needs; goto needs;
return NULL; return NULL;
@ -128,7 +128,7 @@
match = 1; match = 1;
break; break;
} }
@@ -748,11 +814,54 @@ mime_isclean(FILE *f) @@ -748,16 +814,66 @@ mime_isclean(FILE *f)
maxlen = curlen; maxlen = curlen;
curlen = 1; curlen = 1;
} else if (c & 0200) { } else if (c & 0200) {
@ -172,19 +172,31 @@
+ continue; + continue;
+ } + }
+ latin: + latin:
+ if (text_chars[i & 0377] == I) + if (text_chars[i & 0377] == I) {
+ isclean |= MIME_LATIN; + isclean |= MIME_LATIN;
+ if (text_chars[i & 0377] == X) + continue;
+ }
+ if (text_chars[i & 0377] == X) {
+ isclean |= MIME_CTRLCHAR; + isclean |= MIME_CTRLCHAR;
+ break;
+ }
} else if (c == '\0') { } else if (c == '\0') {
isclean |= MIME_HASNUL; isclean |= MIME_HASNUL;
break; break;
- } else if ((c < 040 && (c != '\t' && c != '\f')) || c == 0177) { - } else if ((c < 040 && (c != '\t' && c != '\f')) || c == 0177) {
+ } else if (text_chars[c & 0377] == F) { + } else if (text_chars[c & 0377] == F) {
isclean |= MIME_CTRLCHAR; isclean |= MIME_CTRLCHAR;
+ break;
} }
} while (c != EOF); } while (c != EOF);
@@ -826,11 +935,16 @@ get_mime_convert(FILE *fp, char **conten if (lastc != '\n')
isclean |= MIME_NOTERMNL;
+ if (isclean & (MIME_CTRLCHAR|MIME_HASNUL))
+ isclean &= (MIME_CTRLCHAR|MIME_HASNUL);
clearerr(f);
fseek(f, initial_pos, SEEK_SET);
if ((cp = value("maximum-unencoded-line-length")) != NULL)
@@ -826,11 +942,16 @@ get_mime_convert(FILE *fp, char **conten
* ^I or ^L in text/plain bodies. However, some * ^I or ^L in text/plain bodies. However, some
* obscure character sets actually contain these * obscure character sets actually contain these
* characters, so the content type can be set. * characters, so the content type can be set.
@ -201,7 +213,7 @@
} }
return convert; return convert;
} }
@@ -989,8 +1103,14 @@ mime_fromhdr(struct str *in, struct str @@ -989,8 +1110,14 @@ mime_fromhdr(struct str *in, struct str
#ifdef HAVE_ICONV #ifdef HAVE_ICONV
iconv_t fhicd = (iconv_t)-1; iconv_t fhicd = (iconv_t)-1;
#endif #endif
@ -216,7 +228,7 @@
maxstor = in->l; maxstor = in->l;
out->s = smalloc(maxstor + 1); out->s = smalloc(maxstor + 1);
out->l = 0; out->l = 0;
@@ -1010,7 +1130,7 @@ mime_fromhdr(struct str *in, struct str @@ -1010,7 +1137,7 @@ mime_fromhdr(struct str *in, struct str
#ifdef HAVE_ICONV #ifdef HAVE_ICONV
if (fhicd != (iconv_t)-1) if (fhicd != (iconv_t)-1)
iconv_close(fhicd); iconv_close(fhicd);
@ -225,7 +237,7 @@
fhicd = iconv_open_ft(tcs, cs); fhicd = iconv_open_ft(tcs, cs);
else else
fhicd = (iconv_t)-1; fhicd = (iconv_t)-1;
@@ -1105,12 +1225,17 @@ notmime: @@ -1105,12 +1232,17 @@ notmime:
} }
fromhdr_end: fromhdr_end:
*q = '\0'; *q = '\0';

402
mailx-12.5-parentheses.dif Normal file
View File

@ -0,0 +1,402 @@
--- cmd1.c
+++ cmd1.c 2013-07-02 10:44:54.178300341 +0000
@@ -112,14 +112,14 @@ headers(void *v)
lastg = g;
lastmq = mq;
}
- if (n>0 && mp==&message[n-1] ||
- n==0 && g==k ||
- n==-2 && g==k+size && lastmq ||
- n<0 && g>=k && mp->m_flag&fl)
+ if ((n>0 && mp==&message[n-1]) ||
+ (n==0 && g==k) ||
+ (n==-2 && g==k+size && lastmq) ||
+ (n<0 && g>=k && mp->m_flag&fl))
break;
g++;
}
- if (lastmq && (n==-2 || n==-1 && mp==&message[msgCount])) {
+ if (lastmq && ((n==-2 || n==-1) && mp==&message[msgCount])) {
g = lastg;
mq = lastmq;
}
@@ -155,14 +155,14 @@ headers(void *v)
lastg = g;
lastmq = mq;
}
- if (n>0 && mp==&message[n-1] ||
- n==0 && g==k ||
- n==-2 && g==k+size && lastmq ||
- n<0 && g>=k && mp->m_flag&fl)
+ if ((n>0 && mp==&message[n-1]) ||
+ (n==0 && g==k) ||
+ (n==-2 && g==k+size && lastmq) ||
+ (n<0 && g>=k && mp->m_flag&fl))
break;
g++;
}
- if (lastmq && (n==-2 || n==-1 && mp==&message[msgCount])) {
+ if (lastmq && ((n==-2 || n==-1) && mp==&message[msgCount])) {
g = lastg;
mq = lastmq;
}
--- collect.c
+++ collect.c 2013-07-02 10:56:15.602310172 +0000
@@ -279,8 +279,8 @@ read_attachment_data(struct attachment *
perror(ap->a_name);
}
if (ap->a_name && (value("attachment-ask-charset") ||
- (cp = value("sendcharsets")) != NULL &&
- strchr(cp, ',') != NULL)) {
+ ((cp = value("sendcharsets")) != NULL &&
+ strchr(cp, ',') != NULL))) {
snprintf(prefix, sizeof prefix, "#%u\tcharset: ", number);
ap->a_charset = readtty(prefix, ap->a_charset);
}
@@ -648,8 +648,8 @@ cont:
value("interactive") != NULL &&
(value("dot") != NULL || value("ignoreeof") != NULL))
break;
- if (linebuf[0] != escape || (value("interactive") == NULL &&
- tildeflag == 0 ||
+ if (linebuf[0] != escape || ((value("interactive") == NULL &&
+ tildeflag == 0) ||
tildeflag < 0)) {
if (putline(collf, linebuf, count) < 0)
goto err;
--- def.h
+++ def.h 2013-07-02 10:36:04.091168058 +0000
@@ -408,7 +408,7 @@ enum gfield {
#define GMASK (GTO|GSUBJECT|GCC|GBCC|GREPLYTO) /* Mask of places from whence */
#define visible(mp) (((mp)->m_flag&(MDELETED|MHIDDEN|MKILL))==0|| \
- dot==(mp) && (mp)->m_flag&MKILL)
+ (dot==(mp) && (mp)->m_flag&MKILL))
/*
* Structure used to pass about the current
--- fio.c
+++ fio.c 2013-07-02 10:59:31.683460415 +0000
@@ -600,8 +600,8 @@ getfold(char *name, int size)
if ((folder = value("folder")) == NULL)
return (-1);
- if (*folder == '/' || (p = which_protocol(folder)) != PROTO_FILE &&
- p != PROTO_MAILDIR) {
+ if (*folder == '/' || ((p = which_protocol(folder)) != PROTO_FILE &&
+ p != PROTO_MAILDIR)) {
strncpy(name, folder, size);
name[size-1]='\0';
} else {
--- imap.c
+++ imap.c 2013-07-02 09:26:20.434847340 +0000
@@ -1868,11 +1868,11 @@ imap_update(struct mailbox *mp)
stored++;
gotcha++;
} else if (mp->mb_type != MB_CACHE ||
- !edit && (!(m->m_flag&(MBOXED|MSAVED|MDELETED))
+ (!edit && (!(m->m_flag&(MBOXED|MSAVED|MDELETED))
|| (m->m_flag &
(MBOXED|MPRESERVE|MTOUCH)) ==
- (MPRESERVE|MTOUCH)) ||
- edit && !(m->m_flag & MDELETED))
+ (MPRESERVE|MTOUCH))) ||
+ (edit && !(m->m_flag & MDELETED)))
held++;
if (m->m_flag & MNEW) {
m->m_flag &= ~MNEW;
@@ -2779,7 +2779,7 @@ imap_appenduid(struct mailbox *mp, FILE
xmb.mb_otf = xmb.mb_itf = fp;
initcache(&xmb);
memset(&xm, 0, sizeof xm);
- xm.m_flag = flag&MREAD | MNEW;
+ xm.m_flag = flag&(MREAD|MNEW);
xm.m_time = t;
xm.m_block = mailx_blockof(off1);
xm.m_offset = mailx_offsetof(off1);
--- junk.c
+++ junk.c 2013-07-02 09:36:11.306215424 +0000
@@ -345,11 +345,11 @@ putdb(void)
void *zp;
int scomp, ncomp;
- if (!super_mmapped && (sfp = dbfp(SUPER, O_WRONLY, &scomp, &sname))
- == NULL || sfp == (FILE *)-1)
+ if (!super_mmapped && ((sfp = dbfp(SUPER, O_WRONLY, &scomp, &sname))
+ == NULL || sfp == (FILE *)-1))
return;
- if (!nodes_mmapped && (nfp = dbfp(NODES, O_WRONLY, &ncomp, &nname))
- == NULL || nfp == (FILE *)-1)
+ if (!nodes_mmapped && ((nfp = dbfp(NODES, O_WRONLY, &ncomp, &nname))
+ == NULL || nfp == (FILE *)-1))
return;
if (super_mmapped == 0 || nodes_mmapped == 0)
holdint();
@@ -696,8 +696,8 @@ loop: *stop = 0;
}
SAVE(c)
} else if (constituent(c, *buf, i+j, sp->price, sp->hadamp) ||
- sp->loc == HEADER && c == '.' &&
- asccasecmp(sp->field, "subject*")) {
+ (sp->loc == HEADER && c == '.' &&
+ asccasecmp(sp->field, "subject*"))) {
if (c == '&')
sp->hadamp = 1;
SAVE(c)
@@ -775,9 +775,9 @@ out: if (i > 0) {
ascncasecmp(sp->field, "x-spam", 6) == 0 ||
ascncasecmp(sp->field, "x-pstn", 6) == 0 ||
ascncasecmp(sp->field, "x-scanned", 9) == 0 ||
- asccasecmp(sp->field, "received*") == 0 &&
+ (asccasecmp(sp->field, "received*") == 0 &&
((2*c > i) || i < 4 ||
- asccasestr(*buf, "localhost") != NULL)))
+ asccasestr(*buf, "localhost") != NULL))))
goto loop;
return *buf;
}
@@ -816,14 +816,14 @@ add(const char *word, enum entry entry,
switch (entry) {
case GOOD:
c = get(&n[OF_node_good]);
- if (incr>0 && c<MAX3-incr || incr<0 && c>=-incr) {
+ if ((incr>0 && c<MAX3-incr) || (incr<0 && c>=-incr)) {
c += incr;
put(&n[OF_node_good], c);
}
break;
case BAD:
c = get(&n[OF_node_bad]);
- if (incr>0 && c<MAX3-incr || incr<0 && c>=-incr) {
+ if ((incr>0 && c<MAX3-incr) || (incr<0 && c>=-incr)) {
c += incr;
put(&n[OF_node_bad], c);
}
@@ -958,7 +958,7 @@ insert(int *msgvec, enum entry entry, in
break;
}
u += incr;
- if (entry == GOOD && incr > 0 || entry == BAD && incr < 0)
+ if ((entry == GOOD && incr > 0) || (entry == BAD && incr < 0))
message[*ip-1].m_flag &= ~MJUNK;
else
message[*ip-1].m_flag |= MJUNK;
@@ -1109,10 +1109,10 @@ rate(const char *word, enum entry entry,
* gives the most interesting verbose output.
*/
if (d > best[i].dist ||
- d == best[i].dist &&
- p < best[i].prob ||
- best[i].loc == HEADER &&
- d == best[i].dist) {
+ (d == best[i].dist &&
+ p < best[i].prob) ||
+ (best[i].loc == HEADER &&
+ d == best[i].dist)) {
for (j = BEST-2; j >= i; j--)
best[j+1] = best[j];
best[i].dist = d;
--- macro.c
+++ macro.c 2013-07-02 10:57:57.718909269 +0000
@@ -195,7 +195,7 @@ ccall(void *v)
char **args = v;
struct macro *mp;
- if (args[0] == NULL || args[1] != NULL && args[2] != NULL) {
+ if (args[0] == NULL || (args[1] != NULL && args[2] != NULL)) {
fprintf(stderr, "Syntax is: call <name>\n");
return 1;
}
--- md5.c
+++ md5.c 2013-07-02 11:17:37.825823499 +0000
@@ -70,42 +70,42 @@ static unsigned char PADDING[64] = {
/*
* F, G, H and I are basic MD5 functions.
*/
-#define F(x, y, z) ((x) & (y) | ~(x) & (z))
-#define G(x, y, z) ((x) & (z) | (y) & ~(z))
+#define F(x, y, z) (((x) & (y)) | (~(x) & (z)))
+#define G(x, y, z) (((x) & (z)) | ((y) & ~(z)))
#define H(x, y, z) ((x) ^ (y) ^ (z))
-#define I(x, y, z) ((y) ^ ((x) | ~(z)&0xffffffff))
+#define I(x, y, z) ((y) ^ ((x) | (~(z)&0xffffffff)))
/*
* ROTATE_LEFT rotates x left n bits.
*/
-#define ROTATE_LEFT(x, n) ((x)<<(n) & 0xffffffff | (x) >> 32-(n))
+#define ROTATE_LEFT(x, n) ((((x)<<(n)) & 0xffffffff) | ((x) >> (32-(n))))
/*
* FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4.
* Rotation is separate from addition to prevent recomputation.
*/
#define FF(a, b, c, d, x, s, ac) { \
- (a) = (a) + F((b), (c), (d)) + (x) + ((ac)&0xffffffff) & 0xffffffff; \
+ (a) = (a) + F((b), (c), (d)) + (((x) + ((ac)&0xffffffff)) & 0xffffffff); \
(a) = ROTATE_LEFT((a), (s)); \
- (a) = (a) + (b) & 0xffffffff; \
+ (a) = (a) + ((b) & 0xffffffff); \
}
#define GG(a, b, c, d, x, s, ac) { \
- (a) = (a) + G((b), (c), (d)) + (x) + ((ac)&0xffffffff) & 0xffffffff; \
+ (a) = (a) + G((b), (c), (d)) + (((x) + ((ac)&0xffffffff)) & 0xffffffff); \
(a) = ROTATE_LEFT((a), (s)); \
- (a) = (a) + (b) & 0xffffffff; \
+ (a) = (a) + ((b) & 0xffffffff); \
}
#define HH(a, b, c, d, x, s, ac) { \
- (a) = (a) + H((b), (c), (d)) + (x) + ((ac)&0xffffffff) & 0xffffffff; \
+ (a) = (a) + H((b), (c), (d)) + (((x) + ((ac)&0xffffffff)) & 0xffffffff); \
(a) = ROTATE_LEFT((a), (s)); \
- (a) = (a) + (b) & 0xffffffff; \
+ (a) = (a) + ((b) & 0xffffffff); \
}
#define II(a, b, c, d, x, s, ac) { \
- (a) = (a) + I((b), (c), (d)) + (x) + ((ac)&0xffffffff) & 0xffffffff; \
+ (a) = (a) + I((b), (c), (d)) + (((x) + ((ac)&0xffffffff)) & 0xffffffff); \
(a) = ROTATE_LEFT((a), (s)); \
- (a) = (a) + (b) & 0xffffffff; \
+ (a) = (a) + ((b) & 0xffffffff); \
}
/*
@@ -144,10 +144,10 @@ MD5Update (
index = context->count[0]>>3 & 0x3F;
/* Update number of bits */
- if ((context->count[0] = context->count[0] + (inputLen<<3) & 0xffffffff)
+ if ((context->count[0] = context->count[0] + ((inputLen<<3) & 0xffffffff))
< (inputLen<<3 & 0xffffffff))
- context->count[1] = context->count[1] + 1 & 0xffffffff;
- context->count[1] = context->count[1] + (inputLen>>29) & 0xffffffff;
+ context->count[1] = context->count[1] + (1 & 0xffffffff);
+ context->count[1] = context->count[1] + ((inputLen>>29) & 0xffffffff);
partLen = 64 - index;
@@ -285,10 +285,10 @@ MD5Transform(md5_type state[4], unsigned
II(c, d, a, b, x[ 2], S43, 0x2ad7d2bb); /* 63 */
II(b, c, d, a, x[ 9], S44, 0xeb86d391); /* 64 */
- state[0] = state[0] + a & 0xffffffff;
- state[1] = state[1] + b & 0xffffffff;
- state[2] = state[2] + c & 0xffffffff;
- state[3] = state[3] + d & 0xffffffff;
+ state[0] = state[0] + (a & 0xffffffff);
+ state[1] = state[1] + (b & 0xffffffff);
+ state[2] = state[2] + (c & 0xffffffff);
+ state[3] = state[3] + (d & 0xffffffff);
/*
* Zeroize sensitive information.
--- mime.c
+++ mime.c 2013-07-02 10:19:41.993365604 +0000
@@ -855,10 +855,8 @@ mime_isclean(FILE *f)
continue;
}
latin:
- if (text_chars[i & 0377] == I) {
+ if (text_chars[i & 0377] == I)
isclean |= MIME_LATIN;
- continue;
- }
if (text_chars[i & 0377] == X) {
isclean |= MIME_CTRLCHAR;
break;
@@ -871,10 +869,10 @@ mime_isclean(FILE *f)
break;
}
} while (c != EOF);
- if (lastc != '\n')
- isclean |= MIME_NOTERMNL;
if (isclean & (MIME_CTRLCHAR|MIME_HASNUL))
isclean &= (MIME_CTRLCHAR|MIME_HASNUL);
+ if (lastc != '\n')
+ isclean |= MIME_NOTERMNL;
clearerr(f);
fseek(f, initial_pos, SEEK_SET);
if ((cp = value("maximum-unencoded-line-length")) != NULL)
@@ -916,8 +914,8 @@ get_mime_convert(FILE *fp, char **conten
int convert;
*isclean = mime_isclean(fp);
- if (*isclean & MIME_HASNUL ||
- *contenttype && ascncasecmp(*contenttype, "text/", 5)) {
+ if ((*isclean & MIME_HASNUL) ||
+ (*contenttype && ascncasecmp(*contenttype, "text/", 5))) {
convert = CONV_TOB64;
if (*contenttype == NULL ||
ascncasecmp(*contenttype, "text/", 5) == 0)
@@ -990,13 +988,13 @@ mime_write_toqp(struct str *in, FILE *fo
upper = in->s + in->l;
for (p = in->s, l = 0; p < upper; p++) {
if (mustquote(*p&0377) ||
- p < upper-1 && p[1] == '\n' &&
- blankchar(p[0]&0377) ||
- p < upper-4 && l == 0 &&
+ (p < upper-1 && p[1] == '\n' &&
+ blankchar(p[0]&0377)) ||
+ (p < upper-4 && l == 0 &&
p[0] == 'F' && p[1] == 'r' &&
- p[2] == 'o' && p[3] == 'm' ||
- *p == '.' && l == 0 && p < upper-1 &&
- p[1] == '\n') {
+ p[2] == 'o' && p[3] == 'm') ||
+ (*p == '.' && l == 0 && p < upper-1 &&
+ p[1] == '\n')) {
if (l >= 69) {
sz += 2;
fwrite("=\n", sizeof (char), 2, fo);
@@ -1036,8 +1034,8 @@ mime_str_toqp(struct str *in, struct str
out->l = in->l;
upper = in->s + in->l;
for (p = in->s; p < upper; p++) {
- if (mustquote(*p&0377) || p+1 < upper && *(p + 1) == '\n' &&
- blankchar(*p & 0377)) {
+ if (mustquote(*p&0377) || (p+1 < upper && *(p + 1) == '\n' &&
+ blankchar(*p & 0377))) {
if (inhdr && *p == ' ') {
*q++ = '_';
} else {
@@ -1347,8 +1345,8 @@ mime_write_tohdr(struct str *in, FILE *f
wbeg == &upper[-1]))
mustquote++;
}
- if (mustquote || broken || (wend - wbeg) >= 74 &&
- quoteany) {
+ if (mustquote || broken || ((wend - wbeg) >= 74 &&
+ quoteany)) {
for (;;) {
cin.s = lastwordend ? lastwordend :
wbeg;
--- sendout.c
+++ sendout.c 2013-07-02 08:04:20.342719526 +0000
@@ -1372,10 +1372,10 @@ fmt(char *str, struct name *np, FILE *fo
if (col) {
fwrite(str, sizeof *str, strlen(str), fo);
if ((flags&GFILES) == 0 &&
- col == 3 && asccasecmp(str, "to:") == 0 ||
- col == 3 && asccasecmp(str, "cc:") == 0 ||
- col == 4 && asccasecmp(str, "bcc:") == 0 ||
- col == 10 && asccasecmp(str, "Resent-To:") == 0)
+ ((col == 3 && asccasecmp(str, "to:") == 0) ||
+ (col == 3 && asccasecmp(str, "cc:") == 0) ||
+ (col == 4 && asccasecmp(str, "bcc:") == 0) ||
+ (col == 10 && asccasecmp(str, "Resent-To:") == 0)))
is_to = 1;
}
for (; np != NULL; np = np->n_flink) {
--- tty.c
+++ tty.c 2013-07-02 11:02:18.880440821 +0000
@@ -438,6 +438,6 @@ yorn(char *msg)
do
cp = readtty(msg, NULL);
while (cp == NULL ||
- *cp != 'y' && *cp != 'Y' && *cp != 'n' && *cp != 'N');
+ (*cp != 'y' && *cp != 'Y' && *cp != 'n' && *cp != 'N'));
return *cp == 'y' || *cp == 'Y';
}

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Tue Jul 2 10:29:35 UTC 2013 - werner@suse.de
- Do not pseudo detect Latin nor UTF-8 in binary attachments (bnc#827010)
- Add patch mailx-12.5-parentheses.dif, that is try to tranquilize
gcc due warning about parentheses (please check!)
------------------------------------------------------------------- -------------------------------------------------------------------
Tue Jun 25 11:58:06 UTC 2013 - coolo@suse.com Tue Jun 25 11:58:06 UTC 2013 - coolo@suse.com

View File

@ -39,6 +39,8 @@ Patch3: nail-11.25-ttychar.dif
Patch4: nail-11.25-toaddr.dif Patch4: nail-11.25-toaddr.dif
Patch5: mailx-%{version}-mime.dif Patch5: mailx-%{version}-mime.dif
Patch6: mailx-fix-openssl.patch Patch6: mailx-fix-openssl.patch
#PATCH-FIX-OPENSUSE: Try to tranquilize gcc warning about parentheses (please check!)
Patch7: mailx-12.5-parentheses.dif
BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description %description
@ -56,6 +58,7 @@ minor enhancements like the ability to set a "From:" address.
%patch4 -p0 -b .toaddr %patch4 -p0 -b .toaddr
%patch5 -p0 -b .mime %patch5 -p0 -b .mime
%patch6 -p0 -b .ssl %patch6 -p0 -b .ssl
%patch7 -p0 -b .par
%patch -p0 %patch -p0
%build %build