1 //==========================================================================
5 // Test fnmatch function
7 //==========================================================================
8 //####ECOSGPLCOPYRIGHTBEGIN####
9 // -------------------------------------------
10 // This file is part of eCos, the Embedded Configurable Operating System.
11 // Copyright (C) 2007 Andrew Lunn <andrew.lunn@ascom.ch>
13 // eCos is free software; you can redistribute it and/or modify it under
14 // the terms of the GNU General Public License as published by the Free
15 // Software Foundation; either version 2 or (at your option) any later version.
17 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY
18 // WARRANTY; without even the implied warranty of MERCHANTABILITY or
19 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22 // You should have received a copy of the GNU General Public License along
23 // with eCos; if not, write to the Free Software Foundation, Inc.,
24 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
26 // As a special exception, if other files instantiate templates or use macros
27 // or inline functions from this file, or you compile this file and link it
28 // with other works to produce a work based on this file, this file does not
29 // by itself cause the resulting work to be covered by the GNU General Public
30 // License. However the source code for this file must still be made available
31 // in accordance with section (3) of the GNU General Public License.
33 // This exception does not invalidate any other reasons why a work based on
34 // this file might be covered by the GNU General Public License.
35 // -------------------------------------------
36 //####ECOSGPLCOPYRIGHTEND####
37 //==========================================================================
38 //#####DESCRIPTIONBEGIN####
43 // Purpose: Test fnmatch function.
46 //####DESCRIPTIONEND####
48 //==========================================================================
50 #include <pkgconf/io_fileio.h>
52 #ifndef CYGPKG_FILEIO_FNMATCH
53 # define NA_MSG "FNMATCH function not available"
56 #include <cyg/infra/testcase.h>
59 #include <cyg/infra/cyg_type.h>
60 #include <cyg/infra/diag.h>
64 //==========================================================================
67 int main( int argc, char **argv )
70 cyg_bool failed = false;
79 { 0, 0, "abc", "abc" }, /* 0 */
80 { FNM_NOMATCH, 0, "cba", "abc" },
81 { 0, 0, "abc", "a*" },
82 { FNM_NOMATCH, 0, "abc", "b*" },
83 { 0, 0, "abc", "[abc]*" },
84 { FNM_NOMATCH, 0, "abc", "[def]*" },
85 { FNM_NOMATCH, 0, "abc", "*[def]*" },
86 { 0, 0, "a/b", "a/b" },
87 { FNM_NOMATCH, 0, "a/b", "a/a" },
88 { FNM_NOMATCH, 0, "a/b", "b/b" },
90 { 0, 0, "a b", "a\\ b"}, /* 10 */
91 { FNM_NOMATCH, FNM_NOESCAPE, "a b", "a\\ b"},
93 { 0, 0, "a/b", "a*b" },
94 { 0, 0, "a/b", "a?b" },
95 { 0, 0, "a/b", "a[/]b" },
96 { FNM_NOMATCH, FNM_PATHNAME, "a/b", "a*b"},
97 { FNM_NOMATCH, FNM_PATHNAME, "a/b", "a?b"},
98 { FNM_NOMATCH, FNM_PATHNAME, "a/b", "a[/]b"},
99 { 0, FNM_PATHNAME, "a/b", "a/b"},
101 { 0, 0, ".abc", "?abc" },
102 { 0, 0, ".abc", "*abc" }, /* 20 */
103 { 0, 0, ".abc", "[.]abc" },
104 { 0, 0, ".abc", ".abc" },
105 { FNM_NOMATCH, FNM_PERIOD, ".abc", "?abc" },
106 { FNM_NOMATCH, FNM_PERIOD, ".abc", "*abc" },
107 { 0, FNM_PERIOD, ".abc", "[.]abc" },
108 { 0, FNM_PERIOD, ".abc", ".abc" },
110 { 0, 0, "/.abc", "/?abc" },
111 { 0, 0, "/.abc", "/*abc" },
112 { 0, 0, "/.abc", "/[.]abc" },
113 { 0, 0, "/.abc", "/.abc" }, /* 30 */
114 { FNM_NOMATCH, FNM_PERIOD|FNM_PATHNAME, "/.abc", "/?abc" },
115 { FNM_NOMATCH, FNM_PERIOD|FNM_PATHNAME, "/.abc", "/*abc" },
116 { 0, FNM_PERIOD|FNM_PATHNAME, "/.abc", "/[.]abc" },
117 { 0, FNM_PERIOD|FNM_PATHNAME, "/.abc", "/.abc" }
120 for (i=0; i < CYG_NELEM(test_case); i++) {
121 if (test_case[i].result !=
122 fnmatch(test_case[i].pattern,
124 test_case[i].flags)) {
125 diag_printf("<INFO>: test number %d failed\n", i);
131 CYG_TEST_FAIL_FINISH("fnmatch failed");
133 CYG_TEST_PASS_FINISH("fnmatch passed");
139 //==========================================================================
142 int main( int argc, char **argv )
151 // -------------------------------------------------------------------------