[TUHS] Archaic yacc C grammar

Noel Chiappa jnc at mercury.lcs.mit.edu
Thu Nov 1 01:39:37 AEST 2018

    > From: Steve Johnson

    > references that were checked using the pointer type of the structure
    > pointer. My code was a nightmare, and some of the old Unix code was at
    > least a bad dream.

I had a 'fun' experience with this when I went to do the pipe splice() system
call (after the discussion here). I elected to do it in V6, which I i) had
running, and ii) know like the back of my hand.

Alas! V6 uses 'int *' everywhere for pointers to structures. It also, in the
pipe code, uses constructs like '(p+1)' to provide wait channels. When I wrote
the new code, I naturally declared my pointers as 'struct inode *ip', or
whatever. However, when I went to do 'sleep(ip+1)', the wrong thing happened!
And since V6 C didn't have coercions, I couldn't win that way. IIRC, I finally
resorted to declaring an 'int *xip', and doing an 'xip = ip' before finally
doing my 'sleep(xip+1)'. Gack!


More information about the TUHS mailing list