void Board_write_message(int board_type, struct char_data * ch, char *arg) { char *tmstr; int len; time_t ct; char buf[MAX_INPUT_LENGTH], buf2[MAX_INPUT_LENGTH]; if (WRITE_LVL(board_type) != 0 && !COM_FLAGGED(ch, WRITE_LVL(board_type))) { send_to_char("You are not holy enough to write on this board.\r\n", ch); return; } if (num_of_msgs[board_type] >= MAX_BOARD_MESSAGES) { send_to_char("The board is full.\r\n", ch); return; } if ((NEW_MSG_INDEX(board_type).slot_num = find_slot()) == -1) { send_to_char("The board is malfunctioning - sorry.\r\n", ch); stderr_log("SYSERR: Board: failed to find empty slot on write."); return; } /* skip blanks */ skip_spaces(&arg); delete_doubledollar(arg); if (!*arg) { send_to_char("We must have a headline!\r\n", ch); return; } ct = time(0); tmstr = (char *) asctime(localtime(&ct)); *(tmstr + strlen(tmstr) - 1) = '\0'; sprintf(buf2, "(%s)", GET_NAME(ch)); sprintf(buf, "%6.10s %-12s :: %s", tmstr, buf2, arg); len = strlen(buf) + 1; if (!(NEW_MSG_INDEX(board_type).heading = (char *) malloc(sizeof(char) * len))) { send_to_char("The board is malfunctioning - sorry.\r\n", ch); return; } strcpy(NEW_MSG_INDEX(board_type).heading, buf); NEW_MSG_INDEX(board_type).heading[len - 1] = '\0'; NEW_MSG_INDEX(board_type).level = GET_LEVEL(ch); sprintf(logbuffer, "%s writing new message (%s) on board in #%d", GET_NAME(ch), buf, world[ch->in_room].number); mudlog(logbuffer, 'B', COM_ADMIN, FALSE); send_to_char("Write your message. (/s saves /h for help)\r\n\r\n", ch); act("$n starts to write a message.", TRUE, ch, 0, 0, TO_ROOM); if (!IS_NPC(ch)) SET_BIT(PLR_FLAGS(ch), PLR_WRITING); ch->desc->str = &(msg_storage[NEW_MSG_INDEX(board_type).slot_num]); ch->desc->max_str = MAX_MESSAGE_LENGTH; ch->desc->mail_to = (char*) board_type + BOARD_MAGIC; num_of_msgs[board_type]++; }
void Board_write_message(int board_type, struct char_data *ch, char *arg) { char buf[200], buf2[200]; char *tmstr; int ct, len; if (GET_LEVEL(ch) < WRITE_LVL(board_type)) { send_to_char("You are not advanced enough to write on this board.\n\r", ch); return; } if (num_of_msgs[board_type] >= MAX_BOARD_MESSAGES) { send_to_char("The board is full.\n\r", ch); return; } if ((NEW_MSG_INDEX(board_type).slot_num = find_slot()) == -1) { send_to_char("The board is malfunctioning - sorry.\n\r", ch); log("Board: failed to find empty slot on write."); return; } /* skip blanks */ /* RT removed for(; isspace(*arg); arg++); */ if (!*arg) { send_to_char("We must have a headline!\n\r", ch); return; } ct = time(0); tmstr = (char *) asctime(localtime(&ct)); *(tmstr + strlen(tmstr) - 1) = '\0'; sprintf(buf2, "(%s)", GET_NAME(ch)); sprintf(buf, "%6.10s %-12s :: %s", tmstr, buf2, arg); len = strlen(buf) + 1; if (!(NEW_MSG_INDEX(board_type).heading = (char *)malloc(sizeof(char)*len))) { send_to_char("The board is malfunctioning - sorry.\n\r", ch); return; } strcpy(NEW_MSG_INDEX(board_type).heading, buf); NEW_MSG_INDEX(board_type).heading[len-1] = '\0'; NEW_MSG_INDEX(board_type).level = GET_LEVEL(ch); send_to_char("Write your message. Terminate with a @.\n\r\n\r", ch); act("$n starts to write a message.", TRUE, ch, 0, 0, TO_ROOM); ch->desc->str = &(msg_storage[NEW_MSG_INDEX(board_type).slot_num]); ch->desc->max_str = MAX_MESSAGE_LENGTH; num_of_msgs[board_type]++; }
int Board_write_message(int board_type, struct char_data *ch, char *arg, struct obj_data *board) { (void)board; char *tmstr; time_t ct; char buf[MAX_INPUT_LENGTH], buf2[MAX_NAME_LENGTH + 3]; if (GET_LEVEL(ch) < WRITE_LVL(board_type)) { send_to_char(ch, "You are not holy enough to write on this board.\r\n"); return (1); } if (num_of_msgs[board_type] >= MAX_BOARD_MESSAGES) { send_to_char(ch, "The board is full.\r\n"); return (1); } if ((NEW_MSG_INDEX(board_type).slot_num = find_slot()) == -1) { send_to_char(ch, "The board is malfunctioning - sorry.\r\n"); log("SYSERR: Board: failed to find empty slot on write."); return (1); } /* skip blanks */ skip_spaces(&arg); delete_doubledollar(arg); /* JE 27 Oct 95 - Truncate headline at 80 chars if it's longer than that */ arg[80] = '\0'; if (!*arg) { send_to_char(ch, "We must have a headline!\r\n"); return (1); } ct = time(0); tmstr = (char *) asctime(localtime(&ct)); *(tmstr + strlen(tmstr) - 1) = '\0'; snprintf(buf2, sizeof(buf2), "(%s)", GET_NAME(ch)); snprintf(buf, sizeof(buf), "%6.10s %-12s :: %s", tmstr, buf2, arg); NEW_MSG_INDEX(board_type).heading = strdup(buf); NEW_MSG_INDEX(board_type).level = GET_LEVEL(ch); send_to_char(ch, "Write your message. Terminate with a @ on a new line.\r\n\r\n"); act("$n starts to write a message.", TRUE, ch, 0, 0, CommTarget::TO_ROOM); string_write(ch->desc, &(msg_storage[NEW_MSG_INDEX(board_type).slot_num]), MAX_MESSAGE_LENGTH, board_type + BOARD_MAGIC, NULL); num_of_msgs[board_type]++; return (1); }