X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fextract.c;h=aa695502246c84e03bf02c969aeae1dcaf557b18;hb=0ca8a9894b43c838980d650dd265f7a3da4ed219;hp=03208017d91f4900b6e624d38678f926dd035160;hpb=edf09fc5529eae3e8214a432058b4c07b2b8d2f9;p=idzebra-moved-to-github.git diff --git a/index/extract.c b/index/extract.c index 0320801..aa69550 100644 --- a/index/extract.c +++ b/index/extract.c @@ -4,7 +4,14 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: extract.c,v $ - * Revision 1.71 1997-07-15 16:28:41 adam + * Revision 1.73 1997-09-04 13:57:20 adam + * New file extract/retrieve method tellf (added). + * Added O_BINARY for open calls. + * + * Revision 1.72 1997/07/15 16:32:29 adam + * Bug fix: Match handler didn't terminate the resulting string! + * + * Revision 1.71 1997/07/15 16:28:41 adam * Bug fix: storeData didn't work with files with multiple records. * Bug fix: fixed memory management with records; not really well * thought through. @@ -749,6 +756,12 @@ static off_t file_seek (void *handle, off_t offset) return lseek (p->fd, offset, SEEK_SET); } +static off_t file_tell (void *handle) +{ + struct file_read_info *p = handle; + return p->file_offset; +} + static int file_read (void *handle, char *buf, size_t count) { struct file_read_info *p = handle; @@ -923,6 +936,7 @@ static char *fileMatchStr (struct recKeys *reckeys, struct recordGroup *rGroup, fname, rGroup->groupName ? rGroup->groupName : "none"); return NULL; } + *dst = '\0'; return dstBuf; } @@ -974,6 +988,7 @@ static int recordExtract (SYSNO *sysno, const char *fname, extractCtrl.offset = recordOffset; extractCtrl.readf = file_read; extractCtrl.seekf = file_seek; + extractCtrl.tellf = file_tell; extractCtrl.endf = file_end; extractCtrl.map_chrs_input = map_chrs_input; extractCtrl.flagShowRecords = rGroup->flagShowRecords; @@ -1305,7 +1320,7 @@ int fileExtract (SYSNO *sysno, const char *fname, fd = -1; else { - if ((fd = open (fname, O_RDONLY)) == -1) + if ((fd = open (fname, O_BINARY|O_RDONLY)) == -1) { logf (LOG_WARN|LOG_ERRNO, "open %s", fname); return 0;