Hi Bakul. Long time since our Bay Area plan 9 hacking sessions. I've avoided the valley all together for a year and a half now. Not quite long enough yet.I thought the same thing, using ~0 for nil, but realized two things. First, that's a valid address on the PDP11 where the convention developed. It's the unibus space. Second, ~0 + member offest is still in page zero.By the way, are there any structs more than 4K in Linux? Are there any in plan 9?
Sent from my iPadUsing 0xfff...f instead of 0 for a null ptr might've been less "disgusting"!gcc is indeed a very sad tome. The mmap of 0 is disgusting. I like kenc. It just works. My behaviour this afternoon will be undefined but not as stupid as that of some programmers.
On 26/11/2015 5:43 AM, "Brantley Coile" <brantleycoile@me.com> wrote:Align it to column 7 and it looks like all the code I saw when I started.
iPhone emailNeither! It's what happens when you run sed 's/^\s*//' on your whole code base, yielding results like (from cmd/yacc.c):voidsetup(int argc, char *argv[]){long c, t;int i, j, fd, lev, ty, ytab, *p;int vflag, dflag, stem;char actnm[8], *stemc, *s, dirbuf[128];Biobuf *fout;ytab = 0;vflag = 0;dflag = 0;stem = 0;stemc = "y";foutput = 0;fdefine = 0;fdebug = 0;ARGBEGIN{case 'v':case 'V':vflag++;break;case 'D':yydebug = ARGF();break;case 'a':yyarg = 1;break;case 'd':dflag++;break;case 'l':yyline = 0;break;case 'o':ytab++;ytabc = ARGF();break;case 's':stem++;stemc = ARGF();break;case 'S':parser = PARSERS;break;default:error("illegal option: %c", ARGC());}ARGENDopenup(stemc, dflag, vflag, ytab, ytabc);fout = dflag?fdefine:ftable;if(yyarg){Bprint(ftable, "#define\tYYARG\t1\n\n");}if((fd = mkstemp(ttempname)) >= 0){tempname = ttempname;ftemp = Bfdopen(fd, OWRITE);}if((fd = mkstemp(tactname)) >= 0){actname = tactname;faction = Bfdopen(fd, OWRITE);}if(ftemp == 0 || faction == 0)error("cannot open temp file");if(argc < 1)error("no input file");infile = argv[0];if(infile[0] != '/' && getwd(dirbuf, sizeof dirbuf)!=nil){i = strlen(infile)+1+strlen(dirbuf)+1+10;s = malloc(i);if(s != nil){snprint(s, i, "%s/%s", dirbuf, infile);cleanname(s);infile = s;}}finput = Bopen(infile, OREAD);if(finput == 0)error("cannot open '%s'", argv[0]);cnamp = cnames;defin(0, "$end");extval = PRIVATE; /* tokens start in unicode 'private use' */defin(0, "error");defin(1, "$accept");defin(0, "$unk");mem = mem0;i = 0;for(t = gettok(); t != MARK && t != ENDFILE;)switch(t) {case ';':t = gettok();break;case START:if(gettok() != IDENTIFIER)error("bad %%start construction");start = chfind(1, tokname);t = gettok();continue;case TYPEDEF:if(gettok() != TYPENAME)error("bad syntax in %%type");ty = numbval;for(;;) {t = gettok();switch(t) {case IDENTIFIER:if((t=chfind(1, tokname)) < NTBASE) {j = TYPE(toklev[t]);if(j != 0 && j != ty)error("type redeclaration of token %s",tokset[t].name);elseSETTYPE(toklev[t], ty);} else {j = nontrst[t-NTBASE].value;if(j != 0 && j != ty)error("type redeclaration of nonterminal %s",nontrst[t-NTBASE].name );elsenontrst[t-NTBASE].value = ty;}case ',':continue;case ';':t = gettok();default:break;}break;}continue;case UNION:/* copy the union declaration to the output */cpyunion();t = gettok();continue;case LEFT:case BINARY:case RIGHT:i++;case TERM:/* nonzero means new prec. and assoc. */lev = t-TERM;ty = 0;/* get identifiers so defined */t = gettok();/* there is a type defined */if(t == TYPENAME) {ty = numbval;t = gettok();}for(;;) {switch(t) {case ',':t = gettok();continue;case ';':break;case IDENTIFIER:j = chfind(0, tokname);if(j >= NTBASE)error("%s defined earlier as nonterminal", tokname);if(lev) {if(ASSOC(toklev[j]))error("redeclaration of precedence of %s", tokname);SETASC(toklev[j], lev);SETPLEV(toklev[j], i);}if(ty) {if(TYPE(toklev[j]))error("redeclaration of type of %s", tokname);SETTYPE(toklev[j],ty);}t = gettok();if(t == NUMBER) {tokset[j].value = numbval;if(j < ndefout && j > 3)error("please define type number of %s earlier",tokset[j].name);t = gettok();}continue;}break;}continue;case LCURLY:defout(0);cpycode();t = gettok();continue;default:error("syntax error");}if(t == ENDFILE)error("unexpected EOF before %%");/* t is MARK */if(!yyarg)Bprint(ftable, "extern int yyerrflag;\n");Bprint(ftable, "#ifndef YYMAXDEPTH\n");Bprint(ftable, "#define YYMAXDEPTH 150\n");Bprint(ftable, "#endif\n" );if(!ntypes) {Bprint(ftable, "#ifndef YYSTYPE\n");Bprint(ftable, "#define YYSTYPE int\n");Bprint(ftable, "#endif\n");}if(!yyarg){Bprint(ftable, "YYSTYPE yylval;\n");Bprint(ftable, "YYSTYPE yyval;\n");}else{if(dflag)Bprint(ftable, "#include \"%s.%s\"\n\n", stemc, FILED);Bprint(fout, "struct Yyarg {\n");Bprint(fout, "\tint\tyynerrs;\n");Bprint(fout, "\tint\tyyerrflag;\n");Bprint(fout, "\tvoid*\targ;\n");Bprint(fout, "\tYYSTYPE\tyyval;\n");Bprint(fout, "\tYYSTYPE\tyylval;\n");Bprint(fout, "};\n\n");}prdptr[0] = mem;/* added production */*mem++ = NTBASE;/* if start is 0, we will overwrite with the lhs of the first rule */*mem++ = start;*mem++ = 1;*mem++ = 0;prdptr[1] = mem;while((t=gettok()) == LCURLY)cpycode();if(t != IDENTCOLON)error("bad syntax on first rule");if(!start)prdptr[0][1] = chfind(1, tokname);/* read rules */while(t != MARK && t != ENDFILE) {/* process a rule */rlines[nprod] = lineno;if(t == '|')*mem++ = *prdptr[nprod-1];elseif(t == IDENTCOLON) {*mem = chfind(1, tokname);if(*mem < NTBASE)error("token illegal on LHS of grammar rule");mem++;} elseerror("illegal rule: missing semicolon or | ?");/* read rule body */t = gettok();more_rule:while(t == IDENTIFIER) {*mem = chfind(1, tokname);if(*mem < NTBASE)levprd[nprod] = toklev[*mem];mem++;t = gettok();}if(t == PREC) {if(gettok() != IDENTIFIER)error("illegal %%prec syntax");j = chfind(2, tokname);if(j >= NTBASE)error("nonterminal %s illegal after %%prec",nontrst[j-NTBASE].name);levprd[nprod] = toklev[j];t = gettok();}if(t == '=') {levprd[nprod] |= ACTFLAG;Bprint(faction, "\ncase %d:", nprod);cpyact(mem-prdptr[nprod]-1);Bprint(faction, " break;");if((t=gettok()) == IDENTIFIER) {/* action within rule... */sprint(actnm, "$$%d", nprod);/* make it a nonterminal */j = chfind(1, actnm);/** the current rule will become rule number nprod+1* move the contents down, and make room for the null*/for(p = mem; p >= prdptr[nprod]; --p)p[2] = *p;mem += 2;/* enter null production for action */p = prdptr[nprod];*p++ = j;*p++ = -nprod;/* update the production information */levprd[nprod+1] = levprd[nprod] & ~ACTFLAG;levprd[nprod] = ACTFLAG;if(++nprod >= NPROD)error("more than %d rules", NPROD);prdptr[nprod] = p;/* make the action appear in the original rule */*mem++ = j;/* get some more of the rule */goto more_rule;}}while(t == ';')t = gettok();*mem++ = -nprod;/* check that default action is reasonable */if(ntypes && !(levprd[nprod]&ACTFLAG) && nontrst[*prdptr[nprod]-NTBASE].value) {/* no explicit action, LHS has value */int tempty;tempty = prdptr[nprod][1];if(tempty < 0)error("must return a value, since LHS has a type");elseif(tempty >= NTBASE)tempty = nontrst[tempty-NTBASE].value;elsetempty = TYPE(toklev[tempty]);if(tempty != nontrst[*prdptr[nprod]-NTBASE].value)error("default action causes potential type clash");}nprod++;if(nprod >= NPROD)error("more than %d rules", NPROD);prdptr[nprod] = mem;levprd[nprod] = 0;}/* end of all rules */defout(1);finact();if(t == MARK) {Bprint(ftable, "\n");if(yyline)Bprint(ftable, "#line\t%d\t\"%s\"\n", lineno, infile);while((c=Bgetrune(finput)) != Beof)Bputrune(ftable, c);}Bterm(finput);}On Wed, Nov 25, 2015 at 10:03 AM, <plannine@sigint.cs.purdue.edu> wrote:On Wed, Nov 25, 2015 at 09:25:55AM -0500, Brantley Coile wrote:
> unindented consequences
Is that a class of Python bugs or an awesome name for a Nerdcore band?
--Ryan[ERROR]: Your autotools build scripts are 200 lines longer than your program. Something’s wrong.