diff options
Diffstat (limited to 'src/output.c')
-rw-r--r-- | src/output.c | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/output.c b/src/output.c index eddabe03..2cf76072 100644 --- a/src/output.c +++ b/src/output.c @@ -475,8 +475,8 @@ error (const floc *flocp, size_t len, const char *fmt, ...) void fatal (const floc *flocp, size_t len, const char *fmt, ...) { - va_list args; const char *stop = _(". Stop.\n"); + va_list args; char *start; char *p; @@ -505,6 +505,29 @@ fatal (const floc *flocp, size_t len, const char *fmt, ...) die (MAKE_FAILURE); } +/* Format a message and return a pointer to an internal buffer. */ + +char * +format (const char *prefix, size_t len, const char *fmt, ...) +{ + va_list args; + size_t plen = prefix ? strlen (prefix) : 0; + char *start; + char *p; + + len += strlen (fmt) + plen + 1; + start = p = get_buffer (len); + + if (plen) + p = mempcpy (p, prefix, plen); + + va_start (args, fmt); + vsprintf (p, fmt, args); + va_end (args); + + return start; +} + /* Print an error message from errno. */ void |