file-utils.cc 937 Bytes
Newer Older
1 2 3 4 5 6
// Copyright 2016 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "src/base/file-utils.h"

7
#include <stdlib.h>
8 9 10
#include <string.h>

#include "src/base/platform/platform.h"
11
#include "src/base/platform/wrappers.h"
12 13

namespace v8 {
14
namespace base {
15

16
std::unique_ptr<char[]> RelativePath(const char* exec_path, const char* name) {
17
  DCHECK(exec_path);
18 19 20 21
  size_t basename_start = strlen(exec_path);
  while (basename_start > 0 &&
         !OS::isDirectorySeparator(exec_path[basename_start - 1])) {
    --basename_start;
22
  }
23 24
  size_t name_length = strlen(name);
  auto buffer = std::make_unique<char[]>(basename_start + name_length + 1);
25 26
  if (basename_start > 0) memcpy(buffer.get(), exec_path, basename_start);
  memcpy(buffer.get() + basename_start, name, name_length);
27
  return buffer;
28 29
}

30
}  // namespace base
31
}  // namespace v8