static void _wi_file_dealloc(wi_runtime_instance_t *instance) { wi_file_t *file = instance; wi_file_close(file); wi_release(file->path); }
void wr_transfer_close(wr_transfer_t *transfer) { wi_string_t *local_path, *path; if(transfer->type == WR_TRANSFER_DOWNLOAD && transfer->state == WR_TRANSFER_FINISHED) { local_path = wi_array_first_data(transfer->local_paths); path = wi_string_by_deleting_path_extension(local_path); wi_fs_rename_path(local_path, path); } wi_mutable_array_remove_data_at_index(transfer->remote_paths, 0); wi_mutable_array_remove_data_at_index(transfer->local_paths, 0); wi_mutable_array_remove_data_at_index(transfer->files, 0); if(transfer->file) { wi_file_close(transfer->file); wi_release(transfer->file); transfer->file = NULL; } wi_release(transfer->key); transfer->key = NULL; wi_release(transfer->checksum); transfer->checksum = NULL; if(transfer->socket) { wr_runloop_remove_socket(transfer->socket); wi_socket_close(transfer->socket); wi_release(transfer->socket); transfer->socket = NULL; } }
wi_string_t * wi_string_init_with_contents_of_file(wi_string_t *string, wi_string_t *path) { wi_file_t *file; wi_release(string); file = wi_file_for_reading(path); if(!file) return NULL; string = wi_file_read_to_end_of_file(file); wi_file_close(file); return wi_retain(string); }