Browse Source

Plan 9 from Bell Labs 2003-03-13

David du Colombier 21 years ago
parent
commit
708a1673c6

+ 14 - 15
dist/replica/plan9.db

@@ -3195,7 +3195,7 @@ sys/doc/venti/venti.pdf - 755 sys sys 1020384352 139090
 sys/doc/venti/venti.ps - 664 sys sys 1019852320 2012620
 sys/games - 20000000775 sys sys 952648872 0
 sys/games/lib - 20000000775 sys sys 952648879 0
-sys/games/lib/fortunes - 664 sys sys 1046322489 238404
+sys/games/lib/fortunes - 664 sys sys 1047502111 238601
 sys/include - 20000000775 sys sys 1016902416 0
 sys/include/9p.h - 664 sys sys 1044836327 4309
 sys/include/String.h - 664 sys sys 1014929061 1133
@@ -10318,29 +10318,28 @@ sys/src/cmd/upas/common/process.c - 664 sys sys 1015009624 2984
 sys/src/cmd/upas/common/sys.h - 664 sys sys 1015009624 2195
 sys/src/cmd/upas/filterkit - 20000000775 sys sys 1018549521 0
 sys/src/cmd/upas/filterkit/dat.h - 664 sys sys 1018549520 107
-sys/src/cmd/upas/filterkit/deliver.c - 664 sys sys 1045505683 1338
+sys/src/cmd/upas/filterkit/deliver.c - 664 sys sys 1047490349 1415
 sys/src/cmd/upas/filterkit/list.c - 664 sys sys 1020313488 4751
-sys/src/cmd/upas/filterkit/mkfile - 664 sys sys 1031707322 264
-sys/src/cmd/upas/filterkit/myupassend.sample - 775 sys sys 1019854294 380
+sys/src/cmd/upas/filterkit/mkfile - 664 sys sys 1047490348 266
 sys/src/cmd/upas/filterkit/pipefrom.sample - 775 sys sys 1041184939 380
 sys/src/cmd/upas/filterkit/pipeto.sample - 664 sys sys 1045505695 1765
 sys/src/cmd/upas/filterkit/pipeto.sample-hold - 664 sys sys 1019837081 872
 sys/src/cmd/upas/filterkit/readaddrs.c - 664 sys sys 1018549521 1381
 sys/src/cmd/upas/filterkit/token.c - 664 sys sys 1018549521 1312
 sys/src/cmd/upas/fs - 20000000775 sys sys 988250018 0
-sys/src/cmd/upas/fs/dat.h - 664 sys sys 1045505919 4257
+sys/src/cmd/upas/fs/dat.h - 664 sys sys 1047490337 4267
 sys/src/cmd/upas/fs/fs.c - 664 sys sys 1045505917 27332
-sys/src/cmd/upas/fs/imap4.c - 664 sys sys 1034304931 16065
-sys/src/cmd/upas/fs/mbox.c - 664 sys sys 1037468640 27958
-sys/src/cmd/upas/fs/mkfile - 664 sys sys 1036687593 349
-sys/src/cmd/upas/fs/plan9.c - 664 sys sys 1016466465 7461
-sys/src/cmd/upas/fs/pop3.c - 664 sys sys 1014926517 11299
+sys/src/cmd/upas/fs/imap4.c - 664 sys sys 1047490338 16071
+sys/src/cmd/upas/fs/mbox.c - 664 sys sys 1047490342 28282
+sys/src/cmd/upas/fs/mkfile - 664 sys sys 1047490336 321
+sys/src/cmd/upas/fs/plan9.c - 664 sys sys 1047490343 7464
+sys/src/cmd/upas/fs/pop3.c - 664 sys sys 1047490344 11465
 sys/src/cmd/upas/fs/readdir.c - 664 sys sys 944961331 203
 sys/src/cmd/upas/fs/strtotm.c - 664 sys sys 1041137528 1904
 sys/src/cmd/upas/fs/tester.c - 664 sys sys 985037420 1418
 sys/src/cmd/upas/marshal - 20000000775 sys sys 1015009721 0
