OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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/platform_file.h" | 5 #include "base/platform_file.h" |
6 | 6 |
7 #include <fcntl.h> | 7 #include <fcntl.h> |
8 #include <errno.h> | 8 #include <errno.h> |
9 #include <sys/stat.h> | 9 #include <sys/stat.h> |
10 | 10 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
45 | 45 |
46 int descriptor = open(WideToUTF8(name).c_str(), open_flags, | 46 int descriptor = open(WideToUTF8(name).c_str(), open_flags, |
47 S_IRUSR | S_IWUSR); | 47 S_IRUSR | S_IWUSR); |
48 | 48 |
49 if (flags & PLATFORM_FILE_OPEN_ALWAYS) { | 49 if (flags & PLATFORM_FILE_OPEN_ALWAYS) { |
50 if (descriptor > 0) { | 50 if (descriptor > 0) { |
51 if (created) | 51 if (created) |
52 *created = false; | 52 *created = false; |
53 } else { | 53 } else { |
54 open_flags |= O_CREAT; | 54 open_flags |= O_CREAT; |
| 55 if (flags & PLATFORM_FILE_EXCLUSIVE_READ || |
| 56 flags & PLATFORM_FILE_EXCLUSIVE_WRITE) { |
| 57 open_flags |= O_EXCL; // together with O_CREAT implies O_NOFOLLOW |
| 58 } |
55 descriptor = open(WideToUTF8(name).c_str(), open_flags, | 59 descriptor = open(WideToUTF8(name).c_str(), open_flags, |
56 S_IRUSR | S_IWUSR); | 60 S_IRUSR | S_IWUSR); |
57 if (created && descriptor > 0) | 61 if (created && descriptor > 0) |
58 *created = true; | 62 *created = true; |
59 } | 63 } |
60 } | 64 } |
61 | 65 |
| 66 if ((descriptor > 0) && (flags & PLATFORM_FILE_DELETE_ON_CLOSE)) { |
| 67 unlink(WideToUTF8(name).c_str()); |
| 68 } |
| 69 |
62 return descriptor; | 70 return descriptor; |
63 } | 71 } |
64 | 72 |
| 73 bool ClosePlatformFile(PlatformFile file) { |
| 74 return close(file); |
| 75 } |
| 76 |
65 } // namespace base | 77 } // namespace base |
OLD | NEW |