home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
OBJASM.ZIP
/
ORLIDATA.C
< prev
next >
Wrap
C/C++ Source or Header
|
1990-09-15
|
1KB
|
40 lines
#include <stdio.h>
#include "o.h"
extern int data_seg_idx;
extern unsigned long data_offset;
void lidata( length, extension )
unsigned int length;
int extension;
{
SEG_T seg_search;
SEG_T *seg;
unsigned long offset;
long position;
position = o_position + length; /* Position assumed at end of rec */
length -= get_index( &seg_search.index );
seg = (SEG_T *)find( (char *)&seg_search, segment_tree, seg_compare, NULL );
if ( seg == NULL ) fmt_error("Undefined segment" );
if ( extension == REGULAR ) {
offset = (unsigned long)get_word(); /* Spot to begin within segment */
length -= 2;
} else {
offset = get_long();
length -= 4;
}
data_seg_idx = seg_search.index; /* Needed by FIXUPPs */
data_offset = offset; /* Ditto */
position -= length; /* Move back remainder of bytes */
--length; /* Ignore checksum in length */
dat_insert( seg_search.index, offset, position, length,
extension, ITERATED );
}