diff -ru bbs100-1.1.12/src/edit.c bbs100-1.1.12-f/src/edit.c --- bbs100-1.1.12/src/edit.c Wed Nov 1 13:30:46 2000 +++ bbs100-1.1.12-f/src/edit.c Tue Apr 16 13:02:16 2002 @@ -735,6 +735,7 @@ } int edit_x(User *usr, char c) { + int wrapable=0; if (usr == NULL) return 0; @@ -840,16 +841,32 @@ char buf[MAX_LINE*3] = "", buf2[MAX_LINE]; /* word wrap */ +/* improved by Fearlezz */ i = usr->edit_pos; - while(i > (MAX_LINE >> 1) && usr->edit_buf[i] != ' ') { - if (usr->edit_buf[i] >= ' ' && usr->edit_buf[i] <= '~') - strcat(buf, "\b \b"); + while(i > (MAX_LINE >> 1)) { + if (usr->edit_buf[i] == ' ' ) + wrapable=1; i--; } + + if (!wrapable){ + i=MAX_LINE-1; + }else{ + i = usr->edit_pos; + if (wrapable) + while(i > (MAX_LINE >> 1) && usr->edit_buf[i] != ' ') { + if (usr->edit_buf[i] >= ' ' && usr->edit_buf[i] <= '~'){ + strcat(buf, "\b \b"); + } + i--; + } + } + i++; strcpy(buf2, usr->edit_buf+i); usr->edit_buf[i] = 0; + /* add new line */ usr->more_text = add_StringList(&usr->more_text, new_StringList(usr->edit_buf)); @@ -867,6 +884,7 @@ } int edit_msg(User *usr, char c) { + int wrapable=0; if (usr == NULL) return 0; @@ -952,12 +970,27 @@ char buf[MAX_LINE*3] = "", buf2[MAX_LINE]; /* word wrap */ +/* improved by Fearlezz */ i = usr->edit_pos; - while(i > (MAX_LINE >> 1) && usr->edit_buf[i] != ' ') { - if (usr->edit_buf[i] >= ' ' && usr->edit_buf[i] <= '~') - strcat(buf, "\b \b"); + while(i > (MAX_LINE >> 1)) { + if (usr->edit_buf[i] == ' ' ) + wrapable=1; i--; } + + if (!wrapable){ + i=MAX_LINE-1; + }else{ + i = usr->edit_pos; + if (wrapable) + while(i > (MAX_LINE >> 1) && usr->edit_buf[i] != ' ') { + if (usr->edit_buf[i] >= ' ' && usr->edit_buf[i] <= '~'){ + strcat(buf, "\b \b"); + } + i--; + } + } + strcat(buf, "\n"); Put(usr, buf); i++;