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

Side by Side Diff: runtime/bin/file.cc

Issue 23444037: dart:io | Change File.fullPath to FileSystemEntity.resolveSymbolicLinks. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Document resolution of link\.. on Windows. Created 7 years, 3 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 490 matching lines...) Expand 10 before | Expand all | Expand 10 after
501 if (result) { 501 if (result) {
502 Dart_SetReturnValue(args, Dart_NewBoolean(result)); 502 Dart_SetReturnValue(args, Dart_NewBoolean(result));
503 } else { 503 } else {
504 Dart_Handle err = DartUtils::NewDartOSError(); 504 Dart_Handle err = DartUtils::NewDartOSError();
505 if (Dart_IsError(err)) Dart_PropagateError(err); 505 if (Dart_IsError(err)) Dart_PropagateError(err);
506 Dart_SetReturnValue(args, err); 506 Dart_SetReturnValue(args, err);
507 } 507 }
508 } 508 }
509 509
510 510
511 void FUNCTION_NAME(File_FullPath)(Dart_NativeArguments args) { 511 void FUNCTION_NAME(File_ResolveSymbolicLinks)(Dart_NativeArguments args) {
512 const char* str = 512 const char* str =
513 DartUtils::GetStringValue(Dart_GetNativeArgument(args, 0)); 513 DartUtils::GetStringValue(Dart_GetNativeArgument(args, 0));
514 char* path = File::GetCanonicalPath(str); 514 char* path = File::GetCanonicalPath(str);
515 if (path != NULL) { 515 if (path != NULL) {
516 Dart_SetReturnValue(args, DartUtils::NewString(path)); 516 Dart_SetReturnValue(args, DartUtils::NewString(path));
517 free(path); 517 free(path);
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);
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
704 CObjectString old_path(request[1]); 704 CObjectString old_path(request[1]);
705 CObjectString new_path(request[2]); 705 CObjectString new_path(request[2]);
706 bool completed = File::Rename(old_path.CString(), new_path.CString()); 706 bool completed = File::Rename(old_path.CString(), new_path.CString());
707 if (completed) return CObject::True(); 707 if (completed) return CObject::True();
708 return CObject::NewOSError(); 708 return CObject::NewOSError();
709 } 709 }
710 return CObject::IllegalArgumentError(); 710 return CObject::IllegalArgumentError();
711 } 711 }
712 712
713 713
714 static CObject* FileFullPathRequest(const CObjectArray& request) { 714 static CObject* FileResolveSymbolicLinksRequest(const CObjectArray& request) {
715 if (request.Length() == 2 && request[1]->IsString()) { 715 if (request.Length() == 2 && request[1]->IsString()) {
716 CObjectString filename(request[1]); 716 CObjectString filename(request[1]);
717 char* result = File::GetCanonicalPath(filename.CString()); 717 char* result = File::GetCanonicalPath(filename.CString());
718 if (result != NULL) { 718 if (result != NULL) {
719 CObject* path = new CObjectString(CObject::NewString(result)); 719 CObject* path = new CObjectString(CObject::NewString(result));
720 free(result); 720 free(result);
721 return path; 721 return path;
722 } else { 722 } else {
723 return CObject::NewOSError(); 723 return CObject::NewOSError();
724 } 724 }
(...skipping 457 matching lines...) Expand 10 before | Expand all | Expand 10 after
1182 break; 1182 break;
1183 case File::kOpenRequest: 1183 case File::kOpenRequest:
1184 response = FileOpenRequest(request); 1184 response = FileOpenRequest(request);
1185 break; 1185 break;
1186 case File::kDeleteRequest: 1186 case File::kDeleteRequest:
1187 response = FileDeleteRequest(request); 1187 response = FileDeleteRequest(request);
1188 break; 1188 break;
1189 case File::kRenameRequest: 1189 case File::kRenameRequest:
1190 response = FileRenameRequest(request); 1190 response = FileRenameRequest(request);
1191 break; 1191 break;
1192 case File::kFullPathRequest: 1192 case File::kResolveSymbolicLinksRequest:
1193 response = FileFullPathRequest(request); 1193 response = FileResolveSymbolicLinksRequest(request);
1194 break; 1194 break;
1195 case File::kCloseRequest: 1195 case File::kCloseRequest:
1196 response = FileCloseRequest(request); 1196 response = FileCloseRequest(request);
1197 break; 1197 break;
1198 case File::kPositionRequest: 1198 case File::kPositionRequest:
1199 response = FilePositionRequest(request); 1199 response = FilePositionRequest(request);
1200 break; 1200 break;
1201 case File::kSetPositionRequest: 1201 case File::kSetPositionRequest:
1202 response = FileSetPositionRequest(request); 1202 response = FileSetPositionRequest(request);
1203 break; 1203 break;
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
1272 Dart_Port service_port = File::GetServicePort(); 1272 Dart_Port service_port = File::GetServicePort();
1273 if (service_port != ILLEGAL_PORT) { 1273 if (service_port != ILLEGAL_PORT) {
1274 // Return a send port for the service port. 1274 // Return a send port for the service port.
1275 Dart_Handle send_port = Dart_NewSendPort(service_port); 1275 Dart_Handle send_port = Dart_NewSendPort(service_port);
1276 Dart_SetReturnValue(args, send_port); 1276 Dart_SetReturnValue(args, send_port);
1277 } 1277 }
1278 } 1278 }
1279 1279
1280 } // namespace bin 1280 } // namespace bin
1281 } // namespace dart 1281 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698