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); }
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; }