More little bug fixes

This commit is contained in:
rsc 2004-05-14 17:45:39 +00:00
parent 1a8f27c350
commit f1bfc54e12
9 changed files with 31 additions and 7 deletions

View file

@ -38,7 +38,7 @@ data matches '[a-zA-Z¡-
data matches '([a-zA-Z¡-￿0-9_\-./]+)\.(jpe?g|JPE?G|gif|GIF|tiff?|TIFF?|ppm|bit|png|PNG)'
arg isfile $0
plumb to image
plumb start qiv -t $0
plumb start qiv -t $file
# postscript/pdf/dvi go to page but not over the a plumb port
# the port is here for reference but is unused

6
rcmain
View file

@ -10,7 +10,7 @@ case 1
prompt=($prompt ' ')
}
if(~ $rcname ?.out ?.rc */?.rc */?.out) prompt=('broken! ' ' ')
if(flag p) path=(/bin)
if(flag p) path=(/bin /usr/bin)
if not{
finit
if(~ $#path 0) {
@ -28,9 +28,9 @@ if(! ~ $#cflag 0){
if not if(flag i){
if(~ $TERM 9term){
if(~ $#'fn#cd' 0)
fn cd { builtin cd $1 && label `{pwd} }
fn cd { builtin cd $1 && flag i && awd }
}
if(flag l && /bin/test -r $home/lib/profile) . $home/lib/profile
if(flag l && test -r $home/lib/profile) . $home/lib/profile
status=''
if(! ~ $#* 0) . $*
. -i '/dev/stdin'

View file

@ -23,12 +23,20 @@ readenv(void)
Word *w;
for(p = environ; *p; p++){
/* rsc 5/5/2004 -- This misparses fn#cd={whatever}
s = shname(*p);
if(*s == '=') {
*s = 0;
w = newword(s+1);
} else
w = newword("");
*/
s = strchr(*p, '=');
if(s){
*s = 0;
w = newword(s+1);
} else
w = newword("");
if (symlook(*p, S_INTERNAL, 0))
continue;
s = strdup(*p);

View file

@ -5,7 +5,7 @@ SHORTLIB=sec fs mux regexp9 thread bio 9
<$PLAN9/src/mkmany
BUGGERED='CVS|faces|factotum|mailfs|scat|upas|vac|venti|lex'
BUGGERED='CVS|faces|factotum|mailfs|scat|upas|vac|venti|lex|vncv'
DIRS=`ls -l |sed -n 's/^d.* //p' |egrep -v "^($BUGGERED)$"`
<$PLAN9/src/mkdirs

View file

@ -34,7 +34,6 @@ char Fdprefix[]="/dev/fd/";
void execfinit(void);
void execbind(void);
void execmount(void);
void execnewpgrp(void);
builtin Builtin[]={
"cd", execcd,
"whatis", execwhatis,

View file

@ -18,3 +18,5 @@ struct Uproc
extern Uproc *_p9uproc(int);
extern void _p9uprocdie(void);
extern void _clearuproc(void);

View file

@ -18,6 +18,19 @@ static Uproc *alluproc[PIDHASH];
static int allupid[PIDHASH];
static Lock uproclock;
void
_clearuproc(void)
{
int i;
/* called right after fork - no locking needed */
for(i=0; i<PIDHASH; i++)
if(alluproc[i] != T && alluproc[i] != 0)
free(alluproc[i]);
memset(alluproc, 0, sizeof alluproc);
memset(allupid, 0, sizeof allupid);
}
Uproc*
_p9uproc(int inhandler)
{

View file

@ -9,6 +9,7 @@ p9fork(void)
int pid;
pid = fork();
_clearuproc();
_p9uproc(0);
return pid;
}

View file

@ -55,9 +55,10 @@ threadexitsall(char *exitstr)
_threaddebug(DBGSCHED, "threadexitsall kill %d", pid[i]);
if(pid[i]==0 || pid[i]==-1)
fprint(2, "bad pid in threadexitsall: %d\n", pid[i]);
else if(pid[i] != mypid)
else if(pid[i] != mypid){
kill(pid[i], SIGTERM);
}
}
/* leave */
exit(0);