From acf9577350e1e9e739f09db6349549c98aa6a88c Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Mon, 14 Jun 2010 19:09:21 +0200 Subject: [PATCH] [MINOR] config: provide a function to quote args in a more friendly way The quote_arg() function can be used to quote an argument or indicate "end of line" if it's null or empty. It should be useful to more precisely report location of problems in the configuration. --- include/common/standard.h | 6 ++++++ src/standard.c | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/include/common/standard.h b/include/common/standard.h index eff47e7494..2366f9e43b 100644 --- a/include/common/standard.h +++ b/include/common/standard.h @@ -384,4 +384,10 @@ int word_match(const char *sample, int slen, const char *word, int wlen); */ int buf2ip(const char *buf, size_t len, struct in_addr *dst); +/* To be used to quote config arg positions. Returns the string at + * surrounded by simple quotes if is valid and non-empty, or "end of line" + * if ptr is NULL or empty. The string is locally allocated. + */ +const char *quote_arg(const char *ptr); + #endif /* _COMMON_STANDARD_H */ diff --git a/src/standard.c b/src/standard.c index 3f3e6bd0e6..12954b0c7c 100644 --- a/src/standard.c +++ b/src/standard.c @@ -1059,6 +1059,25 @@ int buf2ip(const char *buf, size_t len, struct in_addr *dst) return addr - cp; } +/* To be used to quote config arg positions. Returns the short string at + * surrounded by simple quotes if is valid and non-empty, or "end of line" + * if ptr is NULL or empty. The string is locally allocated. + */ +const char *quote_arg(const char *ptr) +{ + static char val[32]; + int i; + + if (!ptr || !*ptr) + return "end of line"; + val[0] = '\''; + for (i = 1; i < sizeof(val) - 1 && *ptr; i++) + val[i] = *ptr++; + val[i++] = '\''; + val[i] = '\0'; + return val; +} + /* * Local variables: * c-indent-level: 8