diff options
Diffstat (limited to 'src/regress/lib/libc/fnmatch/fnm_test.c')
| -rw-r--r-- | src/regress/lib/libc/fnmatch/fnm_test.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/regress/lib/libc/fnmatch/fnm_test.c b/src/regress/lib/libc/fnmatch/fnm_test.c index e987010095..f5958837e2 100644 --- a/src/regress/lib/libc/fnmatch/fnm_test.c +++ b/src/regress/lib/libc/fnmatch/fnm_test.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: fnm_test.c,v 1.1 2008/10/01 23:04:58 millert Exp $ */ | 1 | /* $OpenBSD: fnm_test.c,v 1.2 2011/09/17 15:12:38 stsp Exp $ */ |
| 2 | 2 | ||
| 3 | /* | 3 | /* |
| 4 | * Public domain, 2008, Todd C. Miller <Todd.Miller@courtesan.com> | 4 | * Public domain, 2008, Todd C. Miller <Todd.Miller@courtesan.com> |
| @@ -8,12 +8,15 @@ | |||
| 8 | #include <fnmatch.h> | 8 | #include <fnmatch.h> |
| 9 | #include <stdio.h> | 9 | #include <stdio.h> |
| 10 | #include <stdlib.h> | 10 | #include <stdlib.h> |
| 11 | #include <util.h> | ||
| 11 | 12 | ||
| 12 | int | 13 | int |
| 13 | main(int argc, char **argv) | 14 | main(int argc, char **argv) |
| 14 | { | 15 | { |
| 15 | FILE *fp = stdin; | 16 | FILE *fp = stdin; |
| 16 | char pattern[1024], string[1024]; | 17 | char pattern[1024], string[1024]; |
| 18 | char *line; | ||
| 19 | const char delim[3] = {'\0', '\0', '#'}; | ||
| 17 | int errors = 0, flags, got, want; | 20 | int errors = 0, flags, got, want; |
| 18 | 21 | ||
| 19 | if (argc > 1) { | 22 | if (argc > 1) { |
| @@ -26,12 +29,22 @@ main(int argc, char **argv) | |||
| 26 | * | 29 | * |
| 27 | * pattern string flags expected_result | 30 | * pattern string flags expected_result |
| 28 | * | 31 | * |
| 32 | * lines starting with '#' are comments | ||
| 29 | */ | 33 | */ |
| 30 | for (;;) { | 34 | for (;;) { |
| 31 | got = fscanf(fp, "%s %s 0x%x %d\n", pattern, string, &flags, | 35 | line = fparseln(fp, NULL, NULL, delim, 0); |
| 36 | if (!line) | ||
| 37 | break; | ||
| 38 | got = sscanf(line, "%s %s 0x%x %d", pattern, string, &flags, | ||
| 32 | &want); | 39 | &want); |
| 33 | if (got == EOF) | 40 | if (got == EOF) { |
| 41 | free(line); | ||
| 34 | break; | 42 | break; |
| 43 | } | ||
| 44 | if (pattern[0] == '#') { | ||
| 45 | free(line); | ||
| 46 | continue; | ||
| 47 | } | ||
| 35 | if (got == 4) { | 48 | if (got == 4) { |
| 36 | got = fnmatch(pattern, string, flags); | 49 | got = fnmatch(pattern, string, flags); |
| 37 | if (got != want) { | 50 | if (got != want) { |
| @@ -39,7 +52,11 @@ main(int argc, char **argv) | |||
| 39 | string, flags, want, got); | 52 | string, flags, want, got); |
| 40 | errors++; | 53 | errors++; |
| 41 | } | 54 | } |
| 55 | } else { | ||
| 56 | warnx("unrecognized line '%s'\n", line); | ||
| 57 | errors++; | ||
| 42 | } | 58 | } |
| 59 | free(line); | ||
| 43 | } | 60 | } |
| 44 | exit(errors); | 61 | exit(errors); |
| 45 | } | 62 | } |
