fix quoted-printable (_ means space only in rfc2047)
diff --git a/src/cmd/upas/nfs/a.h b/src/cmd/upas/nfs/a.h
index d565b02..3c81deb 100644
--- a/src/cmd/upas/nfs/a.h
+++ b/src/cmd/upas/nfs/a.h
@@ -31,6 +31,7 @@
 {
 	NoEncoding,
 	QuotedPrintable,
+	QuotedPrintableU,
 	Base64,
 };
 
diff --git a/src/cmd/upas/nfs/decode.c b/src/cmd/upas/nfs/decode.c
index 0e46dbf..a98ad8a 100644
--- a/src/cmd/upas/nfs/decode.c
+++ b/src/cmd/upas/nfs/decode.c
@@ -21,7 +21,7 @@
 }
 
 int
-decqp(uchar *out, int lim, char *in, int n)
+_decqp(uchar *out, int lim, char *in, int n, int underscores)
 {
 	char *p, *ep;
 	uchar *eout, *out0;
@@ -29,7 +29,7 @@
 	out0 = out;
 	eout = out+lim;
 	for(p=in, ep=in+n; p<ep && out<eout; ){
-		if(*p == '_'){
+		if(underscores && *p == '_'){
 			*out++ = ' ';
 			p++;
 		}
@@ -50,6 +50,12 @@
 	return out-out0;
 }
 
+int
+decqp(uchar *out, int lim, char *in, int n)
+{
+	return _decqp(out, lim, in, n, 0);
+}
+
 char*
 decode(int kind, char *s, int *len)
 {
@@ -59,10 +65,11 @@
 	if(s == nil)
 		return s;
 	switch(kind){
-	case QuotedPrintable:
+	case QuotedPrintable
+	case QuotedPrintableU:
 		l = strlen(s)+1;
 		t = emalloc(l);
-		l = decqp((uchar*)t, l, s, l-1);
+		l = decqp((uchar*)t, l, s, l-1, kind==QuotedPrintableU);
 		*len = l;
 		t[l] = 0;
 		return t;
@@ -202,7 +209,7 @@
 			case 'q':
 			case 'Q':
 				*u = 0;
-				v = decode(QuotedPrintable, t, &len);
+				v = decode(QuotedPrintableU, t, &len);
 				break;
 			case 'b':
 			case 'B':