argp: Emit a warning also with clang.
[gnulib.git] / tests / test-dfa-match-aux.c
blob21aa613080c7fe15c54afb3da72a190bd8d204f0
1 /* Auxiliary program to test a DFA code path that cannot be triggered
2 by grep or gawk.
3 Copyright 2014-2020 Free Software Foundation, Inc.
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.
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.
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. */
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>
29 _Noreturn void
30 dfaerror (char const *mesg)
32 printf ("dfaerror: %s\n", mesg);
33 exit (EXIT_FAILURE);
36 static int exit_status = EXIT_SUCCESS;
38 void
39 dfawarn (char const *mesg)
41 printf ("dfawarn: %s\n", mesg);
42 exit_status = EXIT_FAILURE;
45 int
46 main (int argc, char **argv)
48 struct dfa *dfa;
49 char *beg, *end, *p;
50 int allow_nl;
51 struct localeinfo localeinfo;
53 if (argc < 3)
54 exit (EXIT_FAILURE);
56 setlocale (LC_ALL, "");
57 init_localeinfo (&localeinfo);
59 dfa = dfaalloc ();
60 dfasyntax (dfa, &localeinfo, RE_SYNTAX_GREP | RE_NO_EMPTY_RANGES, 0);
61 dfacomp (argv[1], strlen (argv[1]), dfa, 0);
63 beg = argv[2];
64 end = argv[2] + strlen (argv[2]);
65 allow_nl = argc > 3 && atoi (argv[3]);
67 p = dfaexec (dfa, beg, end, allow_nl, NULL, NULL);
69 if (p != NULL)
70 printf ("%zd\n", p - beg);
72 exit (exit_status);