// Copyright 2021 Joe Drago. All rights reserved. // SPDX-License-Identifier: BSD-2-Clause #include "avif/internal.h" #include #include #include void avifDiagnosticsClearError(avifDiagnostics * diag) { *diag->error = '\0'; } #ifdef __clang__ __attribute__((__format__(__printf__, 2, 3))) #endif void avifDiagnosticsPrintf(avifDiagnostics * diag, const char * format, ...) { if (!diag) { // It is possible this is NULL (e.g. calls to avifFileTypeIsCompatible()) return; } if (*diag->error) { // There is already a detailed error set. return; } va_list args; va_start(args, format); vsnprintf(diag->error, AVIF_DIAGNOSTICS_ERROR_BUFFER_SIZE, format, args); diag->error[AVIF_DIAGNOSTICS_ERROR_BUFFER_SIZE - 1] = '\0'; va_end(args); }