| Index: runtime/bin/file.cc
|
| diff --git a/runtime/bin/file.cc b/runtime/bin/file.cc
|
| index 70833d11063a608da41e589ecc8b0927d1d7a8d8..f04a36796801de3ff497124e4797299c2b3d3ac7 100644
|
| --- a/runtime/bin/file.cc
|
| +++ b/runtime/bin/file.cc
|
| @@ -1013,6 +1013,22 @@ static CObject* FileWriteListRequest(const CObjectArray& request) {
|
| }
|
|
|
|
|
| +static CObject* FileCreateLinkRequest(const CObjectArray& request) {
|
| + if (request.Length() != 3 ||
|
| + !request[1]->IsString() ||
|
| + !request[2]->IsString()) {
|
| + return CObject::IllegalArgumentError();
|
| + }
|
| + CObjectString link_name(request[1]);
|
| + CObjectString target_name(request[2]);
|
| + if (File::CreateLink(link_name.CString(), target_name.CString())) {
|
| + return CObject::True();
|
| + } else {
|
| + return CObject::NewOSError();
|
| + }
|
| +}
|
| +
|
| +
|
| static CObject* FileDeleteLinkRequest(const CObjectArray& request) {
|
| if (request.Length() == 2 && request[1]->IsString()) {
|
| CObjectString filename(request[1]);
|
| @@ -1023,7 +1039,7 @@ static CObject* FileDeleteLinkRequest(const CObjectArray& request) {
|
| return CObject::NewOSError();
|
| }
|
| }
|
| - return CObject::False();
|
| + return CObject::IllegalArgumentError();
|
| }
|
|
|
|
|
| @@ -1096,6 +1112,9 @@ static void FileService(Dart_Port dest_port_id,
|
| case File::kDeleteLinkRequest:
|
| response = FileDeleteLinkRequest(request);
|
| break;
|
| + case File::kCreateLinkRequest:
|
| + response = FileCreateLinkRequest(request);
|
| + break;
|
| default:
|
| UNREACHABLE();
|
| }
|
|
|