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

1992/0213/port/chan.c (diff list | history)

1992/0111/sys/src/9/port/chan.c:669,6961992/0213/sys/src/9/port/chan.c:669,693 (short | long | prev | next)
1990/0227    
char* 
nextelem(char *name, char *elem) 
{ 
	int i, user, c; 
1992/0213    
	int i, user, w; 
1990/0227    
	char *end, *e; 
1992/0213    
	Rune r; 
1990/0227    
 
	if(*name == '/') 
1990/11211    
		error(Efilename); 
1990/0821    
	end = memchr(name, 0, NAMELEN); 
1990/0227    
	if(end == 0){ 
1990/0821    
		end = memchr(name, '/', NAMELEN); 
1990/0227    
		if(end == 0) 
1990/11211    
			error(Efilename); 
1990/0227    
	}else{ 
		e = memchr(name, '/', end-name); 
		if(e) 
			end = e; 
	} 
1992/0213    
	end = utfrune(name, '/'); 
	if(end == 0) 
		end = strchr(name, 0); 
	w = end-name; 
	if(w >= NAMELEN) 
		error(Efilename); 
	memmove(elem, name, w); 
	elem[w] = 0; 
1990/0227    
	while(name < end){ 
1992/0101    
		c = *(uchar*)name++; 
		if(isfrog[c]) 
1992/0213    
		name += chartorune(&r, name); 
		if(r<sizeof(isfrog) && isfrog[r]) 
1990/11211    
			error(Ebadchar); 
1990/0227    
		*elem++ = c; 
	} 
	*elem = 0; 
	return skipslash(name); 
} 
 


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