| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef BIN_FILE_H_ | 5 #ifndef BIN_FILE_H_ |
| 6 #define BIN_FILE_H_ | 6 #define BIN_FILE_H_ |
| 7 | 7 |
| 8 #include <stdlib.h> | 8 #include <stdlib.h> |
| 9 #include <string.h> | 9 #include <string.h> |
| 10 #include <stdio.h> | 10 #include <stdio.h> |
| 11 #include <sys/types.h> | 11 #include <sys/types.h> |
| 12 | 12 |
| 13 #include "bin/builtin.h" | 13 #include "bin/builtin.h" |
| 14 #include "bin/dartutils.h" | 14 #include "bin/dartutils.h" |
| 15 | 15 |
| 16 | |
| 17 namespace dart { | 16 namespace dart { |
| 18 namespace bin { | 17 namespace bin { |
| 19 | 18 |
| 20 // Forward declaration. | 19 // Forward declaration. |
| 21 class FileHandle; | 20 class FileHandle; |
| 22 | 21 |
| 23 class File { | 22 class File { |
| 24 public: | 23 public: |
| 25 enum FileOpenMode { | 24 enum FileOpenMode { |
| 26 kRead = 0, | 25 kRead = 0, |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 122 // Lock range of a file. | 121 // Lock range of a file. |
| 123 bool Lock(LockType lock, int64_t start, int64_t end); | 122 bool Lock(LockType lock, int64_t start, int64_t end); |
| 124 | 123 |
| 125 // Returns whether the file has been closed. | 124 // Returns whether the file has been closed. |
| 126 bool IsClosed(); | 125 bool IsClosed(); |
| 127 | 126 |
| 128 // Open the file with the given path. The file is always opened for | 127 // Open the file with the given path. The file is always opened for |
| 129 // reading. If mode contains kWrite the file is opened for both | 128 // reading. If mode contains kWrite the file is opened for both |
| 130 // reading and writing. If mode contains kWrite and the file does | 129 // reading and writing. If mode contains kWrite and the file does |
| 131 // not exist the file is created. The file is truncated to length 0 if | 130 // not exist the file is created. The file is truncated to length 0 if |
| 132 // mode contains kTruncate. | 131 // mode contains kTruncate. Assumes we are in an API scope. |
| 132 static File* ScopedOpen(const char* path, FileOpenMode mode); |
| 133 |
| 134 // Like ScopedOpen(), but no API scope is needed. |
| 133 static File* Open(const char* path, FileOpenMode mode); | 135 static File* Open(const char* path, FileOpenMode mode); |
| 134 | 136 |
| 135 // Create a file object for the specified stdio file descriptor | 137 // Create a file object for the specified stdio file descriptor |
| 136 // (stdin, stout or stderr). | 138 // (stdin, stout or stderr). |
| 137 static File* OpenStdio(int fd); | 139 static File* OpenStdio(int fd); |
| 138 | 140 |
| 139 static bool Exists(const char* path); | 141 static bool Exists(const char* path); |
| 140 static bool Create(const char* path); | 142 static bool Create(const char* path); |
| 141 static bool CreateLink(const char* path, const char* target); | 143 static bool CreateLink(const char* path, const char* target); |
| 142 static bool Delete(const char* path); | 144 static bool Delete(const char* path); |
| 143 static bool DeleteLink(const char* path); | 145 static bool DeleteLink(const char* path); |
| 144 static bool Rename(const char* old_path, const char* new_path); | 146 static bool Rename(const char* old_path, const char* new_path); |
| 145 static bool RenameLink(const char* old_path, const char* new_path); | 147 static bool RenameLink(const char* old_path, const char* new_path); |
| 146 static bool Copy(const char* old_path, const char* new_path); | 148 static bool Copy(const char* old_path, const char* new_path); |
| 147 static int64_t LengthFromPath(const char* path); | 149 static int64_t LengthFromPath(const char* path); |
| 148 static void Stat(const char* path, int64_t* data); | 150 static void Stat(const char* path, int64_t* data); |
| 149 static time_t LastModified(const char* path); | 151 static time_t LastModified(const char* path); |
| 150 static char* LinkTarget(const char* pathname); | 152 static const char* LinkTarget(const char* pathname); |
| 151 static bool IsAbsolutePath(const char* path); | 153 static bool IsAbsolutePath(const char* path); |
| 152 static char* GetCanonicalPath(const char* path); | 154 static const char* GetCanonicalPath(const char* path); |
| 153 static const char* PathSeparator(); | 155 static const char* PathSeparator(); |
| 154 static const char* StringEscapedPathSeparator(); | 156 static const char* StringEscapedPathSeparator(); |
| 155 static Type GetType(const char* path, bool follow_links); | 157 static Type GetType(const char* path, bool follow_links); |
| 156 static Identical AreIdentical(const char* file_1, const char* file_2); | 158 static Identical AreIdentical(const char* file_1, const char* file_2); |
| 157 static StdioHandleType GetStdioHandleType(int fd); | 159 static StdioHandleType GetStdioHandleType(int fd); |
| 158 | 160 |
| 159 static FileOpenMode DartModeToFileMode(DartFileOpenMode mode); | 161 static FileOpenMode DartModeToFileMode(DartFileOpenMode mode); |
| 160 | 162 |
| 161 static CObject* ExistsRequest(const CObjectArray& request); | 163 static CObject* ExistsRequest(const CObjectArray& request); |
| 162 static CObject* CreateRequest(const CObjectArray& request); | 164 static CObject* CreateRequest(const CObjectArray& request); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 184 static CObject* LinkTargetRequest(const CObjectArray& request); | 186 static CObject* LinkTargetRequest(const CObjectArray& request); |
| 185 static CObject* TypeRequest(const CObjectArray& request); | 187 static CObject* TypeRequest(const CObjectArray& request); |
| 186 static CObject* IdenticalRequest(const CObjectArray& request); | 188 static CObject* IdenticalRequest(const CObjectArray& request); |
| 187 static CObject* StatRequest(const CObjectArray& request); | 189 static CObject* StatRequest(const CObjectArray& request); |
| 188 static CObject* LockRequest(const CObjectArray& request); | 190 static CObject* LockRequest(const CObjectArray& request); |
| 189 | 191 |
| 190 private: | 192 private: |
| 191 explicit File(FileHandle* handle) : handle_(handle) { } | 193 explicit File(FileHandle* handle) : handle_(handle) { } |
| 192 void Close(); | 194 void Close(); |
| 193 | 195 |
| 196 static File* FileOpenW(const wchar_t* system_name, FileOpenMode mode); |
| 197 |
| 194 static const int kClosedFd = -1; | 198 static const int kClosedFd = -1; |
| 195 | 199 |
| 196 // FileHandle is an OS specific class which stores data about the file. | 200 // FileHandle is an OS specific class which stores data about the file. |
| 197 FileHandle* handle_; // OS specific handle for the file. | 201 FileHandle* handle_; // OS specific handle for the file. |
| 198 | 202 |
| 199 DISALLOW_COPY_AND_ASSIGN(File); | 203 DISALLOW_COPY_AND_ASSIGN(File); |
| 200 }; | 204 }; |
| 201 | 205 |
| 202 } // namespace bin | 206 } // namespace bin |
| 203 } // namespace dart | 207 } // namespace dart |
| 204 | 208 |
| 205 #endif // BIN_FILE_H_ | 209 #endif // BIN_FILE_H_ |
| OLD | NEW |