All pastes #988002 Raw Edit

Mine

public c v1 · immutable
#988002 ·published 2008-04-17 04:19 UTC
rendered paste body
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <ctype.h>#include <regex.h>#include <errno.h>#include <sys/types.h>#include <string.h>#define PATTERN#define BUFSIZE 128#define SUBMATCH_NUM 20void usage(char *progname);void search(regex_t *preg, char *buffer);int main(int argc, char **argv) {	if(argc != 2) { usage(argv[0]); exit(1); }	FILE *memdump;	char *buf = calloc(BUFSIZE, sizeof(char));	int c, i = 0;	char n;	regex_t prg;	if(regcomp(&prg, PATTERN, 0) != 0)		{ perror("regcomp"); exit(1); }	if((memdump = fopen(argv[1], "r")) == NULL)		{ perror("fopen"); exit(1); }		while((c = fgetc(memdump)) != EOF) {		if((isgraph(c) == 0) && (i < BUFSIZE)) {			buf[i] = (char)c;		} else {			search(&prg, buf);			i = 0;		}		i++;	}	regfree(&prg);	free(buf);	fclose(memdump);	return 0;}void usage(char *progname) {	printf("Usage: %s filename\n", progname);}void search(regex_t *preg, char *buffer) {	size_t nmtch = SUBMATCH_NUM;	regmatch_t pmtch[SUBMATCH_NUM];	int err, i;	if((err = regexec(preg, buffer, nmtch, pmtch, 0)) != 0) {		size_t length = regerror(err, preg, NULL, 0);		char *err_buf = malloc(length);		regerror(err, preg, err_buf, length);		printf("%s\n", err_buf);		free(err_buf);	} else {		for(i=0;i < SUBMATCH_NUM;i++) {			if(sizeof(pmtch[i]) != 0) {				printf("w00t! match!\n");			}		}	}}