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

Reply via email to