diff options
Diffstat (limited to 'libc/posix/regexbug1.c')
-rw-r--r-- | libc/posix/regexbug1.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/libc/posix/regexbug1.c b/libc/posix/regexbug1.c new file mode 100644 index 000000000..28640968d --- /dev/null +++ b/libc/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, 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, 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; +} |