OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium 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 "base/file_util.h" | 5 #include "base/file_util.h" |
6 | 6 |
7 #include <dirent.h> | 7 #include <dirent.h> |
8 #include <errno.h> | 8 #include <errno.h> |
9 #include <fcntl.h> | 9 #include <fcntl.h> |
10 #include <libgen.h> | 10 #include <libgen.h> |
(...skipping 636 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
647 | 647 |
648 FILE* OpenFile(const FilePath& filename, const char* mode) { | 648 FILE* OpenFile(const FilePath& filename, const char* mode) { |
649 ThreadRestrictions::AssertIOAllowed(); | 649 ThreadRestrictions::AssertIOAllowed(); |
650 FILE* result = NULL; | 650 FILE* result = NULL; |
651 do { | 651 do { |
652 result = fopen(filename.value().c_str(), mode); | 652 result = fopen(filename.value().c_str(), mode); |
653 } while (!result && errno == EINTR); | 653 } while (!result && errno == EINTR); |
654 return result; | 654 return result; |
655 } | 655 } |
656 | 656 |
| 657 // NaCl doesn't implement system calls to open files directly. |
| 658 #if !defined(OS_NACL) |
| 659 FILE* FileToFILE(File file, const char* mode) { |
| 660 FILE* stream = fdopen(file.GetPlatformFile(), mode); |
| 661 if (stream) |
| 662 file.TakePlatformFile(); |
| 663 return stream; |
| 664 } |
| 665 #endif // !defined(OS_NACL) |
| 666 |
657 int ReadFile(const FilePath& filename, char* data, int max_size) { | 667 int ReadFile(const FilePath& filename, char* data, int max_size) { |
658 ThreadRestrictions::AssertIOAllowed(); | 668 ThreadRestrictions::AssertIOAllowed(); |
659 int fd = HANDLE_EINTR(open(filename.value().c_str(), O_RDONLY)); | 669 int fd = HANDLE_EINTR(open(filename.value().c_str(), O_RDONLY)); |
660 if (fd < 0) | 670 if (fd < 0) |
661 return -1; | 671 return -1; |
662 | 672 |
663 ssize_t bytes_read = HANDLE_EINTR(read(fd, data, max_size)); | 673 ssize_t bytes_read = HANDLE_EINTR(read(fd, data, max_size)); |
664 if (IGNORE_EINTR(close(fd)) < 0) | 674 if (IGNORE_EINTR(close(fd)) < 0) |
665 return -1; | 675 return -1; |
666 return bytes_read; | 676 return bytes_read; |
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
893 result = false; | 903 result = false; |
894 if (IGNORE_EINTR(close(outfile)) < 0) | 904 if (IGNORE_EINTR(close(outfile)) < 0) |
895 result = false; | 905 result = false; |
896 | 906 |
897 return result; | 907 return result; |
898 } | 908 } |
899 #endif // !defined(OS_MACOSX) | 909 #endif // !defined(OS_MACOSX) |
900 | 910 |
901 } // namespace internal | 911 } // namespace internal |
902 } // namespace base | 912 } // namespace base |
OLD | NEW |