1e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project// test the basename, dirname, basename_r and dirname_r
2e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project#include <libgen.h>
3e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project#include <errno.h>
4e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project#include <stdio.h>
5e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project#include <string.h>
6e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project
7e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Projectstatic int  fail = 0;
8e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project
9e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Projectstatic void
10e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Projecttest_basename(char*  _input, const char*  _expected, int  _errno)
11e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project{
12e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    char   temp[256], *input = _input;
13e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    char*  ret;
14e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project#if HOST
15e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    /* GLibc does modify the input string. bummer */
16e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    if (_input) {
17e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        strcpy(temp, _input);
18e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        input = temp;
19e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    }
20e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project#endif
21e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    errno = 0;
22e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    ret   = basename(input);
23e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    if (_expected == NULL) {
24e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        if (ret != NULL) {
25e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            fprintf(stderr,
26e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project                    "KO: basename(\"%s\") returned \"%s\", NULL expected)\n",
27e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project                    _input, ret);
28e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            fail += 1;
29e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        } else if (errno != _errno) {
30e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            fprintf(stderr,
31e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project                    "KO: basename(\"%s\") returned NULL with error: %d (%d expected)\n",
32e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project                    _input, errno, _errno);
33e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            fail += 1;
34e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        } else {
35e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            printf( "OK: basename(\"%s\") returned NULL with error %d\n",
36e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project                    _input, _errno );
37e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        }
38e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    } else {
39e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        if (ret == NULL) {
40e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            fprintf(stderr, "KO: basename(\"%s\") returned NULL with error %d\n",
41e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project                    _input, errno);
42e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            fail += 1;
43e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        }
44e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        else if (strcmp(ret, _expected)) {
45e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            fprintf(stderr, "KO: basename(\"%s\") returned \"%s\", instead of \"%s\"\n",
46e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project                    _input, ret, _expected);
47e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        }
48e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        else {
49e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            printf( "OK: basename(\"%s\") returned \"%s\"\n",
50e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project                    _input, ret );
51e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        }
52e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    }
53e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project}
54e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project
55e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project
56e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project#if !HOST
57e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Projectstatic void
58e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Projecttest_basename_r(char*  _input, const char*  _expected_content, int  _expected, char*  _buff, size_t  _bufflen, int  _errno)
59e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project{
60e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    int   ret;
61e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    errno = 0;
62e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    ret   = basename_r(_input, _buff, _bufflen );
63e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    if (ret != _expected) {
64e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        fprintf(stderr,
65e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project                "KO: basename_r(\"%s\", <buff>, %d) returned %d (expected %d)\n",
66e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project                _input, _bufflen, ret, _expected);
67e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        fail += 1;
68e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        return;
69e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    }
70e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    if (ret == -1) {
71e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        if (errno != _errno) {
72e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            fprintf(stderr,
73e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project                    "KO: basename_r(\"%s\", <buff>, %d) returned -1 with errno=%d (expected %d)\n",
74e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project                    _input, _bufflen, errno, _errno);
75e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            fail += 1;
76e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            return;
77e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        }
78e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    }
793f6dfd684dd9451dcc4c83c42068c20753147077Mark Gonzales    else if (_buff != NULL && memcmp( _buff, _expected_content, ret ) ) {
80e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        fprintf(stderr,
81e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project                "KO: basename_r(\"%s\", <buff>, %d) returned \"%s\", expected \"%s\"\n",
82e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project                _input, _bufflen, _buff, _expected_content );
83e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        fail += 1;
84e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        return;
85e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    }
86e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    printf("OK: basename_r(\"%s\", <buff>, %d) returned \"%s\"\n",
87e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            _input, _bufflen, _expected_content );
88e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project}
89e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project
90e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Projectstatic void
91e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Projecttest_dirname_r(char*  _input, const char*  _expected_content, int  _expected, char*  _buff, size_t  _bufflen, int  _errno)
92e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project{
93e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    int   ret;
94e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    errno = 0;
95e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    ret   = dirname_r(_input, _buff, _bufflen );
96e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    if (ret != _expected) {
97e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        fprintf(stderr,
98e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project                "KO: dirname_r(\"%s\", <buff>, %d) returned %d (expected %d)\n",
99e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project                _input, _bufflen, ret, _expected);
100e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        fail += 1;
101e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        return;
102e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    }
103e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    if (ret == -1) {
104e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        if (errno != _errno) {
105e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            fprintf(stderr,
106e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project                    "KO: dirname_r(\"%s\", <buff>, %d) returned -1 with errno=%d (expected %d)\n",
107e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project                    _input, _bufflen, errno, _errno);
108e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            fail += 1;
109e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            return;
110e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        }
111e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    }
1123f6dfd684dd9451dcc4c83c42068c20753147077Mark Gonzales    else if (_buff != NULL &&  memcmp( _buff, _expected_content, ret ) ) {
113e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        fprintf(stderr,
114e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project                "KO: dirname_r(\"%s\", <buff>, %d) returned \"%s\", expected \"%s\"\n",
115e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project                _input, _bufflen, _buff, _expected_content );
116e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        fail += 1;
117e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        return;
118e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    }
119e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    printf("OK: dirname_r(\"%s\", <buff>, %d) returned \"%s\"\n",
120e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            _input, _bufflen, _expected_content );
121e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project}
122e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project#endif
123e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project
124e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project
125e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Projectstatic void
126e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Projecttest_dirname(char*  _input, const char*  _expected, int  _errno)
127e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project{
128e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    char   temp[256], *input = _input;
129e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    char*  ret;
130e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project#if HOST
131e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    /* GLibc does modify the input string. bummer */
132e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    if (_input) {
133e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        strcpy(temp, _input);
134e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        input = temp;
135e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    }
136e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project#endif
137e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    errno = 0;
138e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    ret   = dirname(input);
139e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    if (_expected == NULL) {
140e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        if (ret != NULL) {
141e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            fprintf(stderr,
142e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project                    "KO: dirname(\"%s\") returned \"%s\", NULL expected)\n",
143e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project                    _input, ret);
144e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            fail += 1;
145e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        } else if (errno != _errno) {
146e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            fprintf(stderr,
147e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project                    "KO: dirname(\"%s\") returned NULL with error: %d (%d expected)\n",
148e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project                    _input, errno, _errno);
149e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            fail += 1;
150e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        } else {
151e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            printf( "OK: dirname(\"%s\") returned NULL with error %d\n",
152e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project                    _input, _errno );
153e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        }
154e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    } else {
155e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        if (ret == NULL) {
156e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            fprintf(stderr, "KO: dirname(\"%s\") returned NULL with error %d\n",
157e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project                    _input, errno);
158e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            fail += 1;
159e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        }
160e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        else if (strcmp(ret, _expected)) {
161e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            fprintf(stderr, "KO: dirname(\"%s\") returned \"%s\", instead of \"%s\"\n",
162e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project                    _input, ret, _expected);
163e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        }
164e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        else {
165e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project            printf( "OK: dirname(\"%s\") returned \"%s\"\n",
166e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project                    _input, ret );
167e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project        }
168e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    }
169e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project}
170e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project
171e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project
172e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project
173e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project
174e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Projectint  main( void )
175e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project{
176e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    char  buff[256];
177e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project
178e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_basename( "", ".", 0 );
179e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_basename( "/usr/lib", "lib", 0 );
180e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_basename( "/usr/", "usr", 0 );
181e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_basename( "usr", "usr", 0 );
182e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_basename( "/", "/", 0 );
183e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_basename( ".", ".", 0 );
184e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_basename( "..", "..", 0 );
185e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project
186e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project#if !HOST
187e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_basename_r( "", ".",  1, NULL, 0, 0 );
188e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_basename_r( "", ".", -1, buff, 0, ERANGE );
189e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_basename_r( "", ".", -1, buff, 1, ERANGE );
190e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_basename_r( "", ".", 1, buff, 2, 0 );
191e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_basename_r( "", ".", 1, buff, sizeof(buff), 0 );
192e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_basename_r( "/usr/lib", "lib", 3, buff, sizeof(buff), 0 );
193e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_basename_r( "/usr/", "usr", 3, buff, sizeof(buff), 0 );
194e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_basename_r( "usr", "usr", 3, buff, sizeof(buff), 0 );
195e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_basename_r( "/", "/", 1, buff, sizeof(buff), 0 );
196e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_basename_r( ".", ".", 1, buff, sizeof(buff), 0 );
197e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_basename_r( "..", "..", 2, buff, sizeof(buff), 0 );
198e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project#endif
199e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project
200e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_dirname( "", ".", 0 );
201e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_dirname( "/usr/lib", "/usr", 0 );
202e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_dirname( "/usr/", "/", 0 );
203e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_dirname( "usr", ".", 0 );
204e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_dirname( ".", ".", 0 );
205e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_dirname( "..", ".", 0 );
206e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project
207e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project#if !HOST
208e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_dirname_r( "", ".",  1, NULL, 0, 0 );
209e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_dirname_r( "", ".", -1, buff, 0, ERANGE );
210e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_dirname_r( "", ".", -1, buff, 1, ERANGE );
211e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_dirname_r( "", ".", 1, buff, 2, 0 );
212e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_dirname_r( "/usr/lib", "/usr", 4, buff, sizeof(buff), 0 );
213e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_dirname_r( "/usr/", "/", 1, buff, sizeof(buff), 0 );
214e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_dirname_r( "usr", ".", 1, buff, sizeof(buff), 0 );
215e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_dirname_r( ".", ".", 1, buff, sizeof(buff), 0 );
216e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    test_dirname_r( "..", ".", 1, buff, sizeof(buff), 0 );
217e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project#endif
218e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project
219e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project    return (fail > 0);
220e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project}
221e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project
222