From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from spring.ibm.it ([194.196.12.228]) by hawkwind.utcs.toronto.edu with SMTP id <25787>; Mon, 8 May 2000 18:52:02 -0400 Received: from localhost ([194.196.12.130]) by spring.ibm.it (Post.Office MTA v3.1 release PO203a ID# 167-37756U2010L100S0) with ESMTP id AAA39894 for ; Mon, 8 May 2000 17:01:23 +0200 Received: from carlos by localhost with local (Exim 2.05 #1 (Debian)) id 12onZq-0003L8-00; Mon, 8 May 2000 15:28:02 +0200 Date: Mon, 8 May 2000 09:28:02 -0400 From: Carlo Strozzi To: rc@hawkwind.utcs.toronto.edu Subject: Re: building rc on QNX4 Message-ID: <20000508152802.A12803@polka.mi.linux.it> Reply-To: carlos@texne.com Mail-Followup-To: rc@hawkwind.utcs.toronto.edu References: <20000504171816.B12075@polka.mi.linux.it> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="45Z9DzgjV8m4Oswq" X-Mailer: Mutt 1.0i In-Reply-To: ; from tjg@star.le.ac.uk on Mon, May 08, 2000 at 04:29:54AM -0400 Organization: TeXne.COM --45Z9DzgjV8m4Oswq Content-Type: text/plain; charset=us-ascii On Mon, May 08, 2000 at 04:29:54AM -0400, Tim Goodwin wrote: >> A more important issue IMHO is whether Rc should provide a built-in >> read function, similar to the one offered by most Bourne shells; > >There is no *need* to make `read' a builtin: see the EXAMPLES file in >the distribution for an alternative. One of rc's design goals is to >avoid unnecessary builtins. So, no, I don't think this is likely to >happen. > Unfortunately the example provided does not work the way 'read' does, and is an extra-process that needs to be spawned for each input line. >> one is whether it will ever make it possible not to export everything to >> the environment by default. > >I brought this up a few months ago, and the consensus seemed to be that >the current scheme works well enough in practice. Have you encountered >a problem? hmm ... not really. Mine is just a general concern. Currently I initialize every variable that I'm going to use in a script, right at the beginning of the program, somewhat like what you do with C whan you declare things first. That is because unless I maintain a global name-space I never know what a variable is going to contain when the program is called. Having a clean environment would be desirable in general. Anyway, the above is another minor issue, it may as well be that the current scheme is ok. What I _really_ miss is a 'read', or 'line', function, for record-oriented input, and I think this feeling is shared also by others. While things like 'test' are rarely called inside a loop, reading lines from a file is the opposite, and spawning an external process on each line sucks, especially when one uses the shell for writing Web CGI scripts, like I do. Beside all that, I am a long-time (Bourne) shell user, and I whish I had uncovered rc before :-) Anyway, just to give my two-cent and not just ask for things :-), here are a couple of functions to emulate often-used external processes like basename(1) and dirname(1). I've tried to mimic the respective utilities as closely as I could. Bug-fixes are welcome :-) bye -carlo -- I can read MIME or uuencoded e-mail attachments in PDF, Postscript, HTML, RTF or text formats. Please do not send Word or Excel files. --45Z9DzgjV8m4Oswq Content-Type: text/plain Content-Disposition: attachment; filename="rcstuff.txt" # # Emulate dirname(1) # fn DirName { ~ $1 () && { echo DirName: too few arguments >[1=2] ; return 1 } ~ $1 '' .* && { echo . ; return } ~ $1 / && { echo / ; return } x=() y=() { x = ``(/) {echo -n $1} ~ $1 /* && ~ $x(2) () && { echo / ; return } ~ $x(2) () && { echo . ; return } * = $x while (!~ $#* 0 1) { y = $y/$1 ; shift } echo $y } } # # Emulate basename(1) # fn BaseName { ~ $1 () && { echo BaseName: too few arguments >[1=2] ; return 1 } ~ $1 '' / && return x = () { x = ``(/) {echo -n $1} echo $x($#x) } } # End of stuff. --45Z9DzgjV8m4Oswq--