| Index: runtime/bin/directory.cc
|
| diff --git a/runtime/bin/directory.cc b/runtime/bin/directory.cc
|
| index 3b969935bb61cccf191e4862b5fcf15902141009..8b1e57c31a0b3bfaaa32aa6594c870b952d64040 100644
|
| --- a/runtime/bin/directory.cc
|
| +++ b/runtime/bin/directory.cc
|
| @@ -38,9 +38,7 @@ void FUNCTION_NAME(Directory_Exists)(Dart_NativeArguments args) {
|
| Dart_SetReturnValue(args, Dart_NewInteger(kDoesNotExist));
|
| } else {
|
| Dart_Handle err = DartUtils::NewDartOSError();
|
| - if (Dart_IsError(err)) {
|
| - Dart_PropagateError(err);
|
| - }
|
| + if (Dart_IsError(err)) Dart_PropagateError(err);
|
| Dart_SetReturnValue(args, err);
|
| }
|
| Dart_ExitScope();
|
| @@ -54,9 +52,7 @@ void FUNCTION_NAME(Directory_Create)(Dart_NativeArguments args) {
|
| Dart_SetReturnValue(args, Dart_True());
|
| } else {
|
| Dart_Handle err = DartUtils::NewDartOSError();
|
| - if (Dart_IsError(err)) {
|
| - Dart_PropagateError(err);
|
| - }
|
| + if (Dart_IsError(err)) Dart_PropagateError(err);
|
| Dart_SetReturnValue(args, err);
|
| }
|
| Dart_ExitScope();
|
| @@ -72,9 +68,7 @@ void FUNCTION_NAME(Directory_CreateTemp)(Dart_NativeArguments args) {
|
| free(result);
|
| } else {
|
| Dart_Handle err = DartUtils::NewDartOSError();
|
| - if (Dart_IsError(err)) {
|
| - Dart_PropagateError(err);
|
| - }
|
| + if (Dart_IsError(err)) Dart_PropagateError(err);
|
| Dart_SetReturnValue(args, err);
|
| }
|
| Dart_ExitScope();
|
| @@ -90,9 +84,23 @@ void FUNCTION_NAME(Directory_Delete)(Dart_NativeArguments args) {
|
| Dart_SetReturnValue(args, Dart_True());
|
| } else {
|
| Dart_Handle err = DartUtils::NewDartOSError();
|
| - if (Dart_IsError(err)) {
|
| - Dart_PropagateError(err);
|
| - }
|
| + if (Dart_IsError(err)) Dart_PropagateError(err);
|
| + Dart_SetReturnValue(args, err);
|
| + }
|
| + Dart_ExitScope();
|
| +}
|
| +
|
| +
|
| +void FUNCTION_NAME(Directory_Rename)(Dart_NativeArguments args) {
|
| + Dart_EnterScope();
|
| + Dart_Handle path = Dart_GetNativeArgument(args, 0);
|
| + Dart_Handle newPath = Dart_GetNativeArgument(args, 1);
|
| + if (Directory::Rename(DartUtils::GetStringValue(path),
|
| + DartUtils::GetStringValue(newPath))) {
|
| + Dart_SetReturnValue(args, Dart_True());
|
| + } else {
|
| + Dart_Handle err = DartUtils::NewDartOSError();
|
| + if (Dart_IsError(err)) Dart_PropagateError(err);
|
| Dart_SetReturnValue(args, err);
|
| }
|
| Dart_ExitScope();
|
| @@ -191,6 +199,21 @@ static CObject* DirectoryListRequest(const CObjectArray& request,
|
| }
|
|
|
|
|
| +static CObject* DirectoryRenameRequest(const CObjectArray& request,
|
| + Dart_Port response_port) {
|
| + if (request.Length() == 3 &&
|
| + request[1]->IsString() &&
|
| + request[2]->IsString()) {
|
| + CObjectString path(request[1]);
|
| + CObjectString new_path(request[2]);
|
| + bool completed = Directory::Rename(path.CString(), new_path.CString());
|
| + if (completed) return CObject::True();
|
| + return CObject::NewOSError();
|
| + }
|
| + return CObject::IllegalArgumentError();
|
| +}
|
| +
|
| +
|
| void DirectoryService(Dart_Port dest_port_id,
|
| Dart_Port reply_port_id,
|
| Dart_CObject* message) {
|
| @@ -215,6 +238,9 @@ void DirectoryService(Dart_Port dest_port_id,
|
| case Directory::kListRequest:
|
| response = DirectoryListRequest(request, reply_port_id);
|
| break;
|
| + case Directory::kRenameRequest:
|
| + response = DirectoryRenameRequest(request, reply_port_id);
|
| + break;
|
| default:
|
| UNREACHABLE();
|
| }
|
|
|