-sys/src/cmd/upas/marshal/marshal.c - 664 sys sys 1045505877 32205
-sys/src/cmd/upas/marshal/mkfile - 664 sys sys 1031707318 279
+sys/src/cmd/upas/marshal/marshal.c - 664 sys sys 1047490296 32266
+sys/src/cmd/upas/marshal/mkfile - 664 sys sys 1047490298 235
 sys/src/cmd/upas/misc - 20000000775 sys sys 944961318 0
 sys/src/cmd/upas/misc/gone.fishing - 664 sys sys 944961318 313
 sys/src/cmd/upas/misc/gone.msg - 664 sys sys 944961318 236
@@ -10400,7 +10399,7 @@ sys/src/cmd/upas/send/skipequiv.c - 664 sys sys 944961322 1747
 sys/src/cmd/upas/send/translate.c - 664 sys sys 944961322 804
 sys/src/cmd/upas/send/tryit - 664 sys sys 944961322 584
 sys/src/cmd/upas/smtp - 20000000775 sys sys 988250017 0
-sys/src/cmd/upas/smtp/mkfile - 664 sys sys 1035832995 762
+sys/src/cmd/upas/smtp/mkfile - 664 sys sys 1047490346 734
 sys/src/cmd/upas/smtp/mxdial.c - 664 sys sys 1015013150 4535
 sys/src/cmd/upas/smtp/rfc822.y - 664 sys sys 1018974179 12512
 sys/src/cmd/upas/smtp/rmtdns.c - 664 sys sys 1015013150 1069
@@ -10579,7 +10578,7 @@ sys/src/cmd/vnc/auth.c - 664 sys sys 1044880749 4245
 sys/src/cmd/vnc/chan.c - 664 sys sys 1044880749 2624
 sys/src/cmd/vnc/color.c - 664 sys sys 1044880749 3088
 sys/src/cmd/vnc/compat.c - 664 sys sys 1044880749 3122
-sys/src/cmd/vnc/compat.h - 664 sys sys 1044880749 3401
+sys/src/cmd/vnc/compat.h - 664 sys sys 1047512521 3425
 sys/src/cmd/vnc/dev.c - 664 sys sys 1044880749 5496
 sys/src/cmd/vnc/devcons.c - 664 sys sys 1045758532 6978
 sys/src/cmd/vnc/devdraw.c - 664 sys sys 1044880749 42068
@@ -10591,7 +10590,7 @@ sys/src/cmd/vnc/exporter.c - 664 sys sys 1044880749 1312
 sys/src/cmd/vnc/exportfs.c - 664 sys sys 1045529366 13666
 sys/src/cmd/vnc/kbd.h - 664 sys sys 1044880749 301
 sys/src/cmd/vnc/kbds.c - 664 sys sys 1044880749 3254
-sys/src/cmd/vnc/kbdv.c - 664 sys sys 1044880749 2383
+sys/src/cmd/vnc/kbdv.c - 664 sys sys 1047512524 3513
 sys/src/cmd/vnc/latin1.c - 664 sys sys 1044880749 1410
 sys/src/cmd/vnc/latin1.h - 664 sys sys 1044880750 3524
 sys/src/cmd/vnc/mkfile - 664 sys sys 1045529367 661

+ 15 - 0
dist/replica/plan9.log

@@ -18568,3 +18568,18 @@
 1047322832 0 d sys/src/9/boot/libboot.a8 - 664 sys sys 1047260766 0
 1047403889 0 c sys/src/libsec/port/x509.c - 664 sys sys 1047403870 50248
 1047405689 0 c sys/src/libsec/port/x509.c - 664 sys sys 1047404307 50237
