OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2014 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2014 The WebRTC Project Authors. All rights reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
11 #include "webrtc/base/platform_file.h" | 11 #include "webrtc/base/platform_file.h" |
12 | 12 |
13 #if defined(WEBRTC_WIN) | 13 #if defined(WEBRTC_WIN) |
14 #include <io.h> | 14 #include <io.h> |
15 #else | 15 #else |
| 16 #include <fcntl.h> |
| 17 #include <sys/stat.h> |
| 18 #include <sys/types.h> |
16 #include <unistd.h> | 19 #include <unistd.h> |
17 #endif | 20 #endif |
18 | 21 |
19 namespace rtc { | 22 namespace rtc { |
20 | 23 |
21 #if defined(WEBRTC_WIN) | 24 #if defined(WEBRTC_WIN) |
22 const PlatformFile kInvalidPlatformFileValue = INVALID_HANDLE_VALUE; | 25 const PlatformFile kInvalidPlatformFileValue = INVALID_HANDLE_VALUE; |
23 | 26 |
24 FILE* FdopenPlatformFileForWriting(PlatformFile file) { | 27 FILE* FdopenPlatformFileForWriting(PlatformFile file) { |
25 if (file == kInvalidPlatformFileValue) | 28 if (file == kInvalidPlatformFileValue) |
26 return NULL; | 29 return NULL; |
27 int fd = _open_osfhandle(reinterpret_cast<intptr_t>(file), 0); | 30 int fd = _open_osfhandle(reinterpret_cast<intptr_t>(file), 0); |
28 if (fd < 0) | 31 if (fd < 0) |
29 return NULL; | 32 return NULL; |
30 | 33 |
31 return _fdopen(fd, "w"); | 34 return _fdopen(fd, "w"); |
32 } | 35 } |
33 | 36 |
34 bool ClosePlatformFile(PlatformFile file) { | 37 bool ClosePlatformFile(PlatformFile file) { |
35 return CloseHandle(file) != 0; | 38 return CloseHandle(file) != 0; |
36 } | 39 } |
37 #else | 40 |
| 41 bool RemoveFile(const std::string& path) { |
| 42 return ::DeleteFile(ToUtf16(path).c_str()) != 0; |
| 43 } |
| 44 |
| 45 PlatformFile OpenPlatformFile(const std::string& path) { |
| 46 return ::CreateFile(ToUtf16(path).c_str(), GENERIC_READ | GENERIC_WRITE, 0, |
| 47 nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr); |
| 48 } |
| 49 |
| 50 PlatformFile CreatePlatformFile(const std::string& path) { |
| 51 return ::CreateFile(ToUtf16(path).c_str(), GENERIC_READ | GENERIC_WRITE, 0, |
| 52 nullptr, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr); |
| 53 } |
| 54 |
| 55 #else // defined(WEBRTC_WIN) |
| 56 |
38 const PlatformFile kInvalidPlatformFileValue = -1; | 57 const PlatformFile kInvalidPlatformFileValue = -1; |
39 | 58 |
40 FILE* FdopenPlatformFileForWriting(PlatformFile file) { | 59 FILE* FdopenPlatformFileForWriting(PlatformFile file) { |
41 return fdopen(file, "w"); | 60 return fdopen(file, "w"); |
42 } | 61 } |
43 | 62 |
44 bool ClosePlatformFile(PlatformFile file) { | 63 bool ClosePlatformFile(PlatformFile file) { |
45 return close(file); | 64 return close(file); |
46 } | 65 } |
| 66 |
| 67 bool RemoveFile(const std::string& path) { |
| 68 return ::unlink(path.c_str()) == 0; |
| 69 } |
| 70 |
| 71 PlatformFile OpenPlatformFile(const std::string& path) { |
| 72 return ::open(path.c_str(), O_RDWR); |
| 73 } |
| 74 |
| 75 PlatformFile CreatePlatformFile(const std::string& path) { |
| 76 return ::open(path.c_str(), O_CREAT | O_TRUNC | O_RDWR, S_IRUSR | S_IWUSR); |
| 77 } |
| 78 |
47 #endif | 79 #endif |
48 | 80 |
49 } // namespace rtc | 81 } // namespace rtc |
OLD | NEW |