commit cb27443abf3d6af6ab52377c71c843e619928433 from: rsc date: Thu Mar 25 23:03:22 2004 UTC Today's changes. commit - 0023dde3260f4d6b085bed7d90bf8b1ca0daf77b commit + cb27443abf3d6af6ab52377c71c843e619928433 blob - 7c6955065b2208d48858269988a4518fd806bc1b blob + 5757e7082bd8c7300ce551b47fe0cb66926077e7 --- NOTES +++ NOTES @@ -27,6 +27,25 @@ There are a few shell scripts already included in bin and samsave. Arguably these directories should be broken up by architecture so that +During the initial build of mk, you will likely see a message like + + Assembler messages: + Error: can't open getcallerpc-386.s for reading + getcallerpc-386.s: No error + +This is not a problem. The script tries to build getcallerpc +from assembly and then C. As long as one of them succeeds, great. + +There are various directories that are not built by default. +They are listed in the BUGGERED definitions in src/mkfile and src/cmd/mkfile. +These aren't built because they're not quite ready for prime time. +Either they don't actually build or they haven't been very well tested. + +As of this writing, factotum is buggered because it's not done yet, +and Venti and vac are buggered because they've hardly been tested +and are in a state of flux (they were both quite rewritten for the port). + + * Writing programs The bin/ directory contains shell scripts 9a, 9c, 9l, and 9ar that mimic @@ -155,6 +174,13 @@ To check out from the anonymous CVS repository, use When prompted for a password, just hit enter. +If there is already a /usr/local/plan9 directory (from a previous +unpacking), remove it or move it out of the way. You need write +access to /usr/local in order to run the checkout, but after that +you'll only need write access to the plan9 subtree. I typically run +the initial checkout as root and then chown -R rsc plan9 so that +I can do things as rsc afterward. + From then on, when you want to update, you can do cd /usr/local/plan9 @@ -173,6 +199,11 @@ you can run to generate the diff in a format that will be easy to apply. (You can also use this to see what you've changed.) + cvs diff -D20040101 -u + +shows you differences txixt your tree and the repository +as of January 1, 2004. + Running the cvs commands in /usr/local/plan9 makes them apply to the whole tree. Running them in a subdirectory applies only to the code rooted there in the code. blob - 7ca8745fa4b87cb779d566edf0eeeb5ff8e220c1 blob + 9aa4aa39bfc3f75dfe7d2121c16631bcd32c4d01 --- TODO +++ TODO @@ -20,3 +20,6 @@ needs cleanup and release. should be easy to add ext2, fat. ntfs harder but possible. +* win + need to make a real pty so that ^D etc. work. + blob - e510e4d649d747e0c1b92f08c3b8f26b37afcae5 blob + a7924e74c808434d0b502a3c28536bd0f2d5c856 --- bin/9l +++ bin/9l @@ -3,12 +3,24 @@ extralibs=-lm tag="${SYSNAME:-`uname`}-${OBJTYPE:-`uname -m`}" case "$tag" in -*FreeBSD*) ld=gcc ;; +*OpenBSD*) ld=gcc + extralibs="$extralibs -lpthread" + ;; *BSD*) ld=gcc ;; *Linux*) ld=gcc ;; *Darwin*) ld=gcc ;; *SunOS*) ld="${CC9:-cc} -g" extralibs="$extralibs -lrt -lpthread -lsocket -lnsl" + # Record paths to shared libraries to avoid needing LD_LIBRARY_PATH + for i in "$@" + do + case "$i" in + -L*) + s=`echo $i | sed 's/-L/-R/'` + extralibs="$extralibs $s" + ;; + esac + done ;; *) echo do not know how to link on "$tag" 1>&2 blob - /dev/null blob + 4b1ab78eb6d0b60212088649611239374f401f07 (mode 755) --- /dev/null +++ bin/awd @@ -0,0 +1,3 @@ +#!/bin/sh + +label `pwd` blob - /dev/null blob + c9e8b92976d5c82247fa4c0918cda240a2262595 (mode 755) --- /dev/null +++ bin/g @@ -0,0 +1,19 @@ +#!/usr/local/plan9/bin/rc + +flags=() +while(! ~ $#* 1 && ~ $1 -*){ + flags=($flags $1) + shift +} + +switch($#*){ +case 0 + echo 'usage: g [flags] pattern [files]' >[1=2] + exit 1 +case 1 + 9grep -n $flags -- $1 *.[Cbchm] *.cc *.py *.tex *.ms *.java /dev/null \ + |[2] {9grep -v '^(grep: can''t open \*|grep: \*\.)' >[1=2]; status=0} +case * + 9grep -n $flags -- $* /dev/null +} + blob - 54678eb802bc520246d28678a7cfad1af2f897ad blob + d7e0767f5ac7baf7aa6fed3470059f2e658c59c2 --- bin/ps +++ bin/ps @@ -15,6 +15,7 @@ BEGIN{ state["I"] = "Idle"; state["J"] = "Jail"; state["R"] = "Ready"; + state["O"] = "Running"; state["S"] = "Sleep"; state["T"] = "Stopped"; state["Z"] = "Zombie"; @@ -65,8 +66,16 @@ function statestr(s) } ! -/bin/ps -axww -o 'user,pid,start,time,vsz,stat,command' | sed 1d | - awk -f /tmp/awk.xxx$$ | sort -n +1 +case "${SYSNAME:-`uname`}" in +SunOS) + /bin/ps -aA -o 'user,pid,stime,time,vsz,s,args' | sed 1d | + nawk -f /tmp/awk.xxx$$ | sort -n +1 + ;; +*) + /bin/ps -axww -o 'user,pid,start,time,vsz,stat,command' | sed 1d | + awk -f /tmp/awk.xxx$$ | sort -n +1 + ;; +esac rm -f /tmp/awk.xxx$$ blob - a597f2da65a31bebc6dca59ee5d430dc6fb8cb09 blob + 7ca1c7de609141eed048abdb1e98ad66ea0aa8cb --- bin/web +++ bin/web @@ -10,6 +10,7 @@ plumb1() ;; *firebird*) $BROWSER -remote 'openURL('$i', new-window)' + ;; *firefox*) $BROWSER -remote 'openURL('$i', new-window)' ;; blob - c4dda4cddb3e406f16d1c4f7706abae6eddf99e7 blob + ad94b2991037b32a19e495f3d733328549fd8ee3 --- rcmain +++ rcmain @@ -10,15 +10,18 @@ case 1 prompt=($prompt ' ') } if(~ $rcname ?.out) prompt=('broken! ' ' ') -if(flag p) path=/bin +if(flag p) path=(/bin) if not{ finit - if(~ $#path 0) . <{/bin/sh -c 'echo $PATH | + if(~ $#path 0) { + path=(/bin /usr/bin) + . <{sh -c 'echo $PATH | sed "s/^/path=(''/; s/$/'')/; s/:/'' ''/g"'} + } } fn sigexit if(! ~ $#cflag 0){ - if(flag l && /bin/test -r $home/lib/profile) . $home/lib/profile + if(flag l && test -r $home/lib/profile) . $home/lib/profile status='' eval $cflag }