sic-lineprint-9bb34de.diff (1275B)
1 diff --git a/config.def.h b/config.def.h 2 index 6d720e9..a1308e6 100644 3 --- a/config.def.h 4 +++ b/config.def.h 5 @@ -12,3 +12,6 @@ 6 7 /* Parting message used when none is specified with ":l ..." command. */ 8 #define DEFAULT_PARTING_MESSAGE "sic - 250 LOC are too much!" 9 + 10 +/* Suffix character used to print the current inserting command */ 11 +#define LINEPRINT_SUFFIX_CHAR '\\' 12 diff --git a/sic.c b/sic.c 13 index 8a0301b..6401414 100644 14 --- a/sic.c 15 +++ b/sic.c 16 @@ -18,6 +18,7 @@ static char *password; 17 static char nick[32]; 18 static char bufin[4096]; 19 static char bufout[4096]; 20 +static char bufln[4096]; 21 static char channel[256]; 22 static time_t trespond; 23 static FILE *srv; 24 @@ -60,11 +61,29 @@ privmsg(char *channel, char *msg) { 25 26 static void 27 parsein(char *s) { 28 + int i, off; 29 char c, *p; 30 31 if(s[0] == '\0') 32 return; 33 skip(s, '\n'); 34 + 35 + /* input reprint */ 36 + i = strlen(s) - 1; 37 + off = (*bufln ? strlen(bufln) : 0); 38 + if(s[i] == LINEPRINT_SUFFIX_CHAR) { 39 + s[i] = '\0'; 40 + if(i) 41 + snprintf(&bufln[off], (sizeof bufln - off), "%s", s); 42 + printf("%s", bufln); 43 + return; 44 + } 45 + else if(*bufln) { 46 + snprintf(&bufln[off], sizeof bufln, "%s", s); 47 + strlcpy(s, bufln, 4096); 48 + *bufln = '\0'; 49 + } 50 + 51 if(s[0] != COMMAND_PREFIX_CHARACTER) { 52 privmsg(channel, s); 53 return;