tToday's changes. - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit cb27443abf3d6af6ab52377c71c843e619928433
 (DIR) parent 0023dde3260f4d6b085bed7d90bf8b1ca0daf77b
 (HTM) 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(-)
       ---
 (DIR) diff --git a/NOTES b/NOTES
       t@@ -27,6 +27,25 @@ There are a few shell scripts already included in bin -- B, Bwait,
        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.
 (DIR) 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.
       +
 (DIR) 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_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
 (DIR) diff --git a/bin/awd b/bin/awd
       t@@ -0,0 +1,3 @@
       +#!/bin/sh
       +
       +label `pwd`
 (DIR) 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
       +}
       +
 (DIR) 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$$
        
 (DIR) 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)'
                        ;;
 (DIR) 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
        }