Example #1
0
void
muc_part(MUC_REC *channel, const char *reason)
{
	g_return_if_fail(IS_MUC(channel));
	send_part(channel, reason);
	channel->left = TRUE;
	if (channel->ownnick != NULL)
		signal_emit("message part", 5, channel->server, channel->name,
		    channel->ownnick->nick, channel->ownnick->host, reason);
	channel_destroy(CHANNEL(channel));
}
void send_file(int fd, char* filename, struct file_info* file_info, int part_size) {
	FILE* fp;
	char part[BUFF_SIZE];
	char* message;
	int i = 0;

	fp = fopen(filename, "r");

	while(fgets(part, part_size+1, fp) != NULL)
   	{
		send_part(fd, part, file_info -> file_id, i++);
	}

	fclose(fp);
}
Example #3
0
int send_message(/*int connection, */const char *text, size_t text_length, int part_size)
{
	unsigned int sum = 0;
	int parts = ceil(text_length, part_size);

	LOG(MESSAGE, text);

	// XXX
	//size_t retransmit_size = ceil(MAX_MESSAGE_SIZE, part_size) >> 3;
	//char *retransmit = malloc(retransmit_size);
	
	int sent;

	for (int index = 0; index < parts; ++index) {
		sent = send_part(text, part_size, index);

		//if (index == 2) { // Psikus
		//	//close(client);
		//	close(connection);
		//}

		if (sent > 0) {
			sum += sent;
			//ret_clear(retransmit, index);
			//retransmit[index >> 3] &= ~(1 << (index & 7));
		} else if (sent == 0) {
			LOG(DEBUG, "sent 0 bytes?");
		} else {
			// Damn!
			errno = -sent;
			LOG(DEBUG, "sent < 0 (%i)", errno);
			perror("didn't write");
			break;
		}
	}

	//int read_length = read(connection, retransmit, retransmit_size);

	//do {
	//	send_stuff();
	//} while (parts_left);

	//free(retransmit);

	return sum;
}