Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(671)

Unified Diff: runtime/bin/directory_impl.dart

Issue 9316066: Implement recursive directory deletion. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Address comments. Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: runtime/bin/directory_impl.dart
diff --git a/runtime/bin/directory_impl.dart b/runtime/bin/directory_impl.dart
index 598a5a4e14e5c58dfbba03bd88cb4e9146b58992..f455d7477f7beb72cedfd0842b459fe2d9396659 100644
--- a/runtime/bin/directory_impl.dart
+++ b/runtime/bin/directory_impl.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
+// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
@@ -94,13 +94,14 @@ class _DirCreateTempOperation extends _DirectoryOperation {
class _DirDeleteOperation extends _DirectoryOperation {
- _DirDeleteOperation(String this._path);
+ _DirDeleteOperation(String this._path, bool this._recursive);
void execute(ReceivePort port) {
- _replyPort.send(_Directory._delete(_path), port.toSendPort());
+ _replyPort.send(_Directory._delete(_path, _recursive), port.toSendPort());
}
String _path;
+ bool _recursive;
}
@@ -165,12 +166,13 @@ class _Directory implements Directory {
_OSStatus status) native "Directory_CreateTemp";
static int _exists(String path) native "Directory_Exists";
static bool _create(String path) native "Directory_Create";
- static bool _delete(String path) native "Directory_Delete";
+ static bool _delete(String path, bool recursive) native "Directory_Delete";
void exists() {
- var handler = (_existsHandler != null) ? _existsHandler : (result) => null;
var operation = new _DirExistsOperation(_path);
_scheduler.enqueue(operation, (result, ignored) {
+ var handler =
+ (_existsHandler != null) ? _existsHandler : (result) => null;
if (result < 0) {
if (_errorHandler != null) {
_errorHandler("Diretory exists test failed: $_path");
@@ -190,9 +192,9 @@ class _Directory implements Directory {
}
void create() {
- var handler = (_createHandler != null) ? _createHandler : () => null;
var operation = new _DirCreateOperation(_path);
_scheduler.enqueue(operation, (result, ignored) {
+ var handler = (_createHandler != null) ? _createHandler : () => null;
if (result) {
handler();
} else if (_errorHandler != null) {
@@ -208,10 +210,10 @@ class _Directory implements Directory {
}
void createTemp() {
- var handler =
- (_createTempHandler != null) ? _createTempHandler : () => null;
var operation = new _DirCreateTempOperation(_path);
_scheduler.enqueue(operation, (result, ignored) {
+ var handler =
+ (_createTempHandler != null) ? _createTempHandler : () => null;
if (result is !_OSStatus) {
_path = result;
handler();
@@ -235,20 +237,24 @@ class _Directory implements Directory {
}
}
- void delete() {
- var handler = (_deleteHandler != null) ? _deleteHandler : () => null;
- var operation = new _DirDeleteOperation(_path);
+ void delete([bool recursive = false]) {
+ var operation = new _DirDeleteOperation(_path, recursive);
_scheduler.enqueue(operation, (result, ignored) {
+ var handler = (_deleteHandler != null) ? _deleteHandler : () => null;
if (result) {
handler();
} else if (_errorHandler != null) {
- _errorHandler("Directory deletion failed: $_path");
+ if (recursive) {
+ _errorHandler("Recursive directory deletion failed: $_path");
+ } else {
+ _errorHandler("Non-recursive directory deletion failed: $_path");
+ }
}
});
}
- void deleteSync() {
- if (!_delete(_path)) {
+ void deleteSync([bool recursive = false]) {
+ if (!_delete(_path, recursive)) {
throw new DirectoryException("Directory deletion failed: $_path");
}
}

Powered by Google App Engine
This is Rietveld 408576698