Kaynağa Gözat

* Fix whitespace being trimmed from cmd_botcmd replies

Bryan Drewery 16 yıl önce
ebeveyn
işleme
56878c20d3
3 değiştirilmiş dosya ile 10 ekleme ve 8 silme
  1. 2 2
      src/botcmd.c
  2. 7 5
      src/misc.c
  3. 1 1
      src/misc.h

+ 2 - 2
src/botcmd.c

@@ -1326,8 +1326,8 @@ static void bot_rsimr(char *botnick, char *code, char *msg)
 {
   if (msg[0]) {
     char * par = strdup(msg), *parp = par, *prefix = NULL;
-    int idx = atoi(newsplit(&par));
-    char *nick = newsplit(&par);
+    int idx = atoi(newsplit(&par, ' ', 0));
+    char *nick = newsplit(&par, ' ', 0);
     size_t size = strlen(botnick) + 4;
 
     if (dcc[idx].type && (dcc[idx].type == &DCC_CHAT) && dcc[idx].user && !strcmp(dcc[idx].user->handle, nick)) {

+ 7 - 5
src/misc.c

@@ -182,24 +182,26 @@ int remove_crlf_r(char *line)
   return removed;
 }
 
-char *newsplit(char **rest)
+char *newsplit(char **rest, char delim, bool trim)
 {
   if (!rest)
     return *rest = "";
 
   register char *o = *rest, *r = NULL;
 
-  while (*o == ' ')
+  while (*o == delim)
     ++o;
   r = o;
-  while (*o && (*o != ' '))
+  while (*o && (*o != delim))
     ++o;
   if (*o)
     *o++ = 0;
 
   /* Trim whitespace */
-  while (*o == ' ')
-    ++o;
+  if (trim) {
+    while (*o == ' ')
+      ++o;
+  }
 
   *rest = o;
   return r;

+ 1 - 1
src/misc.h

@@ -34,7 +34,7 @@ void splitc(char *, char *, char);
 void splitcn(char *, char *, char, size_t);
 int remove_crlf(char *);
 int remove_crlf_r(char *);
-char *newsplit(char **);
+char *newsplit(char **, char delim = ' ', bool trim = 1);
 char *splitnick(char **);
 void stridx(char *, char *, int);
 void daysago(time_t, time_t, char *, size_t);