From 29cd838eab01ed7110f3ccb2e8c6a35c8a31dbcc Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Thu, 11 Apr 2024 10:21:29 +0200 Subject: Adding upstream version 1:0.1.9998svn3589+dfsg. Signed-off-by: Daniel Baumann --- src/grep/gnulib-tests/test-dfa-match-aux.c | 73 ++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 src/grep/gnulib-tests/test-dfa-match-aux.c (limited to 'src/grep/gnulib-tests/test-dfa-match-aux.c') diff --git a/src/grep/gnulib-tests/test-dfa-match-aux.c b/src/grep/gnulib-tests/test-dfa-match-aux.c new file mode 100644 index 0000000..7b7706a --- /dev/null +++ b/src/grep/gnulib-tests/test-dfa-match-aux.c @@ -0,0 +1,73 @@ +/* Auxiliary program to test a DFA code path that cannot be triggered + by grep or gawk. + Copyright 2014-2021 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA + 02110-1301, USA. */ + +#include +#include +#include +#include +#include +#include +#include +#include + +_Noreturn void +dfaerror (char const *mesg) +{ + printf ("dfaerror: %s\n", mesg); + exit (EXIT_FAILURE); +} + +static int exit_status = EXIT_SUCCESS; + +void +dfawarn (char const *mesg) +{ + printf ("dfawarn: %s\n", mesg); + exit_status = EXIT_FAILURE; +} + +int +main (int argc, char **argv) +{ + struct dfa *dfa; + char *beg, *end, *p; + int allow_nl; + struct localeinfo localeinfo; + + if (argc < 3) + exit (EXIT_FAILURE); + + setlocale (LC_ALL, ""); + init_localeinfo (&localeinfo); + + dfa = dfaalloc (); + dfasyntax (dfa, &localeinfo, RE_SYNTAX_EGREP | RE_NO_EMPTY_RANGES, 0); + dfacomp (argv[1], strlen (argv[1]), dfa, 0); + + beg = argv[2]; + end = argv[2] + strlen (argv[2]); + allow_nl = argc > 3 && atoi (argv[3]); + + p = dfaexec (dfa, beg, end, allow_nl, NULL, NULL); + + if (p != NULL) + printf ("%zd\n", p - beg); + + exit (exit_status); +} -- cgit v1.2.3