1*925d05d3SKonstantin Kostiuk /* 2*925d05d3SKonstantin Kostiuk * QEMU Guest Agent VSS debug declarations 3*925d05d3SKonstantin Kostiuk * 4*925d05d3SKonstantin Kostiuk * Copyright (C) 2023 Red Hat Inc 5*925d05d3SKonstantin Kostiuk * 6*925d05d3SKonstantin Kostiuk * Authors: 7*925d05d3SKonstantin Kostiuk * Konstantin Kostiuk <kkostiuk@redhat.com> 8*925d05d3SKonstantin Kostiuk * 9*925d05d3SKonstantin Kostiuk * This work is licensed under the terms of the GNU GPL, version 2 or later. 10*925d05d3SKonstantin Kostiuk * See the COPYING file in the top-level directory. 11*925d05d3SKonstantin Kostiuk */ 12*925d05d3SKonstantin Kostiuk 13*925d05d3SKonstantin Kostiuk #include "qemu/osdep.h" 14*925d05d3SKonstantin Kostiuk #include "vss-debug.h" 15*925d05d3SKonstantin Kostiuk #include "vss-common.h" 16*925d05d3SKonstantin Kostiuk 17*925d05d3SKonstantin Kostiuk void qga_debug_internal(const char *funcname, const char *fmt, ...) 18*925d05d3SKonstantin Kostiuk { 19*925d05d3SKonstantin Kostiuk char user_string[512] = {0}; 20*925d05d3SKonstantin Kostiuk char full_string[640] = {0}; 21*925d05d3SKonstantin Kostiuk 22*925d05d3SKonstantin Kostiuk va_list args; 23*925d05d3SKonstantin Kostiuk va_start(args, fmt); 24*925d05d3SKonstantin Kostiuk if (vsnprintf(user_string, _countof(user_string), fmt, args) <= 0) { 25*925d05d3SKonstantin Kostiuk va_end(args); 26*925d05d3SKonstantin Kostiuk return; 27*925d05d3SKonstantin Kostiuk } 28*925d05d3SKonstantin Kostiuk 29*925d05d3SKonstantin Kostiuk va_end(args); 30*925d05d3SKonstantin Kostiuk 31*925d05d3SKonstantin Kostiuk if (snprintf(full_string, _countof(full_string), 32*925d05d3SKonstantin Kostiuk QGA_PROVIDER_NAME "[%lu]: %s %s\n", 33*925d05d3SKonstantin Kostiuk GetCurrentThreadId(), funcname, user_string) <= 0) { 34*925d05d3SKonstantin Kostiuk return; 35*925d05d3SKonstantin Kostiuk } 36*925d05d3SKonstantin Kostiuk 37*925d05d3SKonstantin Kostiuk OutputDebugString(full_string); 38*925d05d3SKonstantin Kostiuk fputs(full_string, stderr); 39*925d05d3SKonstantin Kostiuk } 40