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/files/file.h" | 5 #include "base/files/file.h" |
6 | 6 |
7 #include <errno.h> | 7 #include <errno.h> |
8 #include <fcntl.h> | 8 #include <fcntl.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 #include <sys/stat.h> | 10 #include <sys/stat.h> |
(...skipping 26 matching lines...) Expand all Loading... |
37 } | 37 } |
38 #else | 38 #else |
39 int CallFstat(int fd, stat_wrapper_t *sb) { | 39 int CallFstat(int fd, stat_wrapper_t *sb) { |
40 ThreadRestrictions::AssertIOAllowed(); | 40 ThreadRestrictions::AssertIOAllowed(); |
41 return fstat64(fd, sb); | 41 return fstat64(fd, sb); |
42 } | 42 } |
43 #endif | 43 #endif |
44 | 44 |
45 // NaCl doesn't provide the following system calls, so either simulate them or | 45 // NaCl doesn't provide the following system calls, so either simulate them or |
46 // wrap them in order to minimize the number of #ifdef's in this file. | 46 // wrap them in order to minimize the number of #ifdef's in this file. |
47 #if !defined(OS_NACL) | 47 #if !defined(OS_NACL) && !defined(OS_AIX) |
48 bool IsOpenAppend(PlatformFile file) { | 48 bool IsOpenAppend(PlatformFile file) { |
49 return (fcntl(file, F_GETFL) & O_APPEND) != 0; | 49 return (fcntl(file, F_GETFL) & O_APPEND) != 0; |
50 } | 50 } |
51 | 51 |
52 int CallFtruncate(PlatformFile file, int64_t length) { | 52 int CallFtruncate(PlatformFile file, int64_t length) { |
53 return HANDLE_EINTR(ftruncate(file, length)); | 53 return HANDLE_EINTR(ftruncate(file, length)); |
54 } | 54 } |
55 | 55 |
56 int CallFutimes(PlatformFile file, const struct timeval times[2]) { | 56 int CallFutimes(PlatformFile file, const struct timeval times[2]) { |
57 #ifdef __USE_XOPEN2K8 | 57 #ifdef __USE_XOPEN2K8 |
(...skipping 15 matching lines...) Expand all Loading... |
73 File::Error CallFcntlFlock(PlatformFile file, bool do_lock) { | 73 File::Error CallFcntlFlock(PlatformFile file, bool do_lock) { |
74 struct flock lock; | 74 struct flock lock; |
75 lock.l_type = do_lock ? F_WRLCK : F_UNLCK; | 75 lock.l_type = do_lock ? F_WRLCK : F_UNLCK; |
76 lock.l_whence = SEEK_SET; | 76 lock.l_whence = SEEK_SET; |
77 lock.l_start = 0; | 77 lock.l_start = 0; |
78 lock.l_len = 0; // Lock entire file. | 78 lock.l_len = 0; // Lock entire file. |
79 if (HANDLE_EINTR(fcntl(file, F_SETLK, &lock)) == -1) | 79 if (HANDLE_EINTR(fcntl(file, F_SETLK, &lock)) == -1) |
80 return File::OSErrorToFileError(errno); | 80 return File::OSErrorToFileError(errno); |
81 return File::FILE_OK; | 81 return File::FILE_OK; |
82 } | 82 } |
83 #else // defined(OS_NACL) | 83 #else // defined(OS_NACL) && !defined(OS_AIX) |
84 | 84 |
85 bool IsOpenAppend(PlatformFile file) { | 85 bool IsOpenAppend(PlatformFile file) { |
86 // NaCl doesn't implement fcntl. Since NaCl's write conforms to the POSIX | 86 // NaCl doesn't implement fcntl. Since NaCl's write conforms to the POSIX |
87 // standard and always appends if the file is opened with O_APPEND, just | 87 // standard and always appends if the file is opened with O_APPEND, just |
88 // return false here. | 88 // return false here. |
89 return false; | 89 return false; |
90 } | 90 } |
91 | 91 |
92 int CallFtruncate(PlatformFile file, int64_t length) { | 92 int CallFtruncate(PlatformFile file, int64_t length) { |
93 NOTIMPLEMENTED(); // NaCl doesn't implement ftruncate. | 93 NOTIMPLEMENTED(); // NaCl doesn't implement ftruncate. |
(...skipping 431 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
525 return !HANDLE_EINTR(fsync(file_.get())); | 525 return !HANDLE_EINTR(fsync(file_.get())); |
526 #endif | 526 #endif |
527 } | 527 } |
528 | 528 |
529 void File::SetPlatformFile(PlatformFile file) { | 529 void File::SetPlatformFile(PlatformFile file) { |
530 DCHECK(!file_.is_valid()); | 530 DCHECK(!file_.is_valid()); |
531 file_.reset(file); | 531 file_.reset(file); |
532 } | 532 } |
533 | 533 |
534 } // namespace base | 534 } // namespace base |
OLD | NEW |