sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | 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;