5ca782e8b1
git-svn-id: https://websvn.glenux.net/svn/Upoc/alobe/trunk@1348 eaee96b3-f302-0410-b096-c6cfd47f7835
51 lines
1.1 KiB
C
51 lines
1.1 KiB
C
/* vim: set sw=4 ts=4 si et: */
|
|
|
|
#include "filter.h"
|
|
|
|
Filter_t * filter_create(Config_io_t * io, nodeindex_t size, nodeindex_t offset)
|
|
{
|
|
Filter_t * filter = (Filter_t*) malloc (sizeof(Filter_t));
|
|
|
|
filter->_io = io;
|
|
filter->_size = size;
|
|
filter->_offset = offset;
|
|
|
|
return filter;
|
|
}
|
|
|
|
void filter_destroy(Filter_t * filter){
|
|
free(filter);
|
|
filter = NULL;
|
|
}
|
|
|
|
void filter_run(Filter_t * filter){
|
|
|
|
printf("filter_run -- Filtering between [ %d .. %d ]...\n",
|
|
filter->_offset,
|
|
filter->_size + filter->_offset);
|
|
|
|
char * buf = (char *) malloc (sizeof(char) * 100);
|
|
char * buf2;
|
|
for (;;){
|
|
if (gzeof(filter->_io->input)){ break; }
|
|
|
|
buf2 = gzgets (filter->_io->input, buf, 100);
|
|
if (buf2 == Z_NULL){
|
|
printf ("filter_run -- READ OFF\n");
|
|
break;
|
|
} else {
|
|
nodeindex_t one, two;
|
|
sscanf(buf,"%ld %ld",&one,&two);
|
|
if ((one >= filter->_offset)
|
|
&& (one < (filter->_offset + filter->_size))
|
|
&& (two >= filter->_offset)
|
|
&& (two < (filter->_offset + filter->_size))
|
|
){
|
|
fwrite (buf2, sizeof(char), strlen(buf2), filter->_io->output);
|
|
}
|
|
}
|
|
}
|
|
printf("filter_run -- done\n");
|
|
}
|
|
|