Home | History | Annotate | Download | only in base
      1 // Copyright 2016 the V8 project 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 "src/base/file-utils.h"
      6 
      7 #include <stdlib.h>
      8 #include <string.h>
      9 
     10 #include "src/base/platform/platform.h"
     11 
     12 namespace v8 {
     13 namespace base {
     14 
     15 char* RelativePath(char** buffer, const char* exec_path, const char* name) {
     16   DCHECK(exec_path);
     17   int path_separator = static_cast<int>(strlen(exec_path)) - 1;
     18   while (path_separator >= 0 &&
     19          !OS::isDirectorySeparator(exec_path[path_separator])) {
     20     path_separator--;
     21   }
     22   if (path_separator >= 0) {
     23     int name_length = static_cast<int>(strlen(name));
     24     *buffer =
     25         reinterpret_cast<char*>(calloc(path_separator + name_length + 2, 1));
     26     *buffer[0] = '\0';
     27     strncat(*buffer, exec_path, path_separator + 1);
     28     strncat(*buffer, name, name_length);
     29   } else {
     30     *buffer = strdup(name);
     31   }
     32   return *buffer;
     33 }
     34 
     35 }  // namespace base
     36 }  // namespace v8
     37