From mboxrd@z Thu Jan 1 00:00:00 1970 MIME-Version: 1.0 In-Reply-To: References: <86ipx4s36p.fsf@cmarib.ramside> Date: Tue, 1 Feb 2011 06:02:23 -0300 Message-ID: From: "Federico G. Benavento" To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [9fans] RESOLVED: recoving important header file rudely Topicbox-Message-UUID: a6420a10-ead6-11e9-9d60-3106f5b1d025 lotte% 9fs sources lotte% diff /sys/src/cmd/rc/plan9.c /n/sources/plan9/sys/src/cmd/rc/plan9.c 446d445 < char *s; 468,474c467 < < s =3D dir[f].dbuf[dir[f].i].name; < if(strlen(s) >=3D NDIR){ < pfmt(err, "rc: file name too long: %s\n", s); < return 0; < } < strcpy(p, s); --- > strcpy(p, dir[f].dbuf[dir[f].i].name); lotte% mkdir trashdir && cd trashdir && mkdir x lotte% touch `{i=3D0; while (test $i -lt 128) { echo -n abcdefghijklmnop; i=3D`{echo $i+1|hoc} } } lotte% cp abc* abc* x file name too long: abcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijk= lmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdef= ghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopa= bcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijkl= mnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefg= hijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopab= cdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklm= nopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefgh= ijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabc= defghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmn= opabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghi= jklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcd= efghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmno= pabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghij= klmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcde= fghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnop= abcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijk= lmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdef= ghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopa= bcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijkl= mnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefg= hijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopab= cdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklm= nopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefgh= ijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabc= defghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmn= opabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghi= jklmnopabcdefghijklmnop file name too long: abcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijk= lmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdef= ghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopa= bcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijkl= mnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefg= hijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopab= cdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklm= nopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefgh= ijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabc= defghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmn= opabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghi= jklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcd= efghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmno= pabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghij= klmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcde= fghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnop= abcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijk= lmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdef= ghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopa= bcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijkl= mnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefg= hijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopab= cdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklm= nopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefgh= ijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabc= defghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmn= opabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghi= jklmnopabcdefghijklmnop cp: can't stat abc*: 'abc*' file does not exist cp: can't stat abc*: 'abc*' file does not exist lotte% rm abc* file name too long: abcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijk= lmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdef= ghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopa= bcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijkl= mnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefg= hijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopab= cdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklm= nopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefgh= ijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabc= defghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmn= opabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghi= jklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcd= efghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmno= pabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghij= klmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcde= fghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnop= abcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijk= lmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdef= ghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopa= bcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijkl= mnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefg= hijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopab= cdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklm= nopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefgh= ijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabc= defghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmn= opabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghijklmnopabcdefghi= jklmnopabcdefghijklmnop rm: abc*: 'abc*' file does not exist lotte% On Tue, Feb 1, 2011 at 5:37 AM, Akshat Kumar wrote: > Somehow a particular problem with a particular application > has degenerated into a rather unfair generalization of the > whole system: > >> Reading about Plan 9, I was quite excited to install it. =C2=A0I was qui= te >> excited when I first booted and ran it, too. =C2=A0But I distinctly felt= my >> heart sink a little the first time it hung. =C2=A0Since then, I've brows= ed >> some of the OS source code and, having done that, I came to understand >> why the system was so buggy. =C2=A0The core applications appear to be wr= itten >> in a style of C programming reminiscent of the dawn of UNIX. =C2=A0While= the >> operating system architecture is BEAUTIFULLY designed (with the >> exception, perhaps of that fossil/conf gotcha!), the C code used to >> implement it doesn't seem to take advantage of any of the programming >> paradigms that have emerged in the intervening 30 years... > > It would help the conversation if you described what these > new paradigms are. For instance, Plan 9 does not have any > code that's built upon any sort of functional programming > language. But again, that's not necessary. What practices > has everyone here missed, which would turn Plan 9 code > into gold? The argument seems a bit pretentious. > >> Getting Plan 9 code to crash is almost too easy: >> >> term% mkdir trashdir && cd trashdir && mkdir x >> term% touch `{i=3D0; while (test $i -lt 128) { echo -n abcdefghijklmnop;= i=3D`{echo $i+1|hoc} } } >> term% cp abc* abc* x >> # watch the cp executable suicide >> # now, make SURE there's nothing in this rio window that you want to kee= p... >> term% rm abc* >> # watch the rio window go bye bye! > > Sorry, this does not crash any Plan 9 code on my system. > How much data globbing should handle is a matter of practicality. > When rc dies, the rio window closes. > > > ak > > --=20 Federico G. Benavento