Commit Diff


commit - 7ac9b0e140bed0b34dc88674b3098caa5e193acf
commit + 2c7cc0faaf79742d021f72e103b4d828a581df4e
blob - e9a518ab1b925a1eee967cda4ac645930e9f9131
blob + dcea66fed2602c7d96b27189f0f369dfda581dd0
--- CHANGES
+++ CHANGES
@@ -1,3 +1,13 @@
+April 21, 2004
+	import assembler routines for libmp and libsec
+		on x86 from william josephson's tree
+
+	add truerand which uses /dev/random to seed PRG
+
+	add aescbc, astro, lex, and tcs
+
+	import man9 from william josephson's version of the port
+
 April 19, 2004
 
 	lots of man page updates.
blob - /dev/null
blob + a87030b354bd5195e1dec34b27d92e48ed0065d1 (mode 644)
--- /dev/null
+++ lib/lex/ncform
@@ -0,0 +1,184 @@
+#pragma lib	"libl.a"
+int yylineno =1;
+# define YYU(x) x
+char yytext[YYLMAX];
+struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp;
+Uchar yysbuf[YYLMAX];
+Uchar *yysptr = yysbuf;
+int *yyfnd;
+extern struct yysvf *yyestate;
+int yyprevious = YYNEWLINE;
+# ifdef LEXDEBUG
+extern void allprint(char);
+# endif
+yylook(void){
+	struct yysvf *yystate, **lsp;
+	struct yywork *yyt;
+	struct yysvf *yyz;
+	int yych;
+	struct yywork *yyr;
+# ifdef LEXDEBUG
+	int debug;
+# endif
+	Uchar *yylastch;
+	/* start off machines */
+# ifdef LEXDEBUG
+	debug = 0;
+# endif
+	if (!yymorfg)
+		yylastch = (Uchar*)yytext;
+	else {
+		yymorfg=0;
+		yylastch = (Uchar*)yytext+yyleng;
+		}
+	for(;;){
+		lsp = yylstate;
+		yyestate = yystate = yybgin;
+		if (yyprevious==YYNEWLINE) yystate++;
+		for (;;){
+# ifdef LEXDEBUG
+			if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1);
+# endif
+			yyt = yystate->yystoff;
+			if(yyt == yycrank){		/* may not be any transitions */
+				yyz = yystate->yyother;
+				if(yyz == 0)break;
+				if(yyz->yystoff == yycrank)break;
+				}
+			*yylastch++ = yych = input();
+		tryagain:
+# ifdef LEXDEBUG
+			if(debug){
+				fprintf(yyout,"char ");
+				allprint(yych);
+				putchar('\n');
+				}
+# endif
+			yyr = yyt;
+			if ( (int)yyt > (int)yycrank){
+				yyt = yyr + yych;
+				if (yyt <= yytop && yyt->verify+yysvec == yystate){
+					if(yyt->advance+yysvec == YYLERR)	/* error transitions */
+						{unput(*--yylastch);break;}
+					*lsp++ = yystate = yyt->advance+yysvec;
+					goto contin;
+					}
+				}
+# ifdef YYOPTIM
+			else if((int)yyt < (int)yycrank) {		/* r < yycrank */
+				yyt = yyr = yycrank+(yycrank-yyt);
+# ifdef LEXDEBUG
+				if(debug)fprintf(yyout,"compressed state\n");
+# endif
+				yyt = yyt + yych;
+				if(yyt <= yytop && yyt->verify+yysvec == yystate){
+					if(yyt->advance+yysvec == YYLERR)	/* error transitions */
+						{unput(*--yylastch);break;}
+					*lsp++ = yystate = yyt->advance+yysvec;
+					goto contin;
+					}
+				yyt = yyr + YYU(yymatch[yych]);
+# ifdef LEXDEBUG
+				if(debug){
+					fprintf(yyout,"try fall back character ");
+					allprint(YYU(yymatch[yych]));
+					putchar('\n');
+					}
+# endif
+				if(yyt <= yytop && yyt->verify+yysvec == yystate){
+					if(yyt->advance+yysvec == YYLERR)	/* error transition */
+						{unput(*--yylastch);break;}
+					*lsp++ = yystate = yyt->advance+yysvec;
+					goto contin;
+					}
+				}
+			if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){
+# ifdef LEXDEBUG
+				if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1);
+# endif
+				goto tryagain;
+				}
+# endif
+			else
+				{unput(*--yylastch);break;}
+		contin:
+# ifdef LEXDEBUG
+			if(debug){
+				fprintf(yyout,"state %d char ",yystate-yysvec-1);
+				allprint(yych);
+				putchar('\n');
+				}
+# endif
+			;
+			}
+# ifdef LEXDEBUG
+		if(debug){
+			fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1);
+			allprint(yych);
+			putchar('\n');
+			}
+# endif
+		while (lsp-- > yylstate){
+			*yylastch-- = 0;
+			if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){
+				yyolsp = lsp;
+				if(yyextra[*yyfnd]){		/* must backup */
+					while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){
+						lsp--;
+						unput(*yylastch--);
+						}
+					}
+				yyprevious = YYU(*yylastch);
+				yylsp = lsp;
+				yyleng = yylastch-(Uchar*)yytext+1;
+				yytext[yyleng] = 0;
+# ifdef LEXDEBUG
+				if(debug){
+					fprintf(yyout,"\nmatch '%s'", yytext);
+					fprintf(yyout," action %d\n",*yyfnd);
+					}
+# endif
+				return(*yyfnd++);
+				}
+			unput(*yylastch);
+			}
+		if (yytext[0] == 0  /* && feof(yyin) */)
+			{
+			yysptr=yysbuf;
+			return(0);
+			}
+		yyprevious = input();
+		yytext[0] = yyprevious;
+		if (yyprevious>0)
+			output(yyprevious);
+		yylastch = (Uchar*)yytext;
+# ifdef LEXDEBUG
+		if(debug)putchar('\n');
+# endif
+		}
+	return(0);	/* shut up the compiler; i have no idea what should be returned */
+	}
+yyback(int *p, int m)
+{
+if (p==0) return(0);
+while (*p)
+	{
+	if (*p++ == m)
+		return(1);
+	}
+return(0);
+}
+	/* the following are only used in the lex library */
+yyinput(void){
+	return(input());
+}
+void
+yyoutput(int c)
+{
+	output(c);
+}
+void
+yyunput(int c)
+{
+	unput(c);
+}
blob - ec43869a2e8f4ed597dff5be54d4d3393269c0b2
blob + a98978c6e43db3d59b1f2dbd9ff75dfa703174fc
--- src/cmd/lex/lmain.c
+++ src/cmd/lex/lmain.c
@@ -14,7 +14,7 @@ int	peek = '\n';	/* next input character */
 uchar	*pushptr = pushc;
 uchar	*slptr = slist;
 
