va_list ap_q;
size_t len;
char buffer[256];
- char *p = buffer, *end = (p + (sizeof(buffer) - 1));
+ char *p = buffer, *end = (p + (sizeof(buffer) - 2));
/*
* Ensure that there's enough room for the keyword + data.
len = strlen(log_keyword);
if (len > (sizeof(buffer) / 2)) return;
- memcpy(p, log_keyword, len);
+ snprintf(buffer, sizeof(buffer), "$(%s", log_keyword);
p += strlen(p);
*p++ = ' ';
vsnprintf(p, end - p, fmt, ap_q);
va_end(ap_q);
- *end = '\0'; /* Ensure we always \0 terminate */
+ p += strlen(p);
+
+ /*
+ * For some reason there are trailing CRs added
+ */
+ p--;
+ while (*p < ' ') {
+ *p = '\0';
+ p--;
+ }
+ p++;
+
+ strcpy(p, ")");
gmk_eval(buffer, &(gmk_floc){ .filenm = file, .lineno = line });
}