int main(const int argc, char **argv) { char *feed; Regexfilter *filterList = filter_new(NULL,".*"); int i, j, timeout = 3; /* supply regex filter */ if (argc > 1) { for (i = 1; i < argc; ++i) { if (strcmp(argv[i], "-e") == 0) { filter_set_pattern(filterList, argv[i+1]); for (j = i+2; j < argc ; j++) { if (argv[j][0] == '-') break; filter_new(filterList, argv[j]); } } if (strcmp(argv[i], "-t") == 0) { timeout = atoi(argv[i+1]); } if (strcmp(argv[i], "-h") == 0) { usage(); return EXIT_SUCCESS; } } } /* get feed from stdin */ if (stdin_ready(fileno(stdin), timeout)) { feed = stdin_get(feed); } else { fprintf(stderr, "no feed\n"); return EXIT_FAILURE; } /* run filters */ feed = filter(feed, filterList); /* output filtered xml */ printf("%s", feed); free(feed); filter_destroy(filterList); return EXIT_SUCCESS; }
int read_line( char* line ) { int size, c = 0; while( stdin_ready() ) { size = strlen(line); c = getchar(); if( c != EOF && c != '\n' && size < (MAX_LINE-1) ) { line[size] = c; } else { line[size] = 0; return (size==0)?0:size+1; } } return 0; // don't have a full line yet }