/* Add user input to the 'current' string (as defined by d->str) */ void string_add(struct descriptor_data *d, char *str) { int action; /* char *point; */ delete_doubledollar(str); smash_tilde(str); /* determine if this is the terminal string, and truncate if so */ /* changed to only accept '@' at the beginning of line - J. Elson 1/17/94 */ if ((action = (*str == '@' || *str == '~'))) *str = '\0'; else if ((action = improved_editor_execute(d, str)) == STRINGADD_ACTION) return; if (!(*d->str)) { if (strlen(str) + 3 > d->max_str) { send_to_char("String too long - Truncated.\r\n", d->character); strcpy(&str[d->max_str - 3], "\r\n"); CREATE(*d->str, char, d->max_str); strcpy(*d->str, str); if (!using_improved_editor) action = STRINGADD_SAVE; } else {
/* Add user input to the 'current' string (as defined by d->str). This is still * overly complex. */ void string_add(struct descriptor_data *d, char *str) { int action; /* Determine if this is the terminal string, and truncate if so. Changed to * only accept '@' at the beginning of line. - JE */ delete_doubledollar(str); smash_tilde(str); /* Determine if this is the terminal string, and truncate if so. Changed to * only accept '@' if it's by itself. - fnord */ if ((action = (*str == '@' && !str[1]))) *str = '\0'; else if ((action = improved_editor_execute(d, str)) == STRINGADD_ACTION) return; if (action != STRINGADD_OK) /* Do nothing. */ ; else if (!(*d->str)) { if (strlen(str) + 3 > d->max_str) { /* \r\n\0 */ send_to_char(d->character, "String too long - Truncated.\r\n"); strcpy(&str[d->max_str - 3], "\r\n"); /* strcpy: OK (size checked) */ CREATE(*d->str, char, d->max_str); strcpy(*d->str, str); /* strcpy: OK (size checked) */ if (!using_improved_editor) action = STRINGADD_SAVE; } else {