sic-lineprint-9bb34de.diff - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) Refs
---
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;