#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