In curses_log() we currently we call chop(), which calls strlen()
to find the last character of the given string. This is unnecessary
since xvasprintf() returns this information anyway, we just have to
remember it.
With this change the last user of chop() is gone, so this patch
removes chop() from string.c.
int color;
char *msg;
va_list ap;
+ unsigned bytes;
if (ll < loglevel || !curses_active)
return;
color = COLOR_ERRMSG;
}
va_start(ap, fmt);
- xvasprintf(&msg, fmt, ap);
+ bytes = xvasprintf(&msg, fmt, ap);
va_end(ap);
- chop(msg);
+ if (bytes > 0 && msg[bytes - 1] == '\n')
+ msg[bytes - 1] = '\0'; /* cut trailing newline */
rb_add_entry(color, msg);
wrefresh(bot.win);
}
return ret;
}
-/**
- * Cut trailing newline.
- *
- * \param buf The string to be chopped.
- *
- * Replace the last character in \p buf by zero if it is equal to
- * the newline character.
- */
-void chop(char *buf)
-{
- int n = strlen(buf);
-
- if (!n)
- return;
- if (buf[n - 1] == '\n')
- buf[n - 1] = '\0';
-}
-
/**
* Get the logname of the current user.
*
__must_check __malloc char *para_strcat(char *a, const char *b);
__must_check __malloc char *para_dirname(const char *name);
__must_check char *para_basename(const char *name);
-void chop(char *buf);
__must_check __malloc char *para_logname(void);
__must_check __malloc char *para_homedir(void);
__malloc char *para_hostname(void);