| Index: src/platform-posix.cc
|
| ===================================================================
|
| --- src/platform-posix.cc (revision 8778)
|
| +++ src/platform-posix.cc (working copy)
|
| @@ -33,15 +33,19 @@
|
| #include <errno.h>
|
| #include <time.h>
|
|
|
| +#include <sys/mman.h>
|
| #include <sys/socket.h>
|
| #include <sys/resource.h>
|
| #include <sys/time.h>
|
| #include <sys/types.h>
|
| +#include <sys/stat.h>
|
|
|
| #include <arpa/inet.h>
|
| #include <netinet/in.h>
|
| #include <netdb.h>
|
|
|
| +#undef MAP_TYPE
|
| +
|
| #if defined(ANDROID)
|
| #define LOG_TAG "v8"
|
| #include <utils/Log.h> // LOG_PRI_VA
|
| @@ -66,6 +70,12 @@
|
| }
|
|
|
|
|
| +// Create guard pages.
|
| +void OS::Guard(void* address, const size_t size) {
|
| + mprotect(address, size, PROT_NONE);
|
| +}
|
| +
|
| +
|
| // ----------------------------------------------------------------------------
|
| // Math functions
|
|
|
| @@ -130,7 +140,14 @@
|
| //
|
|
|
| FILE* OS::FOpen(const char* path, const char* mode) {
|
| - return fopen(path, mode);
|
| + FILE* file = fopen(path, mode);
|
| + if (file == NULL) return NULL;
|
| + struct stat file_stat;
|
| + if (fstat(fileno(file), &file_stat) != 0) return NULL;
|
| + bool is_regular_file = ((file_stat.st_mode & S_IFREG) != 0);
|
| + if (is_regular_file) return file;
|
| + fclose(file);
|
| + return NULL;
|
| }
|
|
|
|
|
| @@ -139,6 +156,11 @@
|
| }
|
|
|
|
|
| +FILE* OS::OpenTemporaryFile() {
|
| + return tmpfile();
|
| +}
|
| +
|
| +
|
| const char* const OS::LogFileOpenMode = "w";
|
|
|
|
|
|
|