commit 0df4c01ecab67c56ef701997189a281bc3cb303d from: rsc date: Tue Feb 14 19:44:29 2006 UTC forgot this commit - 1a8bd157b665a7ef92f490430ba6b1eb7484b1e6 commit + 0df4c01ecab67c56ef701997189a281bc3cb303d blob - d4685000e985feaf1d988247a300dd524d96c5da blob + 2e24c121145f4c19c00a194394f0cbc1aa6d1af4 --- src/cmd/upas/marshal/marshal.c +++ src/cmd/upas/marshal/marshal.c @@ -811,6 +811,18 @@ printinreplyto(Biobuf *out, char *dir) return -1; buf[n] = 0; return Bprint(out, "In-Reply-To: %s\n", buf); +} + +int +mopen(char *file, int mode) +{ + int fd; + + if((fd = open(file, mode)) >= 0) + return fd; + if(strncmp(file, "Mail/", 5) == 0 && mountmail() >= 0 && (fd = fsopenfd(mailfs, file+5, mode)) >= 0) + return fd; + return -1; } Attach* @@ -824,11 +836,8 @@ mkattach(char *file, char *type, int inline) if(file == nil) return nil; - if((fd = open(file, OREAD)) < 0) - if(strncmp(file, "Mail/", 5) != 0 || mountmail() < 0 || (fd = fsopenfd(mailfs, file+5, OREAD)) < 0){ - fprint(2, "%s: %s can't read file\n", argv0, file); + if((fd = mopen(file, OREAD)) < 0) return nil; - } a = emalloc(sizeof(*a)); a->fd = fd; a->path = file; @@ -877,11 +886,12 @@ mkattach(char *file, char *type, int inline) if(pipe(pfd) < 0) return a; - xfd[0] = pfd[0]; + xfd[0] = mopen(file, OREAD); xfd[1] = pfd[0]; xfd[2] = dup(2, -1); - if((pid=threadspawnl(xfd, unsharp("#9/bin/file"), "file", "-m", file, nil)) < 0){ + if((pid=threadspawnl(xfd, unsharp("#9/bin/file"), "file", "-m", nil)) < 0){ close(xfd[0]); + close(xfd[1]); close(xfd[2]); return a; } @@ -892,6 +902,7 @@ mkattach(char *file, char *type, int inline) ftype[n-1] = 0; a->type = estrdup(ftype); } +fprint(2, "got type %s\n", a->type); close(pfd[1]); procwait(pid);