/* Copyright (C) 1998 DJ Delorie, see COPYING.DJ for details */ /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ #include #include #include #include #include #include #include off_t lseek(int handle, off_t offset, int whence) { __dpmi_regs r; __FSEXT_Function *func = __FSEXT_get_function(handle); if (func) { int rv; if (func(__FSEXT_lseek, &rv, &handle)) return rv; } r.h.ah = 0x42; r.h.al = whence; r.x.bx = handle; r.x.cx = offset >> 16; r.x.dx = offset & 0xffff; __dpmi_int(0x21, &r); if (r.x.flags & 1) { errno = __doserr_to_errno(r.x.ax); return -1; } return (r.x.dx << 16) + r.x.ax; }