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 #include "bin/file.h" | 5 #include "bin/file.h" |
6 | 6 |
7 #include "bin/builtin.h" | 7 #include "bin/builtin.h" |
8 #include "bin/dartutils.h" | 8 #include "bin/dartutils.h" |
9 #include "bin/io_buffer.h" | 9 #include "bin/io_buffer.h" |
10 #include "bin/thread.h" | 10 #include "bin/thread.h" |
(...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
517 Dart_SetReturnValue(args, Dart_NewBoolean(result)); | 517 Dart_SetReturnValue(args, Dart_NewBoolean(result)); |
518 } else { | 518 } else { |
519 Dart_Handle err = DartUtils::NewDartOSError(); | 519 Dart_Handle err = DartUtils::NewDartOSError(); |
520 if (Dart_IsError(err)) Dart_PropagateError(err); | 520 if (Dart_IsError(err)) Dart_PropagateError(err); |
521 Dart_SetReturnValue(args, err); | 521 Dart_SetReturnValue(args, err); |
522 } | 522 } |
523 Dart_ExitScope(); | 523 Dart_ExitScope(); |
524 } | 524 } |
525 | 525 |
526 | 526 |
| 527 void FUNCTION_NAME(File_RenameLink)(Dart_NativeArguments args) { |
| 528 Dart_EnterScope(); |
| 529 const char* old_path = |
| 530 DartUtils::GetStringValue(Dart_GetNativeArgument(args, 0)); |
| 531 const char* new_path = |
| 532 DartUtils::GetStringValue(Dart_GetNativeArgument(args, 1)); |
| 533 bool result = File::RenameLink(old_path, new_path); |
| 534 if (result) { |
| 535 Dart_SetReturnValue(args, Dart_NewBoolean(result)); |
| 536 } else { |
| 537 Dart_Handle err = DartUtils::NewDartOSError(); |
| 538 if (Dart_IsError(err)) Dart_PropagateError(err); |
| 539 Dart_SetReturnValue(args, err); |
| 540 } |
| 541 Dart_ExitScope(); |
| 542 } |
| 543 |
| 544 |
527 void FUNCTION_NAME(File_FullPath)(Dart_NativeArguments args) { | 545 void FUNCTION_NAME(File_FullPath)(Dart_NativeArguments args) { |
528 Dart_EnterScope(); | 546 Dart_EnterScope(); |
529 const char* str = | 547 const char* str = |
530 DartUtils::GetStringValue(Dart_GetNativeArgument(args, 0)); | 548 DartUtils::GetStringValue(Dart_GetNativeArgument(args, 0)); |
531 char* path = File::GetCanonicalPath(str); | 549 char* path = File::GetCanonicalPath(str); |
532 if (path != NULL) { | 550 if (path != NULL) { |
533 Dart_SetReturnValue(args, DartUtils::NewString(path)); | 551 Dart_SetReturnValue(args, DartUtils::NewString(path)); |
534 free(path); | 552 free(path); |
535 } else { | 553 } else { |
536 Dart_Handle err = DartUtils::NewDartOSError(); | 554 Dart_Handle err = DartUtils::NewDartOSError(); |
(...skipping 563 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1100 if (result) { | 1118 if (result) { |
1101 return CObject::True(); | 1119 return CObject::True(); |
1102 } else { | 1120 } else { |
1103 return CObject::NewOSError(); | 1121 return CObject::NewOSError(); |
1104 } | 1122 } |
1105 } | 1123 } |
1106 return CObject::IllegalArgumentError(); | 1124 return CObject::IllegalArgumentError(); |
1107 } | 1125 } |
1108 | 1126 |
1109 | 1127 |
| 1128 static CObject* FileRenameLinkRequest(const CObjectArray& request) { |
| 1129 if (request.Length() == 3 && |
| 1130 request[1]->IsString() && |
| 1131 request[2]->IsString()) { |
| 1132 CObjectString old_path(request[1]); |
| 1133 CObjectString new_path(request[2]); |
| 1134 bool completed = File::RenameLink(old_path.CString(), new_path.CString()); |
| 1135 if (completed) return CObject::True(); |
| 1136 return CObject::NewOSError(); |
| 1137 } |
| 1138 return CObject::IllegalArgumentError(); |
| 1139 } |
| 1140 |
| 1141 |
1110 static CObject* FileLinkTargetRequest(const CObjectArray& request) { | 1142 static CObject* FileLinkTargetRequest(const CObjectArray& request) { |
1111 if (request.Length() == 2 && request[1]->IsString()) { | 1143 if (request.Length() == 2 && request[1]->IsString()) { |
1112 CObjectString link_path(request[1]); | 1144 CObjectString link_path(request[1]); |
1113 char* target = File::LinkTarget(link_path.CString()); | 1145 char* target = File::LinkTarget(link_path.CString()); |
1114 if (target != NULL) { | 1146 if (target != NULL) { |
1115 CObject* result = new CObjectString(CObject::NewString(target)); | 1147 CObject* result = new CObjectString(CObject::NewString(target)); |
1116 free(target); | 1148 free(target); |
1117 return result; | 1149 return result; |
1118 } else { | 1150 } else { |
1119 return CObject::NewOSError(); | 1151 return CObject::NewOSError(); |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1241 break; | 1273 break; |
1242 case File::kReadIntoRequest: | 1274 case File::kReadIntoRequest: |
1243 response = FileReadIntoRequest(request); | 1275 response = FileReadIntoRequest(request); |
1244 break; | 1276 break; |
1245 case File::kWriteFromRequest: | 1277 case File::kWriteFromRequest: |
1246 response = FileWriteFromRequest(request); | 1278 response = FileWriteFromRequest(request); |
1247 break; | 1279 break; |
1248 case File::kDeleteLinkRequest: | 1280 case File::kDeleteLinkRequest: |
1249 response = FileDeleteLinkRequest(request); | 1281 response = FileDeleteLinkRequest(request); |
1250 break; | 1282 break; |
| 1283 case File::kRenameLinkRequest: |
| 1284 response = FileRenameLinkRequest(request); |
| 1285 break; |
1251 case File::kCreateLinkRequest: | 1286 case File::kCreateLinkRequest: |
1252 response = FileCreateLinkRequest(request); | 1287 response = FileCreateLinkRequest(request); |
1253 break; | 1288 break; |
1254 case File::kLinkTargetRequest: | 1289 case File::kLinkTargetRequest: |
1255 response = FileLinkTargetRequest(request); | 1290 response = FileLinkTargetRequest(request); |
1256 break; | 1291 break; |
1257 case File::kTypeRequest: | 1292 case File::kTypeRequest: |
1258 response = FileTypeRequest(request); | 1293 response = FileTypeRequest(request); |
1259 break; | 1294 break; |
1260 case File::kIdenticalRequest: | 1295 case File::kIdenticalRequest: |
(...skipping 24 matching lines...) Expand all Loading... |
1285 if (service_port != ILLEGAL_PORT) { | 1320 if (service_port != ILLEGAL_PORT) { |
1286 // Return a send port for the service port. | 1321 // Return a send port for the service port. |
1287 Dart_Handle send_port = Dart_NewSendPort(service_port); | 1322 Dart_Handle send_port = Dart_NewSendPort(service_port); |
1288 Dart_SetReturnValue(args, send_port); | 1323 Dart_SetReturnValue(args, send_port); |
1289 } | 1324 } |
1290 Dart_ExitScope(); | 1325 Dart_ExitScope(); |
1291 } | 1326 } |
1292 | 1327 |
1293 } // namespace bin | 1328 } // namespace bin |
1294 } // namespace dart | 1329 } // namespace dart |
OLD | NEW |