From nobody Mon Dec 9 16:41:41 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1539865679255965.3611504092062; Thu, 18 Oct 2018 05:27:59 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 981F71E308; Thu, 18 Oct 2018 12:27:56 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 6067171D65; Thu, 18 Oct 2018 12:27:56 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 03ADC180BAD3; Thu, 18 Oct 2018 12:27:56 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w9ICRKHh026326 for ; Thu, 18 Oct 2018 08:27:20 -0400 Received: by smtp.corp.redhat.com (Postfix) id 183395F7E7; Thu, 18 Oct 2018 12:27:20 +0000 (UTC) Received: from moe.brq.redhat.com (unknown [10.43.2.192]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8D42060922 for ; Thu, 18 Oct 2018 12:27:19 +0000 (UTC) From: Michal Privoznik To: libvir-list@redhat.com Date: Thu, 18 Oct 2018 14:26:54 +0200 Message-Id: <0fca1b4b278f2c51dc0db35059fbe3c0856873e5.1539865556.git.mprivozn@redhat.com> In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [snmp PATCH 16/20] libvirtSnmpError: Introduce and use printSystemError X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Thu, 18 Oct 2018 12:27:57 +0000 (UTC) X-ZohoMail: RDMRC_0 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" This function formats passed string and prints stringified system error. Signed-off-by: Michal Privoznik --- src/libvirtSnmp.c | 8 ++++++-- src/libvirtSnmpError.c | 38 ++++++++++++++++++++++++++++++++++++++ src/libvirtSnmpError.h | 3 +++ 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/src/libvirtSnmp.c b/src/libvirtSnmp.c index 97bb927..3a93bc6 100644 --- a/src/libvirtSnmp.c +++ b/src/libvirtSnmp.c @@ -189,8 +189,10 @@ pollingThreadFunc(void *foo) =20 /* Function to register domain lifecycle events collection */ int -libvirtRegisterEvents(virConnectPtr conn) { +libvirtRegisterEvents(virConnectPtr conn) +{ struct sigaction action_stop; + int rc; int ret =3D -1; =20 memset(&action_stop, 0, sizeof action_stop); @@ -214,8 +216,10 @@ libvirtRegisterEvents(virConnectPtr conn) { } =20 /* we need a thread to poll for events */ - if (pthread_create(&poll_thread, NULL, pollingThreadFunc, NULL)) + if ((rc =3D pthread_create(&poll_thread, NULL, pollingThreadFunc, NULL= ))) { + printSystemError(rc, "Unable to create polling thread"); goto cleanup; + } =20 ret =3D 0; cleanup: diff --git a/src/libvirtSnmpError.c b/src/libvirtSnmpError.c index c356aae..33a65c2 100644 --- a/src/libvirtSnmpError.c +++ b/src/libvirtSnmpError.c @@ -65,3 +65,41 @@ printLibvirtError(const char *fmt, ...) =20 virResetLastError(); } + + +/** + * printSystemError: + * @theerrno: the errno value + * @fmt: Error message format string + * + * Print system error with @theerrno translated into human readable form. + */ +void +printSystemError(int theerrno, const char *fmt, ...) +{ + char ebuf[1024]; + char sysebuf[1024]; + int rc; + int size =3D 0; + va_list ap; + + if (!strerror_r(theerrno, sysebuf, sizeof(sysebuf))) + return; + + va_start(ap, fmt); + rc =3D vsnprintf(ebuf, sizeof(ebuf), fmt, ap); + size +=3D rc; + va_end(ap); + + if (rc < 0 || size >=3D sizeof(ebuf)) + return; + + rc =3D snprintf(ebuf + size, sizeof(ebuf) - size, ": %s\n", sysebuf); + size +=3D rc; + + if (rc < 0 || size >=3D sizeof(ebuf)) + return; + + fputs(ebuf, stderr); + snmp_log(LOG_ERR, "%s", ebuf); +} diff --git a/src/libvirtSnmpError.h b/src/libvirtSnmpError.h index 46c98f0..e8822d1 100644 --- a/src/libvirtSnmpError.h +++ b/src/libvirtSnmpError.h @@ -36,4 +36,7 @@ void printLibvirtError(const char *fmt, ...) ATTRIBUTE_FMT_PRINTF(1, 2); =20 +void printSystemError(int theerrno, const char *fmt, ...) + ATTRIBUTE_FMT_PRINTF(2, 3); + #endif /* __LIBVIRT_SNMP_ERROR_H__ */ --=20 2.18.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list