-char	*cname = SYS9 "/sys/lib/lex/ncform";
+char	*cname;
 
 int nine;
 int ccount = 1;
@@ -95,6 +95,8 @@ main(int argc, char **argv)
 {
 	int i;
 
+	cname = unsharp("#9/lib/lex/ncform");
+
 	ARGBEGIN {
 # ifdef DEBUG
 		case 'd': debug++; break;
blob - a748409ff42d632958e40e11a00664bf8199fda3
blob + ffcf875d5e5e0306348a428a4bdc2467b01cc7d7
--- src/cmd/lex/mkfile
+++ src/cmd/lex/mkfile
@@ -1,7 +1,6 @@
 <$PLAN9/src/mkhdr
 
-#TARG=lex
-TARG=lex.9
+TARG=9lex
 OFILES=lmain.$O\
 	y.tab.$O\
 	sub1.$O\
blob - 350769ef07462b0a44b9dfc0abfbb84cb21d7bf1
blob + 477ca474b498ab081372bd7052a4bb6c0ab337f4
--- src/cmd/mkfile
+++ src/cmd/mkfile
@@ -6,7 +6,7 @@ SHORTLIB=sec fs mux regexp9 draw thread bio 9
 
 <$PLAN9/src/mkmany
 
-BUGGERED='CVS|faces|factotum|mailfs|mk|upas|vac|venti|lex'
+BUGGERED='CVS|faces|factotum|mailfs|mk|upas|vac|venti'
 DIRS=`ls -l |sed -n 's/^d.* //p' |egrep -v "^($BUGGERED)$"`
 
 <$PLAN9/src/mkdirs