home *** CD-ROM | disk | FTP | other *** search
-
- /*
- d4go( ref_base, rec_num )
- (c)Copyright Sequiter Software Inc., 1987, 1988, 1989. All rights reserved.
-
- - reads the specified record into the 'new_buf'
- - the deletion status byte is in first character position
- */
-
-
- #include "d4base.h"
- #include "u4error.h"
-
- #include <string.h>
- #ifndef UNIX
- #include <io.h>
- #endif
- #include <stdlib.h>
-
- extern long lseek( int, long, int) ;
- extern BASE *v4base ;
- extern int v4cur_base ;
-
-
- int d4go( rec_num )
- long rec_num ;
- {
- BASE *base_ptr ;
- char buffer[34] ;
-
- if ( v4cur_base < 0 )
- {
- u4error( E_D_MISSING, (char *) 0 ) ;
- return( -1 ) ;
- }
-
- base_ptr = v4base + v4cur_base ;
-
- if ( rec_num <= 0L )
- {
- memset( base_ptr->buffer, (int) ' ', base_ptr->buffer_len) ;
- return(1) ;
- }
-
- base_ptr->rec_num = rec_num ;
-
- if ( d4lock( rec_num, 1 ) < 0 ) return( -1) ;
-
- lseek( base_ptr->dos_file,
- base_ptr->header_len+ (rec_num-1)* base_ptr->buffer_len, 0) ;
- if ( read ( base_ptr->dos_file, base_ptr->buffer, base_ptr->buffer_len)
- == base_ptr->buffer_len )
- {
- return( 0 ) ;
- }
- else
- {
- ltoa( rec_num, buffer, 10) ;
- u4error( E_READ, base_ptr->name, "Record: ", buffer, (char *) 0) ;
- return( -1) ;
- }
- }
-