| 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 488 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 499 Dart_SetReturnValue(args, Dart_NewBoolean(result)); | 499 Dart_SetReturnValue(args, Dart_NewBoolean(result)); |
| 500 } else { | 500 } else { |
| 501 Dart_Handle err = DartUtils::NewDartOSError(); | 501 Dart_Handle err = DartUtils::NewDartOSError(); |
| 502 if (Dart_IsError(err)) Dart_PropagateError(err); | 502 if (Dart_IsError(err)) Dart_PropagateError(err); |
| 503 Dart_SetReturnValue(args, err); | 503 Dart_SetReturnValue(args, err); |
| 504 } | 504 } |
| 505 Dart_ExitScope(); | 505 Dart_ExitScope(); |
| 506 } | 506 } |
| 507 | 507 |
| 508 | 508 |
| 509 void FUNCTION_NAME(File_Directory)(Dart_NativeArguments args) { | |
| 510 Dart_EnterScope(); | |
| 511 const char* str = | |
| 512 DartUtils::GetStringValue(Dart_GetNativeArgument(args, 0)); | |
| 513 char* str_copy = strdup(str); | |
| 514 char* path = File::GetContainingDirectory(str_copy); | |
| 515 free(str_copy); | |
| 516 if (path != NULL) { | |
| 517 Dart_SetReturnValue(args, DartUtils::NewString(path)); | |
| 518 free(path); | |
| 519 } else { | |
| 520 Dart_Handle err = DartUtils::NewDartOSError(); | |
| 521 if (Dart_IsError(err)) Dart_PropagateError(err); | |
| 522 Dart_SetReturnValue(args, err); | |
| 523 } | |
| 524 Dart_ExitScope(); | |
| 525 } | |
| 526 | |
| 527 | |
| 528 void FUNCTION_NAME(File_FullPath)(Dart_NativeArguments args) { | 509 void FUNCTION_NAME(File_FullPath)(Dart_NativeArguments args) { |
| 529 Dart_EnterScope(); | 510 Dart_EnterScope(); |
| 530 const char* str = | 511 const char* str = |
| 531 DartUtils::GetStringValue(Dart_GetNativeArgument(args, 0)); | 512 DartUtils::GetStringValue(Dart_GetNativeArgument(args, 0)); |
| 532 char* path = File::GetCanonicalPath(str); | 513 char* path = File::GetCanonicalPath(str); |
| 533 if (path != NULL) { | 514 if (path != NULL) { |
| 534 Dart_SetReturnValue(args, DartUtils::NewString(path)); | 515 Dart_SetReturnValue(args, DartUtils::NewString(path)); |
| 535 free(path); | 516 free(path); |
| 536 } else { | 517 } else { |
| 537 Dart_Handle err = DartUtils::NewDartOSError(); | 518 Dart_Handle err = DartUtils::NewDartOSError(); |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 728 free(result); | 709 free(result); |
| 729 return path; | 710 return path; |
| 730 } else { | 711 } else { |
| 731 return CObject::NewOSError(); | 712 return CObject::NewOSError(); |
| 732 } | 713 } |
| 733 } | 714 } |
| 734 return CObject::IllegalArgumentError(); | 715 return CObject::IllegalArgumentError(); |
| 735 } | 716 } |
| 736 | 717 |
| 737 | 718 |
| 738 static CObject* FileDirectoryRequest(const CObjectArray& request) { | |
| 739 if (request.Length() == 2 && request[1]->IsString()) { | |
| 740 CObjectString filename(request[1]); | |
| 741 char* str_copy = strdup(filename.CString()); | |
| 742 char* path = File::GetContainingDirectory(str_copy); | |
| 743 free(str_copy); | |
| 744 if (path != NULL) { | |
| 745 CObject* result = new CObjectString(CObject::NewString(path)); | |
| 746 free(path); | |
| 747 return result; | |
| 748 } else { | |
| 749 return CObject::NewOSError(); | |
| 750 } | |
| 751 } | |
| 752 return CObject::Null(); | |
| 753 } | |
| 754 | |
| 755 | |
| 756 static CObject* FileCloseRequest(const CObjectArray& request) { | 719 static CObject* FileCloseRequest(const CObjectArray& request) { |
| 757 intptr_t return_value = -1; | 720 intptr_t return_value = -1; |
| 758 if (request.Length() == 2 && request[1]->IsIntptr()) { | 721 if (request.Length() == 2 && request[1]->IsIntptr()) { |
| 759 File* file = CObjectToFilePointer(request[1]); | 722 File* file = CObjectToFilePointer(request[1]); |
| 760 ASSERT(file != NULL); | 723 ASSERT(file != NULL); |
| 761 delete file; | 724 delete file; |
| 762 return_value = 0; | 725 return_value = 0; |
| 763 } | 726 } |
| 764 return new CObjectIntptr(CObject::NewIntptr(return_value)); | 727 return new CObjectIntptr(CObject::NewIntptr(return_value)); |
| 765 } | 728 } |
| (...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1191 break; | 1154 break; |
| 1192 case File::kOpenRequest: | 1155 case File::kOpenRequest: |
| 1193 response = FileOpenRequest(request); | 1156 response = FileOpenRequest(request); |
| 1194 break; | 1157 break; |
| 1195 case File::kDeleteRequest: | 1158 case File::kDeleteRequest: |
| 1196 response = FileDeleteRequest(request); | 1159 response = FileDeleteRequest(request); |
| 1197 break; | 1160 break; |
| 1198 case File::kFullPathRequest: | 1161 case File::kFullPathRequest: |
| 1199 response = FileFullPathRequest(request); | 1162 response = FileFullPathRequest(request); |
| 1200 break; | 1163 break; |
| 1201 case File::kDirectoryRequest: | |
| 1202 response = FileDirectoryRequest(request); | |
| 1203 break; | |
| 1204 case File::kCloseRequest: | 1164 case File::kCloseRequest: |
| 1205 response = FileCloseRequest(request); | 1165 response = FileCloseRequest(request); |
| 1206 break; | 1166 break; |
| 1207 case File::kPositionRequest: | 1167 case File::kPositionRequest: |
| 1208 response = FilePositionRequest(request); | 1168 response = FilePositionRequest(request); |
| 1209 break; | 1169 break; |
| 1210 case File::kSetPositionRequest: | 1170 case File::kSetPositionRequest: |
| 1211 response = FileSetPositionRequest(request); | 1171 response = FileSetPositionRequest(request); |
| 1212 break; | 1172 break; |
| 1213 case File::kTruncateRequest: | 1173 case File::kTruncateRequest: |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1280 if (service_port != ILLEGAL_PORT) { | 1240 if (service_port != ILLEGAL_PORT) { |
| 1281 // Return a send port for the service port. | 1241 // Return a send port for the service port. |
| 1282 Dart_Handle send_port = Dart_NewSendPort(service_port); | 1242 Dart_Handle send_port = Dart_NewSendPort(service_port); |
| 1283 Dart_SetReturnValue(args, send_port); | 1243 Dart_SetReturnValue(args, send_port); |
| 1284 } | 1244 } |
| 1285 Dart_ExitScope(); | 1245 Dart_ExitScope(); |
| 1286 } | 1246 } |
| 1287 | 1247 |
| 1288 } // namespace bin | 1248 } // namespace bin |
| 1289 } // namespace dart | 1249 } // namespace dart |
| OLD | NEW |