From b09eecbec7e7cca1c133ba5923f55713cf7a78cf Mon Sep 17 00:00:00 2001 From: Calvin Morrison Date: Fri, 17 Jan 2014 14:28:49 -0500 Subject: update makefile and make a src directory --- src/strstream.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/strstream.c (limited to 'src/strstream.c') diff --git a/src/strstream.c b/src/strstream.c new file mode 100644 index 0000000..f4a296e --- /dev/null +++ b/src/strstream.c @@ -0,0 +1,52 @@ +// find string in +#include +#include +#include +#include + +int main(int argc, char **argv){ + + char buffer[BUFSIZ] = { 0 }; + char *buf, *start; + ssize_t len = 0; + + int save_size = 0; + int cpy = 0; + + unsigned long long pos = 0; + unsigned long long cpy_size = 0; + + int i = 0; + + // get max argument length + for(i = 1; i < argc; i++) { + int len = strlen(argv[i]); + if(len > save_size) + save_size = len; + } + + cpy = save_size - 1; + cpy_size = BUFSIZ - cpy; + + buf = buffer; + start = buf + cpy; + + // copy our first cpy length into the first part of our buffer + len = fread(buffer, 1, cpy, stdin); + if(len == 0) + exit(EXIT_FAILURE); + + // read into "start" (buf + cpy) from stdin + while((len = fread(start, 1, cpy_size, stdin)) != 0) { + for(i = 1; i < argc; i++) { + char *p = buffer; + while((p = strstr(p, argv[i])) != NULL) { + printf("%d %llu\n", i - 1, pos + (p - buffer)); + p++; + } + } + memcpy(buffer, buffer + len, cpy); + pos = pos + len; + } + return 0; +} -- cgit v1.2.3