Add catv() function

This commit is contained in:
Andrew Bettison 2012-05-21 00:08:31 +09:30
parent e6575cb369
commit b739bfd572
2 changed files with 17 additions and 0 deletions

16
log.c
View File

@ -18,6 +18,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include "serval.h"
#include "strbuf.h"
#include <ctype.h>
int debug = 0;
@ -88,6 +90,20 @@ int dump(char *name, unsigned char *addr, int len)
return 0;
}
char *catv(const char *data, char *buf, size_t len)
{
strbuf b = strbuf_local(buf, len);
for (; *data && !strbuf_overrun(b); ++data) {
if (*data == '\n') strbuf_puts(b, "\\n");
else if (*data == '\r') strbuf_puts(b, "\\r");
else if (*data == '\t') strbuf_puts(b, "\\t");
else if (*data == '\\') strbuf_puts(b, "\\\\");
else if (isprint(*data)) strbuf_putc(b, *data);
else strbuf_sprintf(b, "\\x%02x", *data);
}
return buf;
}
int dumpResponses(struct response_set *responses)
{
struct response *r;

View File

@ -757,6 +757,7 @@ int setReason(char *fmt, ...);
void logMessage(int level, char *fmt, ...);
void vlogMessage(int level, char *fmt, va_list);
long long debugFlagMask(const char *flagname);
char *catv(const char *data, char *buf, size_t len);
int dump(char *name,unsigned char *addr,int len);
#define FATALF(F,...) do { logMessage(LOG_LEVEL_FATAL, "%s:%d:%s() " F, __FILE__, __LINE__, __FUNCTION__, ##__VA_ARGS__); exit(-1); } while(1)