plan 9 kernel history: overview | file list | diff list

1992/0623/port/pgrp.c (diff list | history)

1992/0619/sys/src/9/port/pgrp.c:52,811992/0623/sys/src/9/port/pgrp.c:52,58 (short | long | prev | next)
1992/0619    
	return p; 
1991/0705    
} 
 
Egrp* 
newegrp(void) 
{ 
	Egrp *e; 
                 
1992/0619    
	e = smalloc(sizeof(Egrp)+sizeof(Env)*conf.npgenv); 
                 
	/* This is a sleazy hack to make malloc work .. devenv need rewriting. */ 
	e->etab = (Env*)((uchar*)e+sizeof(Egrp)); 
	e->ref = 1; 
	return e; 
1991/0705    
} 
                 
Fgrp* 
newfgrp(void) 
{ 
	Fgrp *f; 
                 
1992/0619    
	f = smalloc(sizeof(Fgrp)); 
	f->ref = 1; 
	return f; 
1991/0705    
} 
                 
Fgrp* 
dupfgrp(Fgrp *f) 
{ 
	Fgrp *new; 
1992/0619/sys/src/9/port/pgrp.c:82,881992/0623/sys/src/9/port/pgrp.c:59,66
1991/0705    
	Chan *c; 
	int i; 
 
	new = newfgrp(); 
1992/0623    
	new = smalloc(sizeof(Fgrp)); 
	new->ref = 1; 
1991/0705    
 
1992/0607    
	lock(f); 
1991/0705    
	new->maxfd = f->maxfd; 
1992/0619/sys/src/9/port/pgrp.c:139,1521992/0623/sys/src/9/port/pgrp.c:117,132
1991/0705    
void 
1991/1018    
closeegrp(Egrp *eg) 
1991/0705    
{ 
1991/1018    
	Env *e; 
1991/0705    
	int i; 
1992/0623    
	Evalue *e, *next; 
1991/0705    
 
1991/1018    
	if(decref(eg) == 0) { 
		e = eg->etab; 
		for(i=0; i<eg->nenv; i++, e++) 
			envpgclose(e); 
1992/0619    
                 
1992/0623    
		for(e = eg->entries; e; e = next) { 
			next = e->link; 
			free(e->name); 
			if(e->value) 
				free(e->value); 
			free(e); 
		} 
1992/0619    
		free(eg); 
1991/0705    
	} 
} 
1992/0619/sys/src/9/port/pgrp.c:183,1991992/0623/sys/src/9/port/pgrp.c:163,186
1990/0227    
void 
1991/0705    
envcpy(Egrp *to, Egrp *from) 
1990/0227    
{ 
1991/1018    
	Env *te, *fe; 
	int i, nenv; 
1992/0623    
	Evalue **l, *ne, *e; 
1990/0227    
 
1991/1018    
	qlock(&from->ev); 
	nenv = from->nenv; 
	to->nenv = nenv; 
	te = to->etab; 
	fe = from->etab; 
	for(i=0; i < nenv; i++, te++, fe++) 
		envpgcopy(te, fe); 
	qunlock(&from->ev); 
1992/0623    
	l = &to->entries; 
	qlock(from); 
	for(e = from->entries; e; e = e->link) { 
		ne = smalloc(sizeof(Evalue)); 
		ne->name = smalloc(strlen(e->name)+1); 
		strcpy(ne->name, e->name); 
		if(e->value) { 
			ne->value = smalloc(e->len); 
			memmove(ne->value, e->value, e->len); 
			ne->len = e->len; 
		} 
		ne->path = ++to->path; 
		*l = ne; 
		l = &ne->link; 
	} 
	qunlock(from); 
1991/0514    
} 
 
void 


source code copyright © 1990-2005 Lucent Technologies; see license
Plan 9 distribution
comments to russ cox (rsc@swtch.com)