| Index: runtime/bin/directory.h
|
| diff --git a/runtime/bin/directory.h b/runtime/bin/directory.h
|
| index 9402031054dd565791efe8d23b37cd1744f21b0e..e37aa769dc03741aa435f18dc1ab3d8d871a52d0 100644
|
| --- a/runtime/bin/directory.h
|
| +++ b/runtime/bin/directory.h
|
| @@ -25,9 +25,7 @@ enum ListType {
|
| class PathBuffer {
|
| public:
|
| PathBuffer();
|
| - ~PathBuffer() {
|
| - free(data_);
|
| - }
|
| + ~PathBuffer();
|
|
|
| bool Add(const char* name);
|
| bool AddW(const wchar_t* name);
|
| @@ -35,15 +33,18 @@ class PathBuffer {
|
| char* AsString() const;
|
| wchar_t* AsStringW() const;
|
|
|
| - void Reset(int new_length);
|
| + // Makes a scope allocated copy of the string.
|
| + const char* AsScopedString() const;
|
| +
|
| + void Reset(intptr_t new_length);
|
|
|
| - int length() const {
|
| + intptr_t length() const {
|
| return length_;
|
| }
|
|
|
| private:
|
| void* data_;
|
| - int length_;
|
| + intptr_t length_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(PathBuffer);
|
| };
|
| @@ -112,10 +113,10 @@ class DirectoryListing {
|
| }
|
| }
|
|
|
| - virtual bool HandleDirectory(char* dir_name) = 0;
|
| - virtual bool HandleFile(char* file_name) = 0;
|
| - virtual bool HandleLink(char* link_name) = 0;
|
| - virtual bool HandleError(const char* dir_name) = 0;
|
| + virtual bool HandleDirectory(const char* dir_name) = 0;
|
| + virtual bool HandleFile(const char* file_name) = 0;
|
| + virtual bool HandleLink(const char* link_name) = 0;
|
| + virtual bool HandleError() = 0;
|
| virtual void HandleDone() {}
|
|
|
| void Push(DirectoryListingEntry* directory) {
|
| @@ -145,8 +146,8 @@ class DirectoryListing {
|
| return follow_links_;
|
| }
|
|
|
| - char* CurrentPath() {
|
| - return path_buffer_.AsString();
|
| + const char* CurrentPath() {
|
| + return path_buffer_.AsScopedString();
|
| }
|
|
|
| PathBuffer& path_buffer() {
|
| @@ -182,10 +183,10 @@ class AsyncDirectoryListing : public DirectoryListing {
|
| : DirectoryListing(dir_name, recursive, follow_links) {}
|
|
|
| virtual ~AsyncDirectoryListing() {}
|
| - virtual bool HandleDirectory(char* dir_name);
|
| - virtual bool HandleFile(char* file_name);
|
| - virtual bool HandleLink(char* file_name);
|
| - virtual bool HandleError(const char* dir_name);
|
| + virtual bool HandleDirectory(const char* dir_name);
|
| + virtual bool HandleFile(const char* file_name);
|
| + virtual bool HandleLink(const char* file_name);
|
| + virtual bool HandleError();
|
| virtual void HandleDone();
|
|
|
| void SetArray(CObjectArray* array, intptr_t length) {
|
| @@ -200,7 +201,7 @@ class AsyncDirectoryListing : public DirectoryListing {
|
| }
|
|
|
| private:
|
| - bool AddFileSystemEntityToResponse(Response response, char* arg);
|
| + bool AddFileSystemEntityToResponse(Response response, const char* arg);
|
| CObjectArray* array_;
|
| intptr_t index_;
|
| intptr_t length_;
|
| @@ -226,10 +227,10 @@ class SyncDirectoryListing: public DirectoryListing {
|
| DartUtils::GetDartType(DartUtils::kIOLibURL, "Link");
|
| }
|
| virtual ~SyncDirectoryListing() {}
|
| - virtual bool HandleDirectory(char* dir_name);
|
| - virtual bool HandleFile(char* file_name);
|
| - virtual bool HandleLink(char* file_name);
|
| - virtual bool HandleError(const char* dir_name);
|
| + virtual bool HandleDirectory(const char* dir_name);
|
| + virtual bool HandleFile(const char* file_name);
|
| + virtual bool HandleLink(const char* file_name);
|
| + virtual bool HandleError();
|
|
|
| private:
|
| Dart_Handle results_;
|
| @@ -252,11 +253,18 @@ class Directory {
|
|
|
| static void List(DirectoryListing* listing);
|
| static ExistsResult Exists(const char* path);
|
| - static char* Current();
|
| +
|
| + // Returns the current working directory. The caller must call
|
| + // free() on the result.
|
| + static char* CurrentNoScope();
|
| +
|
| + // Returns the current working directory. The returned string is allocated
|
| + // with Dart_ScopeAllocate(). It lasts only as long as the current API scope.
|
| + static const char* Current();
|
| + static const char* SystemTemp();
|
| + static const char* CreateTemp(const char* path);
|
| static bool SetCurrent(const char* path);
|
| static bool Create(const char* path);
|
| - static char* SystemTemp();
|
| - static char* CreateTemp(const char* path);
|
| static bool Delete(const char* path, bool recursive);
|
| static bool Rename(const char* path, const char* new_path);
|
|
|
|
|