Im sorry that the last version of this code doesn't work under linux, only windows. this version works under both :). I have put the fix code here Disclaimer: im not responsible for this code, you should alway backup before implementing new code first open mail.c ***************** ************************* ****START OF FIX CODE**** ************************* go to here void store_mail(long to, long from, sh_int vnum, char *message_pointer) { at the bottom of this header_block_type header; data_block_type data; long last_address, target_address; char *msg_txt = message_pointer; int bytes_written, total_length = strlen(message_pointer); int all = FALSE; int i; remove int all = FALSE; int i; go to if (from < 0 || !*message_pointer) { log("SYSERR: Mail system -- non-fatal error #5. (from == %ld, to == %ld)", from, to); return; } and put back in the "to" part, so it looks like this if (from < 0 || to < 0 || !*message_pointer) { log("SYSERR: Mail system -- non-fatal error #5. (from == %ld, to == %ld)", from, to); return; } just above this remove if (to < 0) { all = TRUE; } then open modify.c ****************** goto void playing_string_cleanup(struct descriptor_data *d, int action) { add just below this: FILE *fl; struct char_file_u player; int done = 0; long to; then replace the following code until this line /* * We have no way of knowing which slot the post was sent to so we can only give the message... */ with if (PLR_FLAGGED(d->character, PLR_MAILING)) { if (action == STRINGADD_SAVE && *d->str) { if (d->mail_to < 0) { if (!(fl = fopen(PLAYER_FILE, "r+"))) { send_to_char("Can't open player file.", d->character); return; } while (!done) { fread(&player, sizeof(struct char_file_u), 1, fl); if (feof(fl)) { fclose(fl); done=TRUE; } if (!done) { if (!IS_SET(player.char_specials_saved.act, PLR_DELETED)) { sprintf(buf, "%s", player.name); to = get_id_by_name(buf); store_mail(to, GET_IDNUM(d->character), d->mail_vnum, *d->str); sprintf(arg, "Message sent to %s!\r\n", buf); SEND_TO_Q(arg, d); } } } } else { store_mail(d->mail_to, GET_IDNUM(d->character), d->mail_vnum, *d->str); SEND_TO_Q("Message sent!\r\n", d); } } else SEND_TO_Q("Mail aborted.\r\n", d); free(*d->str); free(d->str); } and thats it! the linux bug is fixed! if you use my snippet, please email Michael (Subliminal) at m_gally@hotmail.com