xref: /plan9-contrib/sys/src/ape/lib/ap/plan9/lseek.c (revision d9306527b4a7229dcf0cf3c58aed36bb9da82854)
13e12c5d1SDavid du Colombier #include "lib.h"
23e12c5d1SDavid du Colombier #include <unistd.h>
33e12c5d1SDavid du Colombier #include <errno.h>
43e12c5d1SDavid du Colombier #include "sys9.h"
53e12c5d1SDavid du Colombier 
63e12c5d1SDavid du Colombier /*
73e12c5d1SDavid du Colombier  * BUG: errno mapping
83e12c5d1SDavid du Colombier  */
93e12c5d1SDavid du Colombier off_t
lseek(int d,off_t offset,int whence)103e12c5d1SDavid du Colombier lseek(int d, off_t offset, int whence)
113e12c5d1SDavid du Colombier {
12*d9306527SDavid du Colombier 	long long n;
13219b2ee8SDavid du Colombier 	int flags;
143e12c5d1SDavid du Colombier 
15219b2ee8SDavid du Colombier 	flags = _fdinfo[d].flags;
16219b2ee8SDavid du Colombier 	if(flags&(FD_BUFFERED|FD_BUFFEREDX|FD_ISTTY)) {
17219b2ee8SDavid du Colombier 		errno = ESPIPE;
18219b2ee8SDavid du Colombier 		return -1;
19219b2ee8SDavid du Colombier 	}
20*d9306527SDavid du Colombier 	n = _SEEK(d, offset, whence);
213e12c5d1SDavid du Colombier 	if(n < 0)
223e12c5d1SDavid du Colombier 		_syserrno();
233e12c5d1SDavid du Colombier 	return n;
243e12c5d1SDavid du Colombier }
25