RPM Package Manager, CVS Repository http://rpm5.org/cvs/ ____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 20-Sep-2014 23:00:51 Branch: rpm-5_4 Handle: 2014092021004900 Added files: (Branch: rpm-5_4) rpm/rpmio pcrsed.c Log: - pcrs: swipe from pcrs-0.0.3 Summary: Revision Changes Path 1.1.2.1 +86 -0 rpm/rpmio/pcrsed.c ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/rpmio/pcrsed.c ============================================================================ $ cvs diff -u -r0 -r1.1.2.1 pcrsed.c --- /dev/null 2014-09-20 23:00:48.000000000 +0200 +++ pcrsed.c 2014-09-20 23:00:51.271601477 +0200 @@ -0,0 +1,86 @@ +/********************************************************************* + * + * File : $Source: /v/rpm/cvs/rpm/rpmio/Attic/pcrsed.c,v $ + * + * Purpose : pcrsed is a small demo application for pcrs. + * FWIW, it's licensed under the GPL + * + *********************************************************************/ + +#include <stdio.h> +#include <errno.h> +#include <string.h> + +#include "pcrs.h" + +#define BUFFER_SIZE 100000 + +int main(int Argc, char **Argv) +{ + pcrs_job *job; + char *result; + int err, linenum=0; + size_t length; + + char linebuf[BUFFER_SIZE]; + FILE *in; + + /* + * Check usage + */ + if (Argc < 2 || Argc > 3) + { + fprintf(stderr, "Usage: %s s/pattern/substitute/[options] [file]\n", Argv[0]); + return 1; + } + + /* + * Open input file + */ + if (Argc == 3) + { + if (NULL == (in = fopen(Argv[2], "r"))) + { + fprintf(stderr, "%s: Couldn't open %s\n", Argv[2], strerror(errno)); + return(1); + } + } + else /* Argc == 2 */ + { + in = stdin; + } + + /* + * Compile the job + */ + if (NULL == (job = pcrs_compile_command(Argv[1], &err))) + { + fprintf(stderr, "%s Compile error: %s (%d).\n", Argv[0], pcrs_strerror(err), err); + return(1); + } + + + /* + * Execute on every input line + */ + while (!feof(in) && !ferror(in) && fgets(linebuf, BUFFER_SIZE, in)) + { + length = strlen(linebuf); + linenum++; + + if (0 > (err = pcrs_execute(job, linebuf, length, &result, &length))) + { + fprintf(stderr, "%s: Exec error: %s (%d) in input line %d\n", Argv[0], pcrs_strerror(err), err, linenum); + return(1); + } + else + { + fwrite(result, 1, length, stdout); + free(result); + } + } + + pcrs_free_job(job); + return(0); + +} @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository rpm-cvs@rpm5.org