_public_ int sd_journal_send_with_location(const char *file, const char *line, const char *func, const char *format, ...) { _cleanup_free_ struct iovec *iov = NULL; int r, i, j; va_list ap; char *f; va_start(ap, format); i = fill_iovec_sprintf(format, ap, 3, &iov); va_end(ap); if (_unlikely_(i < 0)) { r = i; goto finish; } ALLOCA_CODE_FUNC(f, func); iov[0] = IOVEC_MAKE_STRING(file); iov[1] = IOVEC_MAKE_STRING(line); iov[2] = IOVEC_MAKE_STRING(f); r = sd_journal_sendv(iov, i); finish: for (j = 3; j < i; j++) free(iov[j].iov_base); return r; }
_public_ int sd_journal_send(const char *format, ...) { int r, i, j; va_list ap; struct iovec *iov = NULL; va_start(ap, format); i = fill_iovec_sprintf(format, ap, 0, &iov); va_end(ap); if (_unlikely_(i < 0)) { r = i; goto finish; } r = sd_journal_sendv(iov, i); finish: for (j = 0; j < i; j++) free(iov[j].iov_base); free(iov); return r; }