| 2008 | */ |
| 2009 | |
| 2010 | static void |
| 2011 | doc_printf(pstops_doc_t *doc, /* I - Document information */ |
| 2012 | const char *format, /* I - Printf-style format string */ |
| 2013 | ...) /* I - Additional arguments as needed */ |
| 2014 | { |
| 2015 | va_list ap; /* Pointer to arguments */ |
| 2016 | char buffer[1024]; /* Output buffer */ |
| 2017 | ssize_t bytes; /* Number of bytes to write */ |
| 2018 | |
| 2019 | |
| 2020 | va_start(ap, format); |
| 2021 | bytes = vsnprintf(buffer, sizeof(buffer), format, ap); |
| 2022 | va_end(ap); |
| 2023 | |
| 2024 | if ((size_t)bytes > sizeof(buffer)) |
| 2025 | { |
| 2026 | _cupsLangPrintFilter(stderr, "ERROR", |
| 2027 | _("Buffer overflow detected, aborting.")); |
| 2028 | exit(1); |
| 2029 | } |
| 2030 | |
| 2031 | doc_write(doc, buffer, (size_t)bytes); |
| 2032 | } |
| 2033 | |
| 2034 | |
| 2035 | /* |
no test coverage detected