+1047490250 0 c sys/src/cmd/upas/marshal/marshal.c - 664 sys sys 1047490296 32266
+1047490250 1 c sys/src/cmd/upas/marshal/mkfile - 664 sys sys 1047490298 235
+1047492050 0 c sys/src/cmd/upas/filterkit/deliver.c - 664 sys sys 1047490349 1415
+1047492050 1 c sys/src/cmd/upas/filterkit/mkfile - 664 sys sys 1047490348 266
+1047492050 2 c sys/src/cmd/upas/fs/dat.h - 664 sys sys 1047490337 4267
+1047492050 3 c sys/src/cmd/upas/fs/imap4.c - 664 sys sys 1047490338 16071
+1047492050 4 c sys/src/cmd/upas/fs/mbox.c - 664 sys sys 1047490342 28282
+1047492050 5 c sys/src/cmd/upas/fs/mkfile - 664 sys sys 1047490336 321
+1047492050 6 c sys/src/cmd/upas/fs/plan9.c - 664 sys sys 1047490343 7464
+1047492050 7 c sys/src/cmd/upas/fs/pop3.c - 664 sys sys 1047490344 11465
+1047492050 8 c sys/src/cmd/upas/smtp/mkfile - 664 sys sys 1047490346 734
+1047492050 9 d sys/src/cmd/upas/filterkit/myupassend.sample - 775 sys sys 1019854294 0
+1047502864 0 c sys/games/lib/fortunes - 664 sys sys 1047502111 238601
+1047513673 0 c sys/src/cmd/vnc/compat.h - 664 sys sys 1047512521 3425
+1047513673 1 c sys/src/cmd/vnc/kbdv.c - 664 sys sys 1047512524 3513

+ 3 - 0
sys/games/lib/fortunes

@@ -3863,3 +3863,6 @@ Where would Christianity be if Jesus got eight to fifteen years, with time off f
 rsc            5202    0:00   0:00 1710768K Rendez   8.portmapd
 http://www.fortunecookieadvertising.com
 A short stranger will soon enter your life.
