/* * function called when the file transfer is initiated. file content should be feed into object LinphoneContent * */ LinphoneBuffer * file_transfer_send(LinphoneChatMessage *message, const LinphoneContent* content, size_t offset, size_t size){ LinphoneBuffer *lb; size_t file_size; size_t size_to_send; FILE *file_to_send; uint8_t *buf; if (size == 0) return linphone_buffer_new(); /*end of file*/ file_to_send = linphone_chat_message_get_user_data(message); fseek(file_to_send, 0, SEEK_END); file_size = ftell(file_to_send); fseek(file_to_send, offset, SEEK_SET); size_to_send = MIN(size, file_size - offset); buf = ms_malloc(size_to_send); if (fread(buf, size_to_send, 1, file_to_send)!=size_to_send){ ms_error("fread error"); } lb = linphone_buffer_new_from_data(buf, size_to_send); ms_free(buf); return lb; }
/* * function called when the file transfer is initiated. file content should be feed into object LinphoneContent * */ static LinphoneBuffer * file_transfer_send(LinphoneChatMessage *message, const LinphoneContent* content, size_t offset, size_t size){ size_t size_to_send = MIN(size, sizeof(big_file) - offset); if (size == 0) return linphone_buffer_new(); /*end of file*/ return linphone_buffer_new_from_data((uint8_t *)big_file + offset, size_to_send); }