root/maint/gnulib/tests/test-dfa-match-aux.c

/* [previous][next][first][last][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. dfaerror
  2. dfawarn
  3. main

   1 /* Auxiliary program to test a DFA code path that cannot be triggered
   2    by grep or gawk.
   3    Copyright 2014-2021 Free Software Foundation, Inc.
   4 
   5    This program is free software; you can redistribute it and/or modify
   6    it under the terms of the GNU General Public License as published by
   7    the Free Software Foundation; either version 3, or (at your option)
   8    any later version.
   9 
  10    This program is distributed in the hope that it will be useful,
  11    but WITHOUT ANY WARRANTY; without even the implied warranty of
  12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13    GNU General Public License for more details.
  14 
  15    You should have received a copy of the GNU General Public License
  16    along with this program; if not, write to the Free Software
  17    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
  18    02110-1301, USA.  */
  19 
  20 #include <config.h>
  21 #include <locale.h>
  22 #include <stdio.h>
  23 #include <stdlib.h>
  24 #include <string.h>
  25 #include <regex.h>
  26 #include <dfa.h>
  27 #include <localeinfo.h>
  28 
  29 _Noreturn void
  30 dfaerror (char const *mesg)
     /* [previous][next][first][last][top][bottom][index][help] */
  31 {
  32   printf ("dfaerror: %s\n", mesg);
  33   exit (EXIT_FAILURE);
  34 }
  35 
  36 static int exit_status = EXIT_SUCCESS;
  37 
  38 void
  39 dfawarn (char const *mesg)
     /* [previous][next][first][last][top][bottom][index][help] */
  40 {
  41   printf ("dfawarn: %s\n", mesg);
  42   exit_status = EXIT_FAILURE;
  43 }
  44 
  45 int
  46 main (int argc, char **argv)
     /* [previous][next][first][last][top][bottom][index][help] */
  47 {
  48   struct dfa *dfa;
  49   char *beg, *end, *p;
  50   int allow_nl;
  51   struct localeinfo localeinfo;
  52 
  53   if (argc < 3)
  54     exit (EXIT_FAILURE);
  55 
  56   setlocale (LC_ALL, "");
  57   init_localeinfo (&localeinfo);
  58 
  59   dfa = dfaalloc ();
  60   dfasyntax (dfa, &localeinfo, RE_SYNTAX_EGREP | RE_NO_EMPTY_RANGES, 0);
  61   dfacomp (argv[1], strlen (argv[1]), dfa, 0);
  62 
  63   beg = argv[2];
  64   end = argv[2] + strlen (argv[2]);
  65   allow_nl = argc > 3 && atoi (argv[3]);
  66 
  67   p = dfaexec (dfa, beg, end, allow_nl, NULL, NULL);
  68 
  69   if (p != NULL)
  70     printf ("%zd\n", p - beg);
  71 
  72   exit (exit_status);
  73 }

/* [previous][next][first][last][top][bottom][index][help] */