|  | #include "tests.h" | 
|  |  | 
|  | #include <asm/unistd.h> | 
|  |  | 
|  | #ifdef __NR_getcwd | 
|  |  | 
|  | # include <limits.h> | 
|  | # include <stdio.h> | 
|  | # include <unistd.h> | 
|  |  | 
|  | int | 
|  | main(void) | 
|  | { | 
|  | long res; | 
|  | char cur_dir[PATH_MAX + 1]; | 
|  | static const size_t bogus_size = (size_t) 0xbadc0deddeadfaceULL; | 
|  |  | 
|  | res = syscall(__NR_getcwd, cur_dir, sizeof(cur_dir)); | 
|  |  | 
|  | if (res <= 0) | 
|  | perror_msg_and_fail("getcwd"); | 
|  |  | 
|  | printf("getcwd("); | 
|  | print_quoted_string(cur_dir); | 
|  | printf(", %zu) = %ld\n", sizeof(cur_dir), res); | 
|  |  | 
|  | res = syscall(__NR_getcwd, cur_dir, 0); | 
|  | printf("getcwd(%p, 0) = %s\n", cur_dir, sprintrc(res)); | 
|  |  | 
|  | res = syscall(__NR_getcwd, NULL, bogus_size); | 
|  | printf("getcwd(NULL, %zu) = %s\n", bogus_size, sprintrc(res)); | 
|  |  | 
|  | res = syscall(__NR_getcwd, (void *) -1L, sizeof(cur_dir)); | 
|  | printf("getcwd(%p, %zu) = %s\n", | 
|  | (void *) -1L, sizeof(cur_dir), sprintrc(res)); | 
|  |  | 
|  | puts("+++ exited with 0 +++"); | 
|  |  | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | #else | 
|  |  | 
|  | SKIP_MAIN_UNDEFINED("__NR_getcwd"); | 
|  |  | 
|  | #endif |