_WCRTLINK long __lseek( int handle, long offset, int origin ) { long pos; __handle_check( handle, -1 ); #if defined( __OS2__ ) { APIRET rc; rc = DosChgFilePtr( handle, offset, origin, (PULONG)&pos ); if( rc != 0 ) { return( __set_errno_dos( rc ) ); } } #elif defined( __NT__ ) pos = SetFilePointer( __getOSHandle( handle ), offset, 0, origin ); if( pos == INVALID_SET_FILE_POINTER ) { return( __set_errno_nt() ); } #elif defined( __DOS__ ) || defined( __WINDOWS__ ) { tiny_ret_t rc; rc = TinyLSeek( handle, offset, origin, (u32_stk_ptr)&pos ); if( TINY_ERROR( rc ) ) { return( __set_errno_dos( TINY_INFO( rc ) ) ); } } #endif return( pos ); }
unsigned long SysSeek( int handle, unsigned long loc ) { unsigned long new_loc; if( TINY_ERROR( TinyLSeek( handle, loc, TIO_SEEK_START, (u32_stk_ptr)&new_loc ) ) ) return( -1UL ); return( new_loc ); }
unsigned long QPos( f_handle file ) /****************************************/ { unsigned long pos; CheckBreak(); if( TINY_ERROR( TinyLSeek( file, 0L, TIO_SEEK_CURR, (void __near *)&pos ) ) ) { return( -1L ); } return( pos ); }
unsigned long QFileSize( f_handle file ) /*********************************************/ { unsigned long curpos; unsigned long size; curpos = QPos( file ); if( TINY_ERROR( TinyLSeek( file, 0L, TIO_SEEK_END, (void __near *)&size ) ) ) size = 0; TinySeek( file, curpos, TIO_SEEK_START ); return( size ); }
unsigned long LocalSeek( sys_handle hdl, unsigned long npos, seek_method method ) { tiny_ret_t ret; unsigned long pos; ret = TinyLSeek( hdl, npos, method, (u32_stk_ptr)&pos ); if( TINY_ERROR( ret ) ) { StashErrCode( TINY_INFO( ret ), OP_LOCAL ); return( -1UL ); } return( pos ); }
unsigned long LocalSeek( sys_handle hdl, unsigned long len, unsigned method ) { tiny_ret_t ret; unsigned long pos; ret = TinyLSeek( hdl, len, method, &pos ); if( TINY_ERROR( ret ) ) { StashErrCode( TINY_INFO( ret ), OP_LOCAL ); return( -1UL ); } return( pos ); }
trap_retval ReqFile_seek( void ) { tiny_ret_t rc; file_seek_req *acc; file_seek_ret *ret; unsigned long pos; acc = GetInPtr( 0 ); ret = GetOutPtr( 0 ); rc = TinyLSeek( acc->handle, acc->pos, acc->mode, (u32_stk_ptr)&pos ); ret->pos = pos; ret->err = TINY_ERROR( rc ) ? TINY_INFO( rc ) : 0; return( sizeof( *ret ) ); }
long QLSeek( f_handle file, long position, int start, char *name ) /***********************************************************************/ { tiny_ret_t rc; unsigned long pos; CheckBreak(); rc = TinyLSeek( file, position, start, (void __near *)&pos ); if( TINY_ERROR( rc ) ) { if( name != NULL ) LnkMsg( ERR+MSG_IO_PROBLEM, "12", name, QErrMsg( TINY_INFO( rc ) ) ); return( -1L ); /* for xmem checking */ } return( pos ); }