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

1998/0326/port/sysfile.c (diff list | history)

1998/0320/sys/src/9/port/sysfile.c:467,4741998/0326/sys/src/9/port/sysfile.c:467,474 (short | long | prev | next)
Change VSEEK system call to return vlong.
rsc Fri Mar 4 17:11:47 2005
1990/0227    
	return n; 
} 
 
long 
1998/0319    
sysvseek(ulong *arg) 
1998/0326    
static void 
sseek(ulong *arg) 
1990/0227    
{ 
	Chan *c; 
	char buf[DIRLEN]; 
1998/0320/sys/src/9/port/sysfile.c:479,4851998/0326/sys/src/9/port/sysfile.c:479,485
1998/0319    
		ulong u[2]; 
	} o; 
1990/0227    
 
1992/0825    
	c = fdtochan(arg[0], -1, 1, 0); 
1998/0326    
	c = fdtochan(arg[1], -1, 1, 0); 
1990/11211    
	if(c->qid.path & CHDIR) 
		error(Eisdir); 
1992/0825    
 
1998/0320/sys/src/9/port/sysfile.c:487,4951998/0326/sys/src/9/port/sysfile.c:487,495
1991/0319    
		error(Eisstream); 
1992/0825    
 
1991/1101    
	off = 0; 
1998/0319    
	o.u[0] = arg[1]; 
	o.u[1] = arg[2]; 
	switch(arg[3]){ 
1998/0326    
	o.u[0] = arg[2]; 
	o.u[1] = arg[3]; 
	switch(arg[4]){ 
1990/0227    
	case 0: 
1998/0319    
		off = o.v; 
		c->offset = off; 
1998/0320/sys/src/9/port/sysfile.c:505,5181998/0326/sys/src/9/port/sysfile.c:505,526
1990/0227    
	case 2: 
1997/0327    
		devtab[c->type]->stat(c, buf); 
1990/0227    
		convM2D(buf, &dir); 
1998/0320    
		off = (long)dir.length1 + o.v;	/* BOTCH */ 
1998/0326    
		off = dir.length + o.v; 
1998/0319    
		c->offset = off; 
1990/0227    
		break; 
	} 
	return off; 
1998/0326    
	*(vlong*)arg[0] = off; 
1998/0319    
} 
 
long 
1998/0326    
sysvseek(ulong *arg) 
{ 
	validaddr(arg[0], BY2V, 1); 
	sseek(arg); 
	return 0; 
} 
 
long 
1998/0319    
sysseek(ulong *arg) 
{ 
	union { 
1998/0320/sys/src/9/port/sysfile.c:519,5321998/0326/sys/src/9/port/sysfile.c:527,542
1998/0319    
		vlong v; 
		ulong u[2]; 
	} o; 
	ulong a[4]; 
1998/0326    
	ulong a[5]; 
1998/0319    
 
	o.v = arg[1]; 
	a[0] = arg[0]; 
	a[1] = o.u[0]; 
	a[2] = o.u[1]; 
	a[3] = arg[2]; 
	return sysvseek(a); 
1998/0326    
	a[0] = (ulong)&o.v; 
	a[1] = arg[0]; 
	a[2] = o.u[0]; 
	a[3] = o.u[1]; 
	a[4] = arg[2]; 
	sseek(a); 
	return o.v; 
1990/0227    
} 
 
long 


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