1 /* $OpenBSD: fnm_test.c,v 1.1 2008/10/01 23:04:58 millert Exp $ */
4 * Public domain, 2008, Todd C. Miller <Todd.Miller@courtesan.com>
13 #endif /* HAVE_STRING_H */
16 #endif /* HAVE_STRINGS_H */
20 # include "compat/fnmatch.h"
25 __dso_public int main(int argc, char *argv[]);
28 main(int argc, char *argv[])
31 char pattern[1024], string[1024], flagstr[1024];
32 int errors = 0, tests = 0, flags, got, want;
35 if ((fp = fopen(argv[1], "r")) == NULL) {
42 * Read in test file, which is formatted thusly:
44 * pattern string flags expected_result
48 got = fscanf(fp, "%s %s %s %d\n", pattern, string, flagstr,
54 if (strcmp(flagstr, "FNM_NOESCAPE") == 0)
55 flags |= FNM_NOESCAPE;
56 else if (strcmp(flagstr, "FNM_PATHNAME") == 0)
57 flags |= FNM_PATHNAME;
58 else if (strcmp(flagstr, "FNM_PERIOD") == 0)
60 else if (strcmp(flagstr, "FNM_LEADING_DIR") == 0)
61 flags |= FNM_LEADING_DIR;
62 else if (strcmp(flagstr, "FNM_CASEFOLD") == 0)
63 flags |= FNM_CASEFOLD;
64 got = fnmatch(pattern, string, flags);
67 "fnmatch: %s %s %d: want %d, got %d\n",
68 pattern, string, flags, want, got);
75 printf("fnmatch: %d test%s run, %d errors, %d%% success rate\n",
76 tests, tests == 1 ? "" : "s", errors,
77 (tests - errors) * 100 / tests);