#include <unistd.h>
#include <sys/types.h>
#include <errno.h>
#include <assert.h>
#include <ros/syscall.h>

/* potentially a 32 bit seek (off_t is a long) */
off_t __libc_lseek (int fd, off_t offset, int whence)
{
	loff_t retoff = 0;
	off_t hi = 0;
	off_t lo = 0;
	off_t ret;
	if (fd < 0) {
		__set_errno (EBADF);
		return -1;
	}
	switch (whence) {
		case SEEK_SET:
		case SEEK_CUR:
		case SEEK_END:
			break;
		default:
			__set_errno (EINVAL);
			return -1;
	}
	/* get the high and low part, regardless of whether offset was already 64
	 * bits or not (casting to avoid warnings) */
	hi = (loff_t)offset >> 32;
	lo = offset & 0xffffffff;
	ret = ros_syscall(SYS_llseek, fd, hi, lo, &retoff, whence, 0);
	if (ret) {
		assert(ret == -1);	/* catch odd bugs */
		return ret;
	}
	/* Get the lower 32 or 64 bits, depending on the length of long */
	ret = retoff & (unsigned long)(-1);
	return ret;
}
weak_alias (__libc_lseek, __lseek)
libc_hidden_def (__lseek)
weak_alias (__libc_lseek, lseek)
