tToday's changes. - plan9port - [fork] Plan 9 from user space | |
git clone git://src.adamsgaard.dk/plan9port | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit cb27443abf3d6af6ab52377c71c843e619928433 | |
parent 0023dde3260f4d6b085bed7d90bf8b1ca0daf77b | |
Author: rsc <devnull@localhost> | |
Date: Thu, 25 Mar 2004 23:03:22 +0000 | |
Today's changes. | |
Diffstat: | |
M NOTES | 31 +++++++++++++++++++++++++++++… | |
M TODO | 3 +++ | |
M bin/9l | 14 +++++++++++++- | |
A bin/awd | 3 +++ | |
A bin/g | 19 +++++++++++++++++++ | |
M bin/ps | 13 +++++++++++-- | |
M bin/web | 1 + | |
M rcmain | 9 ++++++--- | |
8 files changed, 87 insertions(+), 6 deletions(-) | |
--- | |
diff --git a/NOTES b/NOTES | |
t@@ -27,6 +27,25 @@ There are a few shell scripts already included in bin -- B,… | |
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 | |
t@@ -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 | |
t@@ -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. | |
diff --git a/TODO b/TODO | |
t@@ -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. | |
+ | |
diff --git a/bin/9l b/bin/9l | |
t@@ -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… | |
+ 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 | |
diff --git a/bin/awd b/bin/awd | |
t@@ -0,0 +1,3 @@ | |
+#!/bin/sh | |
+ | |
+label `pwd` | |
diff --git a/bin/g b/bin/g | |
t@@ -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 | |
+} | |
+ | |
diff --git a/bin/ps b/bin/ps | |
t@@ -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"; | |
t@@ -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$$ | |
diff --git a/bin/web b/bin/web | |
t@@ -10,6 +10,7 @@ plumb1() | |
;; | |
*firebird*) | |
$BROWSER -remote 'openURL('$i', new-window)' | |
+ ;; | |
*firefox*) | |
$BROWSER -remote 'openURL('$i', new-window)' | |
;; | |
diff --git a/rcmain b/rcmain | |
t@@ -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 | |
} |