bug fixes:
list message 1.
give correct contents for raw, rawheader, rawbody.
provide filename and charset in mime attachments.
only rename mailboxes named mbox* not mbox*.
diff --git a/src/cmd/upas/nfs/fs.c b/src/cmd/upas/nfs/fs.c
index 228b53f..42ff265 100644
--- a/src/cmd/upas/nfs/fs.c
+++ b/src/cmd/upas/nfs/fs.c
@@ -55,6 +55,7 @@
Qdesc,
Qencoding, /* only here temporarily! */
Qcharset,
+ Qfilename,
Qraw,
Qrawheader,
Qrawbody,
@@ -69,7 +70,6 @@
Qheader,
Qdigest,
Qdisposition,
- Qfilename,
Qflags,
Qinfo,
Qrawunix,
@@ -488,6 +488,7 @@
case Qdesc:
case Qencoding:
case Qcharset:
+ case Qfilename:
case Qraw:
case Qrawheader:
case Qrawbody:
@@ -772,6 +773,7 @@
i--;
if(i == 0)
return filldir(d, Qsearch, box, nil, nil);
+ i--;
if(i < box->nsub)
return filldir(d, Qbox, box->sub[i], nil, nil);
i -= box->nsub;
@@ -798,6 +800,8 @@
static int mimedir[] = {
Qtype,
Qbody,
+ Qfilename,
+ Qcharset,
Qmimeheader,
Qraw
};
diff --git a/src/cmd/upas/nfs/imap.c b/src/cmd/upas/nfs/imap.c
index 1caa97b..e9d56b9 100644
--- a/src/cmd/upas/nfs/imap.c
+++ b/src/cmd/upas/nfs/imap.c
@@ -1201,6 +1201,14 @@
}
}
+static int
+alldollars(char *s)
+{
+ for(; *s; s++)
+ if(*s != '$')
+ return 0;
+ return 1;
+}
static void
xlist(Imap *z, Sx *sx)
@@ -1220,7 +1228,7 @@
* Rename any existing mbox by appending a $.
*/
inbox = 0;
- if(strncmp(s, "mbox", 4) == 0){
+ if(strncmp(s, "mbox", 4) == 0 && alldollars(s+4)){
t = emalloc(strlen(s)+2);
strcpy(t, s);
strcat(t, "$");
@@ -1588,6 +1596,7 @@
/* now name is something like 1 or 3.2.MIME - walk down parts from root */
part = msg->part[0];
+
while('1' <= name[0] && name[0] <= '9'){
i = strtol(name, &p, 10);
if(*p == '.')
@@ -1603,6 +1612,7 @@
name = p;
}
+
if(cistrcmp(name, "") == 0){
free(part->raw);
part->raw = nstring(v);