m2.alobe/src/filter.c
glenux 5ca782e8b1 alobe: inital import (test).
git-svn-id: https://websvn.glenux.net/svn/Upoc/alobe/trunk@1348 eaee96b3-f302-0410-b096-c6cfd47f7835
2009-05-02 07:36:25 +00:00

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");
}