diff options
Diffstat (limited to 'REORG.TODO/posix/regexbug1.c')
-rw-r--r-- | REORG.TODO/posix/regexbug1.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/REORG.TODO/posix/regexbug1.c b/REORG.TODO/posix/regexbug1.c new file mode 100644 index 0000000000..17643e7e4d --- /dev/null +++ b/REORG.TODO/posix/regexbug1.c @@ -0,0 +1,51 @@ +#include <error.h> +#include <sys/types.h> +#include <regex.h> +#include <stdio.h> +#include <stdlib.h> + +int +main (void) +{ + regex_t re; + regmatch_t ma[2]; + int reerr; + int res = 0; + + re_set_syntax (RE_DEBUG); + reerr = regcomp (&re, "0*[0-9][0-9]", 0); + if (reerr != 0) + { + char buf[100]; + regerror (reerr, &re, buf, sizeof buf); + error (EXIT_FAILURE, 0, "%s", buf); + } + + if (regexec (&re, "002", 2, ma, 0) != 0) + { + error (0, 0, "\"0*[0-9][0-9]\" does not match \"002\""); + res = 1; + } + puts ("Succesful match with \"0*[0-9][0-9]\""); + + regfree (&re); + + reerr = regcomp (&re, "[0a]*[0-9][0-9]", 0); + if (reerr != 0) + { + char buf[100]; + regerror (reerr, &re, buf, sizeof buf); + error (EXIT_FAILURE, 0, "%s", buf); + } + + if (regexec (&re, "002", 2, ma, 0) != 0) + { + error (0, 0, "\"[0a]*[0-9][0-9]\" does not match \"002\""); + res = 1; + } + puts ("Succesful match with \"[0a]*[0-9][0-9]\""); + + regfree (&re); + + return res; +} |