1*cf84ac9aSAndroid Build Coastguard Worker #include "tests.h"
2*cf84ac9aSAndroid Build Coastguard Worker
3*cf84ac9aSAndroid Build Coastguard Worker #include <asm/unistd.h>
4*cf84ac9aSAndroid Build Coastguard Worker
5*cf84ac9aSAndroid Build Coastguard Worker #ifdef __NR_getcwd
6*cf84ac9aSAndroid Build Coastguard Worker
7*cf84ac9aSAndroid Build Coastguard Worker # include <limits.h>
8*cf84ac9aSAndroid Build Coastguard Worker # include <stdio.h>
9*cf84ac9aSAndroid Build Coastguard Worker # include <unistd.h>
10*cf84ac9aSAndroid Build Coastguard Worker
11*cf84ac9aSAndroid Build Coastguard Worker int
main(void)12*cf84ac9aSAndroid Build Coastguard Worker main(void)
13*cf84ac9aSAndroid Build Coastguard Worker {
14*cf84ac9aSAndroid Build Coastguard Worker long res;
15*cf84ac9aSAndroid Build Coastguard Worker char cur_dir[PATH_MAX + 1];
16*cf84ac9aSAndroid Build Coastguard Worker static const size_t bogus_size = (size_t) 0xbadc0deddeadfaceULL;
17*cf84ac9aSAndroid Build Coastguard Worker
18*cf84ac9aSAndroid Build Coastguard Worker res = syscall(__NR_getcwd, cur_dir, sizeof(cur_dir));
19*cf84ac9aSAndroid Build Coastguard Worker
20*cf84ac9aSAndroid Build Coastguard Worker if (res <= 0)
21*cf84ac9aSAndroid Build Coastguard Worker perror_msg_and_fail("getcwd");
22*cf84ac9aSAndroid Build Coastguard Worker
23*cf84ac9aSAndroid Build Coastguard Worker printf("getcwd(");
24*cf84ac9aSAndroid Build Coastguard Worker print_quoted_string(cur_dir);
25*cf84ac9aSAndroid Build Coastguard Worker printf(", %zu) = %ld\n", sizeof(cur_dir), res);
26*cf84ac9aSAndroid Build Coastguard Worker
27*cf84ac9aSAndroid Build Coastguard Worker res = syscall(__NR_getcwd, cur_dir, 0);
28*cf84ac9aSAndroid Build Coastguard Worker printf("getcwd(%p, 0) = %s\n", cur_dir, sprintrc(res));
29*cf84ac9aSAndroid Build Coastguard Worker
30*cf84ac9aSAndroid Build Coastguard Worker res = syscall(__NR_getcwd, NULL, bogus_size);
31*cf84ac9aSAndroid Build Coastguard Worker printf("getcwd(NULL, %zu) = %s\n", bogus_size, sprintrc(res));
32*cf84ac9aSAndroid Build Coastguard Worker
33*cf84ac9aSAndroid Build Coastguard Worker res = syscall(__NR_getcwd, (void *) -1L, sizeof(cur_dir));
34*cf84ac9aSAndroid Build Coastguard Worker printf("getcwd(%p, %zu) = %s\n",
35*cf84ac9aSAndroid Build Coastguard Worker (void *) -1L, sizeof(cur_dir), sprintrc(res));
36*cf84ac9aSAndroid Build Coastguard Worker
37*cf84ac9aSAndroid Build Coastguard Worker puts("+++ exited with 0 +++");
38*cf84ac9aSAndroid Build Coastguard Worker
39*cf84ac9aSAndroid Build Coastguard Worker return 0;
40*cf84ac9aSAndroid Build Coastguard Worker }
41*cf84ac9aSAndroid Build Coastguard Worker
42*cf84ac9aSAndroid Build Coastguard Worker #else
43*cf84ac9aSAndroid Build Coastguard Worker
44*cf84ac9aSAndroid Build Coastguard Worker SKIP_MAIN_UNDEFINED("__NR_getcwd");
45*cf84ac9aSAndroid Build Coastguard Worker
46*cf84ac9aSAndroid Build Coastguard Worker #endif
47