| OLD | NEW | 
|   1 // Copyright 2016 the V8 project authors. All rights reserved. |   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 |   2 // Use of this source code is governed by a BSD-style license that can be | 
|   3 // found in the LICENSE file. |   3 // found in the LICENSE file. | 
|   4  |   4  | 
|   5 #include "src/base/file-utils.h" |   5 #include "src/base/file-utils.h" | 
|   6  |   6  | 
|   7 #include <stdlib.h> |   7 #include <stdlib.h> | 
|   8 #include <string.h> |   8 #include <string.h> | 
|   9  |   9  | 
|  10 #include "src/base/platform/platform.h" |  10 #include "src/base/platform/platform.h" | 
|  11  |  11  | 
|  12 namespace v8 { |  12 namespace v8 { | 
|  13 namespace internal { |  13 namespace base { | 
|  14  |  14  | 
|  15 char* RelativePath(char** buffer, const char* exec_path, const char* name) { |  15 char* RelativePath(char** buffer, const char* exec_path, const char* name) { | 
|  16   DCHECK(exec_path); |  16   DCHECK(exec_path); | 
|  17   int path_separator = static_cast<int>(strlen(exec_path)) - 1; |  17   int path_separator = static_cast<int>(strlen(exec_path)) - 1; | 
|  18   while (path_separator >= 0 && |  18   while (path_separator >= 0 && | 
|  19          !base::OS::isDirectorySeparator(exec_path[path_separator])) { |  19          !OS::isDirectorySeparator(exec_path[path_separator])) { | 
|  20     path_separator--; |  20     path_separator--; | 
|  21   } |  21   } | 
|  22   if (path_separator >= 0) { |  22   if (path_separator >= 0) { | 
|  23     int name_length = static_cast<int>(strlen(name)); |  23     int name_length = static_cast<int>(strlen(name)); | 
|  24     *buffer = |  24     *buffer = | 
|  25         reinterpret_cast<char*>(calloc(path_separator + name_length + 2, 1)); |  25         reinterpret_cast<char*>(calloc(path_separator + name_length + 2, 1)); | 
|  26     *buffer[0] = '\0'; |  26     *buffer[0] = '\0'; | 
|  27     strncat(*buffer, exec_path, path_separator + 1); |  27     strncat(*buffer, exec_path, path_separator + 1); | 
|  28     strncat(*buffer, name, name_length); |  28     strncat(*buffer, name, name_length); | 
|  29   } else { |  29   } else { | 
|  30     *buffer = strdup(name); |  30     *buffer = strdup(name); | 
|  31   } |  31   } | 
|  32   return *buffer; |  32   return *buffer; | 
|  33 } |  33 } | 
|  34  |  34  | 
|  35 }  // namespace internal |  35 }  // namespace base | 
|  36 }  // namespace v8 |  36 }  // namespace v8 | 
| OLD | NEW |