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 "nacl_io/kernel_handle.h" | 5 #include "nacl_io/kernel_handle.h" |
6 | 6 |
7 #include <errno.h> | 7 #include <errno.h> |
8 #include <fcntl.h> | 8 #include <fcntl.h> |
9 #include <pthread.h> | 9 #include <pthread.h> |
10 | 10 |
11 #ifndef WIN32 | |
12 // Needed for SEEK_SET/SEEK_CUR/SEEK_END. | |
13 #include <unistd.h> | |
14 #endif | |
15 | |
16 #include "nacl_io/mount.h" | 11 #include "nacl_io/mount.h" |
17 #include "nacl_io/mount_node.h" | 12 #include "nacl_io/mount_node.h" |
| 13 #include "nacl_io/osunistd.h" |
18 | 14 |
19 // It is only legal to construct a handle while the kernel lock is held. | 15 // It is only legal to construct a handle while the kernel lock is held. |
20 KernelHandle::KernelHandle(Mount* mnt, MountNode* node) | 16 KernelHandle::KernelHandle(Mount* mnt, MountNode* node) |
21 : mount_(mnt), node_(node), offs_(0) {} | 17 : mount_(mnt), node_(node), offs_(0) {} |
22 | 18 |
23 Error KernelHandle::Init(int open_mode) { | 19 Error KernelHandle::Init(int open_mode) { |
24 if (open_mode & O_APPEND) { | 20 if (open_mode & O_APPEND) { |
25 size_t node_size; | 21 size_t node_size; |
26 Error error = node_->GetSize(&offs_); | 22 Error error = node_->GetSize(&offs_); |
27 if (error) | 23 if (error) |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
64 // end and the new end. | 60 // end and the new end. |
65 if (new_offset > node_size) { | 61 if (new_offset > node_size) { |
66 error = node_->FTruncate(new_offset); | 62 error = node_->FTruncate(new_offset); |
67 if (error) | 63 if (error) |
68 return EINVAL; | 64 return EINVAL; |
69 } | 65 } |
70 | 66 |
71 *out_offset = offs_ = new_offset; | 67 *out_offset = offs_ = new_offset; |
72 return 0; | 68 return 0; |
73 } | 69 } |
OLD | NEW |