1/* Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 * Use of this source code is governed by a BSD-style license that can be 3 * found in the LICENSE file. */ 4 5#include <limits.h> 6#include <string.h> 7 8#include "nacl_io/kernel_intercept.h" 9#include "nacl_io/kernel_wrap.h" 10 11/* 12 * This interception should not really be needed under glibc since we can 13 * hook the internal calls to getcwd. However, we need to intercept it here 14 * since gtest call getcwd in a static constructor which general runs before 15 * nacl_io is initiliased. 16 */ 17char* getcwd(char* buf, size_t size) { 18 // If size is 0, allocate as much as we need. 19 if (size == 0) { 20 char stack_buf[PATH_MAX + 1]; 21 if (!ki_getcwd(stack_buf, PATH_MAX)) 22 return NULL; 23 size = strlen(stack_buf) + 1; 24 } 25 // Allocate the buffer if needed 26 if (buf == NULL) { 27 buf = (char*)malloc(size); 28 } 29 return ki_getcwd(buf, size); 30} 31