Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(249)

Unified Diff: runtime/bin/directory_openbsd.cc

Issue 1559053002: Refs #10260 OpenBSD support #25327 Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: runtime/bin/directory_openbsd.cc
diff --git a/runtime/bin/directory_macos.cc b/runtime/bin/directory_openbsd.cc
similarity index 96%
copy from runtime/bin/directory_macos.cc
copy to runtime/bin/directory_openbsd.cc
index 55994aa79abdd26998d52d5f3a4de0f706bd918a..3f293e2966ca171d6a7b10cd10a517d975ce8f37 100644
--- a/runtime/bin/directory_macos.cc
+++ b/runtime/bin/directory_openbsd.cc
@@ -3,7 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
#include "platform/globals.h"
-#if defined(TARGET_OS_MACOS)
+#if defined(TARGET_OS_OPENBSD)
#include "bin/directory.h"
@@ -51,7 +51,7 @@ bool PathBuffer::Add(const char* name) {
data[PATH_MAX] = '\0';
if (written <= PATH_MAX - length_ &&
written >= 0 &&
- static_cast<size_t>(written) == strlen(name)) {
+ static_cast<size_t>(written) == strnlen(name, PATH_MAX + 1)) {
length_ += written;
return true;
} else {
@@ -343,7 +343,15 @@ Directory::ExistsResult Directory::Exists(const char* dir_name) {
char* Directory::Current() {
- return getcwd(NULL, 0);
+ // Android's getcwd adheres closely to the POSIX standard. It won't
ricow1 2016/01/05 07:12:13 Android's?
mulander 2016/01/05 16:13:48 You are correct. getcwd(3) on OpenBSD does allocat
mulander 2016/01/05 16:13:48 Acknowledged.
mulander 2016/01/05 16:13:48 Done.
+ // allocate memory. We need to make our own copy.
+
+ char buffer[PATH_MAX];
+ if (NULL == getcwd(buffer, PATH_MAX)) {
+ return NULL;
+ }
+
+ return strdup(buffer);
}
@@ -364,7 +372,6 @@ bool Directory::Create(const char* dir_name) {
return (result == 0);
}
-
char* Directory::SystemTemp() {
const char* temp_dir = getenv("TMPDIR");
if (temp_dir == NULL) {
@@ -382,7 +389,6 @@ char* Directory::SystemTemp() {
return result;
}
-
char* Directory::CreateTemp(const char* prefix) {
// Returns a new, unused directory name, adding characters to the end
// of prefix. Creates the directory with the permissions specified
@@ -431,4 +437,4 @@ bool Directory::Rename(const char* path, const char* new_path) {
} // namespace bin
} // namespace dart
-#endif // defined(TARGET_OS_MACOS)
+#endif // defined(TARGET_OS_OPENBSD)

Powered by Google App Engine
This is Rietveld 408576698