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;