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

1991/0411/port/devenv.c (diff list | history)

1991/0318/sys/src/9/port/devenv.c:435,4411991/0411/sys/src/9/port/devenv.c:435,441 (short | long | prev | next)
1990/0227    
} 
 
long 
envread(Chan *c, void *va, long n) 
1991/0411    
envread(Chan *c, void *va, long n, ulong offset) 
1990/0227    
{ 
	Env *e; 
	Envval *ev; 
1991/0318/sys/src/9/port/devenv.c:456,4671991/0411/sys/src/9/port/devenv.c:456,467
1990/0227    
	lock(e); 
	ev = e->val; 
	vn = ev? e->val->len : 0; 
	if(c->offset+n > vn) 
		n = vn - c->offset; 
1991/0411    
	if(offset+n > vn) 
		n = vn - offset; 
1990/0227    
	if(n <= 0) 
		n = 0; 
	else 
1991/0318    
		memmove(a, ev->dat+c->offset, n); 
1991/0411    
		memmove(a, ev->dat+offset, n); 
1990/0227    
	unlock(e); 
	unlock(pg); 
	return n; 
1991/0318/sys/src/9/port/devenv.c:468,4741991/0411/sys/src/9/port/devenv.c:468,474
1990/0227    
} 
 
long 
envwrite(Chan *c, void *va, long n) 
1991/0411    
envwrite(Chan *c, void *va, long n, ulong offset) 
1990/0227    
{ 
	Env *e; 
	char *p; 
1991/0318/sys/src/9/port/devenv.c:496,5081991/0411/sys/src/9/port/devenv.c:496,508
1990/0227    
	} 
	if(e->pgref>1) 
		panic("envwrite to non-duped env"); 
	growenval(e, c->offset+n); 
1991/0411    
	growenval(e, offset+n); 
1990/0227    
	ev = e->val; 
	vn = ev? ev->len : 0; 
	if(c->offset > vn) 
1991/0411    
	if(offset > vn) 
1990/11211    
		error(Egreg); /* perhaps should zero fill */ 
1991/0318    
	memmove(ev->dat+c->offset, a, n); 
1990/0227    
	e->val->len = c->offset+n; 
1991/0411    
	memmove(ev->dat+offset, a, n); 
	e->val->len = offset+n; 
1990/0227    
	poperror(); 
	unlock(e); 
	unlock(&envalloc); 


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