+Click Here to GET the penis you want today!!!
+The envMaxSize field is the environment file size. It must not exceed envMaxSize.
+parser.h:16: ISO C++ forbids declaration of `ConsumeOffendingSymbol'

+ 7 - 2
sys/src/cmd/upas/filterkit/deliver.c

@@ -1,5 +1,4 @@
-#include <u.h>
-#include <libc.h>
+#include "sys.h"
 #include "dat.h"
 
 void
@@ -20,6 +19,7 @@ main(int argc, char **argv)
 	char *deliveredto;
 	char last;
 	char *str;
+	Mlock *l;
 
 	ARGBEGIN{
 	}ARGEND;
@@ -36,6 +36,10 @@ main(int argc, char **argv)
 	if(a == nil)
 		sysfatal("missing from address");
 
+	l = syslock(argv[2]);
+	if(l == 0)
+		sysfatal("can't grab lock");
+
 	/* append to mbox */
 	fd = open(argv[2], OWRITE);
 	if(fd < 0)
@@ -65,6 +69,7 @@ main(int argc, char **argv)
 	if(write(fd, str, strlen(str)) < 0)
 		sysfatal("writing mailbox: %r");
 	close(fd);
+	sysunlock(l);
 
 	/* log it */
 	syslog(0, "mail", "delivered %s From %s %s (%s) %d", deliveredto,

+ 2 - 1
sys/src/cmd/upas/filterkit/mkfile

@@ -5,12 +5,13 @@ TARG=\
 	list\
 	deliver\
 
+LIB=../common/libcommon.a$O\
+
 BIN=/$objtype/bin/upas
 OFILES=readaddrs.$O
 UPDATE=\
 	mkfile\
 	${TARG:%=%.c}\
-	${TARG:%=/386/bin/upas/%}\
 	myupassend.sample\
 	pipeto.sample\
 	pipeto.sample-hold\

+ 0 - 24
sys/src/cmd/upas/filterkit/myupassend.sample

@@ -1,24 +0,0 @@
-#!/bin/rc
-
-rfork e
-TMP=/tmp/myupassend.$pid
-
-# collect upas/send options
-options=()
-while (! ~ $#* 0 && ~ $1 -*) {
-	options=($options $1);
-	shift
-}
-
-# collect addresses and add them to my patterns
-dests=()
-while (! ~ $#* 0) {
-	dests=($dests $1);
-	shift
-}
-echo $dests > $TMP
-upas/list add /mail/box/$user/_pattern $TMP >[2] /dev/null
-rm $TMP
-
-# send mail
-upas/send $options $dests

+ 2 - 2
sys/src/cmd/upas/fs/dat.h

@@ -138,8 +138,8 @@ int		decquoted(char*, char*, char*);
 int		xtoutf(char*, char**, char*, char*);
 void		countlines(Message*);
 int		headerlen(Message*);
-void		parse(Message*, int, Mailbox*);
-void		parseheaders(Message*, int, Mailbox*);
+void		parse(Message*, int, Mailbox*, int);
+void		parseheaders(Message*, int, Mailbox*, int);
 void		parsebody(Message*, Mailbox*);
 void		parseunix(Message*);
 String*	date822tounix(char*);

+ 2 - 2
sys/src/cmd/upas/fs/imap4.c

@@ -454,7 +454,7 @@ imap4fetchheader(Imap *imap, Mailbox *mb, Message *m)
 	imap->base = nil;
 	imap->data = nil;
 
-	parseheaders(m, 0, mb);
+	parseheaders(m, 0, mb, 1);
 
 	// digest headers
 	sha1((uchar*)m->start, m->hend - m->start, m->digest, nil);
@@ -524,7 +524,7 @@ imap4fetch(Mailbox *mb, Message *m)
 	imap->base = nil;
 	imap->data = nil;
 
-	parse(m, 0, mb);
+	parse(m, 0, mb, 1);
 
 	// digest headers
 	sha1((uchar*)m->start, m->end - m->start, m->digest, nil);

+ 24 - 12
sys/src/cmd/upas/fs/mbox.c

@@ -232,7 +232,7 @@ parseunix(Message *m)
  *  parse a message
  */
 void
-parseheaders(Message *m, int justmime, Mailbox *mb)
+parseheaders(Message *m, int justmime, Mailbox *mb, int addfrom)
 {
 	String *hl;
 	Header *h;
@@ -318,6 +318,16 @@ parseheaders(Message *m, int justmime, Mailbox *mb)
 
 	if(m->unixheader != nil)
 		s_free(m->unixheader);
+
+	// only fake header for top-level messages for pop3 and imap4
+	// clients (those protocols don't include the unix header).
+	// adding the unix header all the time screws up mime-attached
+	// rfc822 messages.
+	if(!addfrom && !m->unixfrom){
+		m->unixheader = nil;
+		return;
+	}
+
 	m->unixheader = s_copy("From ");
 	if(m->unixfrom)
 		s_append(m->unixheader, s_to_c(m->unixfrom));
@@ -374,9 +384,9 @@ parsebody(Message *m, Mailbox *mb)
 }
 
 void
-parse(Message *m, int justmime, Mailbox *mb)
+parse(Message *m, int justmime, Mailbox *mb, int addfrom)
 {
-	parseheaders(m, justmime, mb);
+	parseheaders(m, justmime, mb, addfrom);
 	parsebody(m, mb);
 }
 
@@ -425,7 +435,7 @@ parseattachments(Message *m, Mailbox *mb)
 			l = &nm->next;
 		}
 		for(nm = m->part; nm != nil; nm = nm->next)
-			parse(nm, 1, mb);
+			parse(nm, 1, mb, 0);
 		return;
 	}
 
@@ -435,7 +445,7 @@ parseattachments(Message *m, Mailbox *mb)
 		m->part = nm;
 		nm->start = nm->header = nm->body = nm->rbody = m->body;
 		nm->end = nm->bend = nm->rbend = m->bend;
-		parse(nm, 0, mb);
+		parse(nm, 0, mb, 0);
 	}
 }
 
@@ -1515,14 +1525,16 @@ nullsqueeze(Message *m)
 {
 	char *p, *q;
 
-	for(p = m->body; p < m->end; p = q){
-		q = memchr(p, 0, m->end-p);
-		if(q == nil)
-			break;
-		memmove(q, q+1, m->end - q - 1);
-		m->end--;
+	q = memchr(m->body, 0, m->end-m->body);
+	if(q == nil)
+		return;
+
+	for(p = m->body; q < m->end; q++){
+		if(*q == 0)
+			continue;
+		*p++ = *q;
 	}
-	m->bend = m->rbend = m->bend;
+	m->bend = m->rbend = m->end = p;
 }
 
 

+ 0 - 1
sys/src/cmd/upas/fs/mkfile

@@ -22,7 +22,6 @@ UPDATE=\
 	$HFILES\
 	${TARG:%=%.c}\
 	${OFILES:%.$O=%.c}\
-	${TARG:%=/386/bin/upas/%}\
 
 </sys/src/cmd/mkone
 CFLAGS=$CFLAGS -I/sys/include -I../common

+ 1 - 1
sys/src/cmd/upas/fs/plan9.c

@@ -268,7 +268,7 @@ retry:
 			m->header = x + 1;
 		m->mheader = m->mhend = m->header;
 		parseunix(m);
-		parse(m, 0, mb);
+		parse(m, 0, mb, 0);
 		logmsg("new", m);
 
 		/* chain in */

+ 14 - 1
sys/src/cmd/upas/fs/pop3.c

@@ -90,6 +90,18 @@ pop3resp(Pop *pop)
 	return s;
 }
 
+static int
+pop3log(char *fmt, ...)
+{
+	va_list ap;
+
+	va_start(ap,fmt);
+	syslog(0, "/sys/log/pop3", fmt, ap);
+	va_end(ap);
+	return 0;
+}
+
+
 //
 // get capability list, possibly start tls
 //
@@ -121,6 +133,7 @@ pop3capa(Pop *pop)
 		if(!isokay(s = pop3resp(pop)))
 			return s;
 		memset(&conn, 0, sizeof conn);
+		// conn.trace = pop3log;
 		fd = tlsClient(pop->fd, &conn);
 		if(fd < 0)
 			sysfatal("tlsClient: %r");
@@ -441,7 +454,7 @@ pop3read(Pop *pop, Mailbox *mb, int doplumb)
 			continue;
 		}
 		nnew++;
-		parse(m, 0, mb);
+		parse(m, 0, mb, 1);
 
 		if(doplumb)
 			mailplumb(mb, m, 0);

+ 6 - 3
sys/src/cmd/upas/marshal/marshal.c

@@ -396,8 +396,11 @@ main(int argc, char **argv)
 		attachment(a, &out);
 	}
 
-	if(first != nil)
+	if(first != nil){
+		if(lastchar != '\n')
+			Bprint(&out, "\n");
 		Bprint(&out, "--%s--\n", boundary);
+	}
 
 	Bterm(&out);
 	close(fd);
@@ -524,7 +527,7 @@ readheaders(Biobuf *in, int *fp, String **sp, Addr **top)
 	return Ok;
 }
 
-// pass the body to sendmail, make sure body starts with a newline
+// pass the body to sendmail, make sure body starts and ends with a newline
 void
 body(Biobuf *in, Biobuf *out, int docontenttype)
 {
@@ -562,7 +565,7 @@ body(Biobuf *in, Biobuf *out, int docontenttype)
 				break;
 			n += i;
 			for(; i > 0; i--)
-				if(*p++ & 0x80 && docontenttype){
+				if((*p++ & 0x80) && docontenttype){
 					Bprint(out, "Content-Type: text/plain; charset=\"UTF-8\"\n");
 					Bprint(out, "Content-Transfer-Encoding: 8bit\n");
 					docontenttype = 0;

+ 1 - 3
sys/src/cmd/upas/marshal/mkfile

@@ -12,10 +12,8 @@ BIN=/$objtype/bin/upas
 
 UPDATE=\
 	mkfile\
-	${TARG:%=%.c}\
-	${OFILES:%.$O=%.c}\
-	${TARG:%=/386/bin/upas/%}\
 	$HFILES\
+	${OFILES:%.$O=%.c}\
 	
 </sys/src/cmd/mkone
 CFLAGS=$CFLAGS -I../common

+ 0 - 1
sys/src/cmd/upas/smtp/mkfile

@@ -18,7 +18,6 @@ UPDATE=\
 	${OFILES:%.$O=%.c}\
 	smtpd.y\
 	${TARG:%=%.c}\
-	${TARG:%=/386/bin/upas/%}\
 
 </sys/src/cmd/mkmany
 CFLAGS=$CFLAGS -I../common -D'SPOOL="/mail"'

+ 2 - 0
sys/src/cmd/vnc/compat.h

@@ -1,3 +1,5 @@
+#define Rendez KRendez
+
 typedef struct Block	Block;
 typedef struct Chan	Chan;
 typedef struct Cname	Cname;

+ 34 - 4
sys/src/cmd/vnc/kbdv.c

@@ -42,6 +42,25 @@ static struct {
 	{KF|12,	0xffc9},
 };
 
+static char shiftkey[128] = {
+	0, 0, 0, 0, 0, 0, 0, 0, /* nul soh stx etx eot enq ack bel */
+	0, 0, 0, 0, 0, 0, 0, 0, /* bs ht nl vt np cr so si */
+	0, 0, 0, 0, 0, 0, 0, 0, /* dle dc1 dc2 dc3 dc4 nak syn etb */
+	0, 0, 0, 0, 0, 0, 0, 0, /* can em sub esc fs gs rs us */
+	0, 1, 1, 1, 1, 1, 1, 0, /* sp ! " # $ % & ' */
+	1, 1, 1, 1, 0, 0, 0, 0, /* ( ) * + , - . / */
+	0, 0, 0, 0, 0, 0, 0, 0, /* 0 1 2 3 4 5 6 7 */
+	0, 0, 1, 0, 1, 0, 1, 1, /* 8 9 : ; < = > ? */
+	1, 1, 1, 1, 1, 1, 1, 1, /* @ A B C D E F G */
+	1, 1, 1, 1, 1, 1, 1, 1, /* H I J K L M N O */
+	1, 1, 1, 1, 1, 1, 1, 1, /* P Q R S T U V W */
+	1, 1, 1, 0, 0, 0, 1, 1, /* X Y Z [ \ ] ^ _ */
+	0, 0, 0, 0, 0, 0, 0, 0, /* ` a b c d e f g */
+	0, 0, 0, 0, 0, 0, 0, 0, /* h i j k l m n o */
+	0, 0, 0, 0, 0, 0, 0, 0, /* p q r s t u v w */
+	0, 0, 0, 1, 1, 1, 1, 0, /* x y z { | } ~ del  */
+};
+
 ulong
 runetoksym(Rune r)
 {
@@ -114,11 +133,22 @@ readkbd(Vnc *v)
 				keyevent(v, r+0x60, 1);	/* 0x60: make capital letter */
 				keyevent(v, r+0x60, 0);
 				keyevent(v, Xctl, 0);
-			} else	{
+			}else{
+				/*
+				 * to send an upper case letter or shifted
+				 * punctuation, mac os x vnc server,
+				 * at least, needs a `shift' sent first.
+				 */
+				if(!shift && r == ks && r < sizeof shiftkey && shiftkey[r]){
+					shift = 1;
+					keyevent(v, Xshift, 1);
+				}
 				keyevent(v, ks, 1);
-				keyevent(v, ks, 0);	/* vmware does autorepeat,
-							   shut it up with an UP
-							*/
+				/*
+				 * up event needed by vmware inside linux vnc server,
+				 * perhaps others.
+				 */
+				keyevent(v, ks, 0);
 			}
 
 			if(alt){