| 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 1071 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1082       free(target); | 1082       free(target); | 
| 1083       return result; | 1083       return result; | 
| 1084     } else { | 1084     } else { | 
| 1085       return CObject::NewOSError(); | 1085       return CObject::NewOSError(); | 
| 1086     } | 1086     } | 
| 1087   } | 1087   } | 
| 1088   return CObject::IllegalArgumentError(); | 1088   return CObject::IllegalArgumentError(); | 
| 1089 } | 1089 } | 
| 1090 | 1090 | 
| 1091 | 1091 | 
|  | 1092 static CObject* FileTypeRequest(const CObjectArray& request) { | 
|  | 1093   if (request.Length() == 3 && | 
|  | 1094       request[1]->IsString() && | 
|  | 1095       request[2]->IsBool()) { | 
|  | 1096     CObjectString path(request[1]); | 
|  | 1097     CObjectBool follow_links(request[2]); | 
|  | 1098     File::Type type = File::GetType(path.CString(), follow_links.Value()); | 
|  | 1099     return new CObjectInt32(CObject::NewInt32(type)); | 
|  | 1100   } | 
|  | 1101   return CObject::IllegalArgumentError(); | 
|  | 1102 } | 
|  | 1103 | 
|  | 1104 | 
|  | 1105 static CObject* FileIdenticalRequest(const CObjectArray& request) { | 
|  | 1106   if (request.Length() == 3 && | 
|  | 1107       request[1]->IsString() && | 
|  | 1108       request[2]->IsString()) { | 
|  | 1109     CObjectString path1(request[1]); | 
|  | 1110     CObjectString path2(request[2]); | 
|  | 1111     File::Identical result = File::AreIdentical(path1.CString(), | 
|  | 1112                                                 path2.CString()); | 
|  | 1113     if (result == File::kError) { | 
|  | 1114       return CObject::NewOSError(); | 
|  | 1115     } else if (result == File::kIdentical) { | 
|  | 1116       return CObject::True(); | 
|  | 1117     } else { | 
|  | 1118       return CObject::False(); | 
|  | 1119     } | 
|  | 1120   } | 
|  | 1121   return CObject::IllegalArgumentError(); | 
|  | 1122 } | 
|  | 1123 | 
|  | 1124 | 
| 1092 static void FileService(Dart_Port dest_port_id, | 1125 static void FileService(Dart_Port dest_port_id, | 
| 1093                  Dart_Port reply_port_id, | 1126                  Dart_Port reply_port_id, | 
| 1094                  Dart_CObject* message) { | 1127                  Dart_CObject* message) { | 
| 1095   CObject* response = CObject::IllegalArgumentError(); | 1128   CObject* response = CObject::IllegalArgumentError(); | 
| 1096   CObjectArray request(message); | 1129   CObjectArray request(message); | 
| 1097   if (message->type == Dart_CObject::kArray) { | 1130   if (message->type == Dart_CObject::kArray) { | 
| 1098     if (request.Length() > 1 && request[0]->IsInt32()) { | 1131     if (request.Length() > 1 && request[0]->IsInt32()) { | 
| 1099       CObjectInt32 requestType(request[0]); | 1132       CObjectInt32 requestType(request[0]); | 
| 1100       switch (requestType.Value()) { | 1133       switch (requestType.Value()) { | 
| 1101         case File::kExistsRequest: | 1134         case File::kExistsRequest: | 
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1157           break; | 1190           break; | 
| 1158         case File::kDeleteLinkRequest: | 1191         case File::kDeleteLinkRequest: | 
| 1159           response = FileDeleteLinkRequest(request); | 1192           response = FileDeleteLinkRequest(request); | 
| 1160           break; | 1193           break; | 
| 1161         case File::kCreateLinkRequest: | 1194         case File::kCreateLinkRequest: | 
| 1162           response = FileCreateLinkRequest(request); | 1195           response = FileCreateLinkRequest(request); | 
| 1163           break; | 1196           break; | 
| 1164         case File::kLinkTargetRequest: | 1197         case File::kLinkTargetRequest: | 
| 1165           response = FileLinkTargetRequest(request); | 1198           response = FileLinkTargetRequest(request); | 
| 1166           break; | 1199           break; | 
|  | 1200         case File::kTypeRequest: | 
|  | 1201           response = FileTypeRequest(request); | 
|  | 1202           break; | 
|  | 1203         case File::kIdenticalRequest: | 
|  | 1204           response = FileIdenticalRequest(request); | 
|  | 1205           break; | 
| 1167         default: | 1206         default: | 
| 1168           UNREACHABLE(); | 1207           UNREACHABLE(); | 
| 1169       } | 1208       } | 
| 1170     } | 1209     } | 
| 1171   } | 1210   } | 
| 1172 | 1211 | 
| 1173   Dart_PostCObject(reply_port_id, response->AsApiCObject()); | 1212   Dart_PostCObject(reply_port_id, response->AsApiCObject()); | 
| 1174 } | 1213 } | 
| 1175 | 1214 | 
| 1176 | 1215 | 
| 1177 Dart_Port File::GetServicePort() { | 1216 Dart_Port File::GetServicePort() { | 
| 1178   return file_service_.GetServicePort(); | 1217   return file_service_.GetServicePort(); | 
| 1179 } | 1218 } | 
| 1180 | 1219 | 
| 1181 | 1220 | 
| 1182 void FUNCTION_NAME(File_NewServicePort)(Dart_NativeArguments args) { | 1221 void FUNCTION_NAME(File_NewServicePort)(Dart_NativeArguments args) { | 
| 1183   Dart_EnterScope(); | 1222   Dart_EnterScope(); | 
| 1184   Dart_SetReturnValue(args, Dart_Null()); | 1223   Dart_SetReturnValue(args, Dart_Null()); | 
| 1185   Dart_Port service_port = File::GetServicePort(); | 1224   Dart_Port service_port = File::GetServicePort(); | 
| 1186   if (service_port != ILLEGAL_PORT) { | 1225   if (service_port != ILLEGAL_PORT) { | 
| 1187     // Return a send port for the service port. | 1226     // Return a send port for the service port. | 
| 1188     Dart_Handle send_port = Dart_NewSendPort(service_port); | 1227     Dart_Handle send_port = Dart_NewSendPort(service_port); | 
| 1189     Dart_SetReturnValue(args, send_port); | 1228     Dart_SetReturnValue(args, send_port); | 
| 1190   } | 1229   } | 
| 1191   Dart_ExitScope(); | 1230   Dart_ExitScope(); | 
| 1192 } | 1231 } | 
| 1193 | 1232 | 
| 1194 }  // namespace bin | 1233 }  // namespace bin | 
| 1195 }  // namespace dart | 1234 }  // namespace dart | 
| OLD | NEW | 
|---|