diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-01-27 19:02:31 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-01-27 19:02:31 +0100 |
commit | 26193c4bffcb9af25d1a48537b79b939863cbde8 (patch) | |
tree | c7d4bc35719f507efbb121208315bf57cd66a152 /sys | |
parent | a863cf8e7e63b40f4cd52909b7b625912d41309c (diff) |
upas/fs: try to deal with nil mail body (can happen when fetch fails)
Diffstat (limited to 'sys')
-rw-r--r-- | sys/src/cmd/upas/fs/fs.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/sys/src/cmd/upas/fs/fs.c b/sys/src/cmd/upas/fs/fs.c index fbb8fd028..9f7ba2b64 100644 --- a/sys/src/cmd/upas/fs/fs.c +++ b/sys/src/cmd/upas/fs/fs.c @@ -67,6 +67,7 @@ char Ename[] = "illegal name"; char Ebadctl[] = "unknown control message"; char Ebadargs[] = "invalid arguments"; char Enotme[] = "path not served by this file server"; +char Eio[] = "I/O error"; char *dirtab[] = { [Qdir] ".", @@ -424,7 +425,7 @@ fileinfo(Mailbox *mb, Message *m, int t, char **pp) break; case Qdate: p = m->date822; - if(!p){ + if(p == nil){ p = buf; len = snprint(buf, sizeof buf, "%#Δ", m->fileid); } @@ -442,14 +443,13 @@ fileinfo(Mailbox *mb, Message *m, int t, char **pp) p = m->messageid; break; case Qfrom: - if(m->from) + if(m->from != nil) p = m->from; else p = m->unixfrom; break; case Qffrom: - if(m->ffrom) - p = m->ffrom; + p = m->ffrom; break; case Qlines: len = snprint(buf, sizeof buf, "%lud", m->lines); @@ -458,7 +458,8 @@ fileinfo(Mailbox *mb, Message *m, int t, char **pp) case Qraw: cachebody(mb, m); p = m->start; - if(strncmp(m->start, "From ", 5) == 0) + if(p != nil) + if(strncmp(p, "From ", 5) == 0) if(e = strchr(p, '\n')) p = e + 1; len = m->rbend - p; @@ -521,7 +522,6 @@ fileinfo(Mailbox *mb, Message *m, int t, char **pp) break; case Qtype: p = m->type; - len = strlen(m->type); break; case Qunixdate: p = buf; @@ -947,7 +947,8 @@ ropen(Fid *f) /* make sure we've decoded */ if(file == Qbody){ - cachebody(f->mb, f->m); + if(cachebody(f->mb, f->m) == -1) + return Eio; decode(f->m); convert(f->m); putcache(f->mb, f->m); |