char line[MAX_CONF_ENTRY_LEN];
while (fgets(line, sizeof line, fp)) {
int len = strlen(line);
- char key[MAX_CONF_KEY_LEN];
if (len <= 1 || line[0] == '#')
continue;
line[len - 1] = '\0';
char *tok = strchr(line, '=');
- if (!tok || (tok - line >= sizeof key))
+ if (!tok || (tok - line >= sizeof ((struct log_conf_entry *)0)->key))
continue;
- ++tok;
+ *tok = '\0';
- snprintf(key, tok - line, "%s", line);
- log_config_set(config, key, tok);
+ log_config_set(config, line, tok + 1);
}
}
p = ret;
pm = msg;
- if (prefixSuffixIsHeaderFooter) {
- strncat(p, pre_color_prefix, pre_color_prefix_len + 1);
+#define SPACE_LEFT (bufferSize - ((p - ret) + 1))
+ inline void add_prefix() {
+ strncat(p, pre_color_prefix, SPACE_LEFT);
p += pre_color_prefix_len;
- strncat(p, prefixBuf, prefixLen);
+
+ strncat(p, prefixBuf, SPACE_LEFT);
p += prefixLen;
- strncat(p, post_color_prefix, post_color_prefix_len + 1);
+
+ strncat(p, post_color_prefix, SPACE_LEFT);
p += post_color_prefix_len;
- strncat(p, msg, message_len);
- p += message_len;
- strncat(p, pre_color_suffix, pre_color_suffix_len + 1);
+ }
+
+ inline void add_suffix() {
+ strncat(p, pre_color_suffix, SPACE_LEFT);
p += pre_color_suffix_len;
- strncat(p, suffixBuf, suffixLen);
+
+ strncat(p, suffixBuf, SPACE_LEFT);
p += suffixLen;
- strncat(p, post_color_suffix, post_color_suffix_len + 1);
+
+ strncat(p, post_color_suffix, SPACE_LEFT);
p += post_color_suffix_len;
+ }
+
+ inline void append_line(const char *line, size_t len) {
+ add_prefix();
+ strncat(p, line, SPACE_LEFT < len ? SPACE_LEFT : len);
+ p += len;
+ add_suffix();
+ }
+#undef SPACE_LEFT
+
+ if (prefixSuffixIsHeaderFooter) {
+ append_line(msg, message_len);
} else {
while (pm < (msg + message_len) && *pm != 0) {
const char *lineStart;
&& *pm != '\n' && *pm != 0) pm++;
lineLen = pm - lineStart;
- strncat(p, pre_color_prefix, pre_color_prefix_len + 1);
- p += pre_color_prefix_len;
- strncat(p, prefixBuf, prefixLen);
- p += prefixLen;
- strncat(p, post_color_prefix, post_color_prefix_len + 1);
- p += post_color_prefix_len;
- strncat(p, lineStart, lineLen);
- p += lineLen;
- strncat(p, pre_color_suffix, pre_color_suffix_len + 1);
- p += pre_color_suffix_len;
- strncat(p, suffixBuf, suffixLen);
- p += suffixLen;
- strncat(p, post_color_suffix, post_color_suffix_len + 1);
- p += post_color_suffix_len;
+ append_line(lineStart, lineLen);
if (pm < (msg + message_len) && *pm == '\n' && *pm != 0)
pm++;
}
}
+ *p = '\0';
if (p_outLength != NULL)
*p_outLength = p - ret;