There are a number of problems breaking the windows / mingw build currently. - Use of 'close' without importing unistd.h - Use of non-existant localtime_r - ERROR macro from logging.h clashes with a symbol imported from windows.h So this patch does - Adds the missing unistd.h include - Uses localtime() if localtime_r() is missing (as checked from configure) - Adds a VIR_ prefix onto all logging macros, keeping DEBUG() around because its just used in sooooo many places The use of localtime() on Windows is OK, because the MicroSoft implementation of this uses thread-local storage: http://msdn.microsoft.com/en-us/library/a442x3ye.aspx And all other OS we care about have localtime_r Finally I fix a few compile warnings, so that Mingw can now be built with --enable-compile-warnings=error to detect these problems more quickly in future. configure.in | 3 qemud/qemud.c | 206 ++++++++++++++++++++++++------------------------ qemud/remote.c | 104 ++++++++++++------------ qemud/remote_protocol.c | 4 qemud/rpcgen_fix.pl | 1 src/logging.c | 20 +++- src/logging.h | 57 +++++++------ src/test.c | 5 + tests/nodeinfotest.c | 2 9 files changed, 212 insertions(+), 190 deletions(-) Daniel diff --git a/configure.in b/configure.in --- a/configure.in +++ b/configure.in @@ -73,6 +73,9 @@ AC_SYS_LARGEFILE dnl Availability of various common functions (non-fatal if missing). AC_CHECK_FUNCS([cfmakeraw regexec uname sched_getaffinity getuid getgid]) + +dnl Availablility of threadsafe functions - fallback to non-threadsafe if missing +AC_CHECK_FUNCS([localtime_r]) dnl Availability of various common headers (non-fatal if missing). AC_CHECK_HEADERS([pwd.h paths.h regex.h sys/syslimits.h sys/utsname.h sys/wait.h winsock2.h sched.h termios.h sys/poll.h syslog.h]) diff --git a/qemud/qemud.c b/qemud/qemud.c --- a/qemud/qemud.c +++ b/qemud/qemud.c @@ -171,7 +171,7 @@ remoteCheckCertFile(const char *type, co { struct stat sb; if (stat(file, &sb) < 0) { - ERROR(_("Cannot access %s '%s': %s (%d)"), + VIR_ERROR(_("Cannot access %s '%s': %s (%d)"), type, file, strerror(errno), errno); return -1; } @@ -188,7 +188,7 @@ remoteInitializeGnuTLS (void) err = gnutls_certificate_allocate_credentials (&x509_cred); if (err) { - ERROR(_("gnutls_certificate_allocate_credentials: %s"), + VIR_ERROR(_("gnutls_certificate_allocate_credentials: %s"), gnutls_strerror (err)); return -1; } @@ -201,7 +201,7 @@ remoteInitializeGnuTLS (void) err = gnutls_certificate_set_x509_trust_file (x509_cred, ca_file, GNUTLS_X509_FMT_PEM); if (err < 0) { - ERROR(_("gnutls_certificate_set_x509_trust_file: %s"), + VIR_ERROR(_("gnutls_certificate_set_x509_trust_file: %s"), gnutls_strerror (err)); return -1; } @@ -215,7 +215,7 @@ remoteInitializeGnuTLS (void) err = gnutls_certificate_set_x509_crl_file (x509_cred, crl_file, GNUTLS_X509_FMT_PEM); if (err < 0) { - ERROR(_("gnutls_certificate_set_x509_crl_file: %s"), + VIR_ERROR(_("gnutls_certificate_set_x509_crl_file: %s"), gnutls_strerror (err)); return -1; } @@ -232,7 +232,7 @@ remoteInitializeGnuTLS (void) cert_file, key_file, GNUTLS_X509_FMT_PEM); if (err < 0) { - ERROR(_("gnutls_certificate_set_x509_key_file: %s"), + VIR_ERROR(_("gnutls_certificate_set_x509_key_file: %s"), gnutls_strerror (err)); return -1; } @@ -245,12 +245,12 @@ remoteInitializeGnuTLS (void) */ err = gnutls_dh_params_init (&dh_params); if (err < 0) { - ERROR(_("gnutls_dh_params_init: %s"), gnutls_strerror (err)); + VIR_ERROR(_("gnutls_dh_params_init: %s"), gnutls_strerror (err)); return -1; } err = gnutls_dh_params_generate2 (dh_params, DH_BITS); if (err < 0) { - ERROR(_("gnutls_dh_params_generate2: %s"), gnutls_strerror (err)); + VIR_ERROR(_("gnutls_dh_params_generate2: %s"), gnutls_strerror (err)); return -1; } @@ -271,7 +271,7 @@ qemudDispatchSignalEvent(int watch ATTRI pthread_mutex_lock(&server->lock); if (saferead(server->sigread, &siginfo, sizeof(siginfo)) != sizeof(siginfo)) { - ERROR(_("Failed to read from signal pipe: %s"), strerror(errno)); + VIR_ERROR(_("Failed to read from signal pipe: %s"), strerror(errno)); pthread_mutex_unlock(&server->lock); return; } @@ -280,20 +280,20 @@ qemudDispatchSignalEvent(int watch ATTRI switch (siginfo.si_signo) { case SIGHUP: - INFO0(_("Reloading configuration on SIGHUP")); + VIR_INFO0(_("Reloading configuration on SIGHUP")); if (virStateReload() < 0) - WARN0(_("Error while reloading drivers")); + VIR_WARN0(_("Error while reloading drivers")); break; case SIGINT: case SIGQUIT: case SIGTERM: - WARN(_("Shutting down on signal %d"), siginfo.si_signo); + VIR_WARN(_("Shutting down on signal %d"), siginfo.si_signo); server->shutdown = 1; break; default: - INFO(_("Received unexpected signal %d"), siginfo.si_signo); + VIR_INFO(_("Received unexpected signal %d"), siginfo.si_signo); break; } @@ -312,7 +312,7 @@ int qemudSetCloseExec(int fd) { goto error; return 0; error: - ERROR0(_("Failed to set close-on-exec file descriptor flag")); + VIR_ERROR0(_("Failed to set close-on-exec file descriptor flag")); return -1; } @@ -326,7 +326,7 @@ int qemudSetNonBlock(int fd) { goto error; return 0; error: - ERROR0(_("Failed to set non-blocking file descriptor flag")); + VIR_ERROR0(_("Failed to set non-blocking file descriptor flag")); return -1; } @@ -404,28 +404,28 @@ static int qemudWritePidFile(const char return 0; if ((fd = open(pidFile, O_WRONLY|O_CREAT|O_EXCL, 0644)) < 0) { - ERROR(_("Failed to open pid file '%s' : %s"), - pidFile, strerror(errno)); + VIR_ERROR(_("Failed to open pid file '%s' : %s"), + pidFile, strerror(errno)); return -1; } if (!(fh = fdopen(fd, "w"))) { - ERROR(_("Failed to fdopen pid file '%s' : %s"), - pidFile, strerror(errno)); + VIR_ERROR(_("Failed to fdopen pid file '%s' : %s"), + pidFile, strerror(errno)); close(fd); return -1; } if (fprintf(fh, "%lu\n", (unsigned long)getpid()) < 0) { - ERROR(_("Failed to write to pid file '%s' : %s"), - pidFile, strerror(errno)); + VIR_ERROR(_("Failed to write to pid file '%s' : %s"), + pidFile, strerror(errno)); close(fd); return -1; } if (fclose(fh) == EOF) { - ERROR(_("Failed to close pid file '%s' : %s"), - pidFile, strerror(errno)); + VIR_ERROR(_("Failed to close pid file '%s' : %s"), + pidFile, strerror(errno)); return -1; } @@ -440,7 +440,7 @@ static int qemudListenUnix(struct qemud_ gid_t oldgrp; if (VIR_ALLOC(sock) < 0) { - ERROR("%s", _("Failed to allocate memory for struct qemud_socket")); + VIR_ERROR("%s", _("Failed to allocate memory for struct qemud_socket")); return -1; } @@ -450,8 +450,8 @@ static int qemudListenUnix(struct qemud_ sock->auth = auth; if ((sock->fd = socket(PF_UNIX, SOCK_STREAM, 0)) < 0) { - ERROR(_("Failed to create socket: %s"), - strerror(errno)); + VIR_ERROR(_("Failed to create socket: %s"), + strerror(errno)); goto cleanup; } @@ -472,8 +472,8 @@ static int qemudListenUnix(struct qemud_ setgid(unix_sock_gid); if (bind(sock->fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) { - ERROR(_("Failed to bind socket to '%s': %s"), - path, strerror(errno)); + VIR_ERROR(_("Failed to bind socket to '%s': %s"), + path, strerror(errno)); goto cleanup; } umask(oldmask); @@ -481,8 +481,8 @@ static int qemudListenUnix(struct qemud_ setgid(oldgrp); if (listen(sock->fd, 30) < 0) { - ERROR(_("Failed to listen for connections on '%s': %s"), - path, strerror(errno)); + VIR_ERROR(_("Failed to listen for connections on '%s': %s"), + path, strerror(errno)); goto cleanup; } @@ -492,7 +492,7 @@ static int qemudListenUnix(struct qemud_ VIR_EVENT_HANDLE_HANGUP, qemudDispatchServerEvent, server, NULL)) < 0) { - ERROR0(_("Failed to add server event callback")); + VIR_ERROR0(_("Failed to add server event callback")); goto cleanup; } @@ -521,7 +521,7 @@ remoteMakeSockets (int *fds, int max_fds int e = getaddrinfo (node, service, &hints, &ai); if (e != 0) { - ERROR(_("getaddrinfo: %s\n"), gai_strerror (e)); + VIR_ERROR(_("getaddrinfo: %s\n"), gai_strerror (e)); return -1; } @@ -530,7 +530,7 @@ remoteMakeSockets (int *fds, int max_fds fds[*nfds_r] = socket (runp->ai_family, runp->ai_socktype, runp->ai_protocol); if (fds[*nfds_r] == -1) { - ERROR(_("socket: %s"), strerror (errno)); + VIR_ERROR(_("socket: %s"), strerror (errno)); return -1; } @@ -539,14 +539,14 @@ remoteMakeSockets (int *fds, int max_fds if (bind (fds[*nfds_r], runp->ai_addr, runp->ai_addrlen) == -1) { if (errno != EADDRINUSE) { - ERROR(_("bind: %s"), strerror (errno)); + VIR_ERROR(_("bind: %s"), strerror (errno)); return -1; } close (fds[*nfds_r]); } else { if (listen (fds[*nfds_r], SOMAXCONN) == -1) { - ERROR(_("listen: %s"), strerror (errno)); + VIR_ERROR(_("listen: %s"), strerror (errno)); return -1; } ++*nfds_r; @@ -581,7 +581,7 @@ remoteListenTCP (struct qemud_server *se socklen_t salen = sizeof(sa); if (VIR_ALLOC(sock) < 0) { - ERROR(_("remoteListenTCP: calloc: %s"), strerror (errno)); + VIR_ERROR(_("remoteListenTCP: calloc: %s"), strerror (errno)); goto cleanup; } @@ -611,7 +611,7 @@ remoteListenTCP (struct qemud_server *se goto cleanup; if (listen (sock->fd, 30) < 0) { - ERROR(_("remoteListenTCP: listen: %s"), strerror (errno)); + VIR_ERROR(_("remoteListenTCP: listen: %s"), strerror (errno)); goto cleanup; } @@ -621,7 +621,7 @@ remoteListenTCP (struct qemud_server *se VIR_EVENT_HANDLE_HANGUP, qemudDispatchServerEvent, server, NULL)) < 0) { - ERROR0(_("Failed to add server event callback")); + VIR_ERROR0(_("Failed to add server event callback")); goto cleanup; } @@ -660,7 +660,7 @@ static int qemudInitPaths(struct qemud_s struct passwd *pw; if (!(pw = getpwuid(uid))) { - ERROR(_("Failed to find user record for uid '%d': %s"), + VIR_ERROR(_("Failed to find user record for uid '%d': %s"), uid, strerror(errno)); return -1; } @@ -676,7 +676,7 @@ static int qemudInitPaths(struct qemud_s return 0; snprintf_error: - ERROR("%s", _("Resulting path too long for buffer in qemudInitPaths()")); + VIR_ERROR("%s", _("Resulting path too long for buffer in qemudInitPaths()")); return -1; } @@ -684,7 +684,7 @@ static struct qemud_server *qemudInitial struct qemud_server *server; if (VIR_ALLOC(server) < 0) { - ERROR0(_("Failed to allocate struct qemud_server")); + VIR_ERROR0(_("Failed to allocate struct qemud_server")); return NULL; } @@ -696,7 +696,7 @@ static struct qemud_server *qemudInitial server->sigread = sigread; if (virEventInit() < 0) { - ERROR0(_("Failed to initialize event system")); + VIR_ERROR0(_("Failed to initialize event system")); VIR_FREE(server); return NULL; } @@ -781,8 +781,8 @@ static struct qemud_server *qemudNetwork auth_tcp == REMOTE_AUTH_SASL || auth_tls == REMOTE_AUTH_SASL) { if ((err = sasl_server_init(NULL, "libvirt")) != SASL_OK) { - ERROR(_("Failed to initialize SASL authentication %s"), - sasl_errstring(err, NULL, NULL)); + VIR_ERROR(_("Failed to initialize SASL authentication %s"), + sasl_errstring(err, NULL, NULL)); goto cleanup; } } @@ -795,8 +795,8 @@ static struct qemud_server *qemudNetwork dbus_error_init(&derr); server->sysbus = dbus_bus_get(DBUS_BUS_SYSTEM, &derr); if (!(server->sysbus)) { - ERROR(_("Failed to connect to system bus for PolicyKit auth: %s"), - derr.message); + VIR_ERROR(_("Failed to connect to system bus for PolicyKit auth: %s"), + derr.message); dbus_error_free(&derr); goto cleanup; } @@ -906,7 +906,7 @@ remoteInitializeTLSSession (void) return session; failed: - ERROR(_("remoteInitializeTLSSession: %s"), + VIR_ERROR(_("remoteInitializeTLSSession: %s"), gnutls_strerror (err)); return NULL; } @@ -922,7 +922,7 @@ remoteCheckDN (gnutls_x509_crt_t cert) err = gnutls_x509_crt_get_dn (cert, name, &namesize); if (err != 0) { - ERROR(_("remoteCheckDN: gnutls_x509_cert_get_dn: %s"), + VIR_ERROR(_("remoteCheckDN: gnutls_x509_cert_get_dn: %s"), gnutls_strerror (err)); return 0; } @@ -954,40 +954,40 @@ remoteCheckCertificate (gnutls_session_t time_t now; if ((ret = gnutls_certificate_verify_peers2 (session, &status)) < 0){ - ERROR(_("remoteCheckCertificate: verify failed: %s"), + VIR_ERROR(_("remoteCheckCertificate: verify failed: %s"), gnutls_strerror (ret)); return -1; } if (status != 0) { if (status & GNUTLS_CERT_INVALID) - ERROR0(_("remoteCheckCertificate: " - "the client certificate is not trusted.")); + VIR_ERROR0(_("remoteCheckCertificate: " + "the client certificate is not trusted.")); if (status & GNUTLS_CERT_SIGNER_NOT_FOUND) - ERROR0(_("remoteCheckCertificate: the client " - "certificate has unknown issuer.")); + VIR_ERROR0(_("remoteCheckCertificate: the client " + "certificate has unknown issuer.")); if (status & GNUTLS_CERT_REVOKED) - ERROR0(_("remoteCheckCertificate: " - "the client certificate has been revoked.")); + VIR_ERROR0(_("remoteCheckCertificate: " + "the client certificate has been revoked.")); #ifndef GNUTLS_1_0_COMPAT if (status & GNUTLS_CERT_INSECURE_ALGORITHM) - ERROR0(_("remoteCheckCertificate: the client certificate" - " uses an insecure algorithm.")); + VIR_ERROR0(_("remoteCheckCertificate: the client certificate" + " uses an insecure algorithm.")); #endif return -1; } if (gnutls_certificate_type_get (session) != GNUTLS_CRT_X509) { - ERROR0(_("remoteCheckCertificate: certificate is not X.509")); + VIR_ERROR0(_("remoteCheckCertificate: certificate is not X.509")); return -1; } if (!(certs = gnutls_certificate_get_peers(session, &nCerts))) { - ERROR0(_("remoteCheckCertificate: no peers")); + VIR_ERROR0(_("remoteCheckCertificate: no peers")); return -1; } @@ -997,7 +997,7 @@ remoteCheckCertificate (gnutls_session_t gnutls_x509_crt_t cert; if (gnutls_x509_crt_init (&cert) < 0) { - ERROR0(_("remoteCheckCertificate: gnutls_x509_crt_init failed")); + VIR_ERROR0(_("remoteCheckCertificate: gnutls_x509_crt_init failed")); return -1; } @@ -1007,15 +1007,15 @@ remoteCheckCertificate (gnutls_session_t } if (gnutls_x509_crt_get_expiration_time (cert) < now) { - ERROR0(_("remoteCheckCertificate: " - "the client certificate has expired")); + VIR_ERROR0(_("remoteCheckCertificate: " + "the client certificate has expired")); gnutls_x509_crt_deinit (cert); return -1; } if (gnutls_x509_crt_get_activation_time (cert) > now) { - ERROR0(_("remoteCheckCertificate: the client " - "certificate is not yet activated")); + VIR_ERROR0(_("remoteCheckCertificate: the client " + "certificate is not yet activated")); gnutls_x509_crt_deinit (cert); return -1; } @@ -1023,7 +1023,7 @@ remoteCheckCertificate (gnutls_session_t if (i == 0) { if (!remoteCheckDN (cert)) { /* This is the most common error: make it informative. */ - ERROR0(_("remoteCheckCertificate: client's Distinguished Name is not on the list of allowed clients (tls_allowed_dn_list). Use 'openssl x509 -in clientcert.pem -text' to view the Distinguished Name field in the client certificate, or run this daemon with --verbose option.")); + VIR_ERROR0(_("remoteCheckCertificate: client's Distinguished Name is not on the list of allowed clients (tls_allowed_dn_list). Use 'openssl x509 -in clientcert.pem -text' to view the Distinguished Name field in the client certificate, or run this daemon with --verbose option.")); gnutls_x509_crt_deinit (cert); return -1; } @@ -1039,11 +1039,11 @@ remoteCheckAccess (struct qemud_client * { /* Verify client certificate. */ if (remoteCheckCertificate (client->tlssession) == -1) { - ERROR0(_("remoteCheckCertificate: " - "failed to verify client's certificate")); + VIR_ERROR0(_("remoteCheckCertificate: " + "failed to verify client's certificate")); if (!tls_no_verify_certificate) return -1; - else INFO0(_("remoteCheckCertificate: tls_no_verify_certificate " - "is set so the bad certificate is ignored")); + else VIR_INFO0(_("remoteCheckCertificate: tls_no_verify_certificate " + "is set so the bad certificate is ignored")); } /* Checks have succeeded. Write a '\1' byte back to the client to @@ -1064,8 +1064,8 @@ int qemudGetSocketIdentity(int fd, uid_t unsigned int cr_len = sizeof (cr); if (getsockopt (fd, SOL_SOCKET, SO_PEERCRED, &cr, &cr_len) < 0) { - ERROR(_("Failed to verify client credentials: %s"), - strerror(errno)); + VIR_ERROR(_("Failed to verify client credentials: %s"), + strerror(errno)); return -1; } @@ -1089,18 +1089,18 @@ static int qemudDispatchServer(struct qe if ((fd = accept(sock->fd, (struct sockaddr *)&addr, &addrlen)) < 0) { if (errno == EAGAIN) return 0; - ERROR(_("Failed to accept connection: %s"), strerror(errno)); + VIR_ERROR(_("Failed to accept connection: %s"), strerror(errno)); return -1; } if (server->nclients >= max_clients) { - ERROR0(_("Too many active clients, dropping connection")); + VIR_ERROR0(_("Too many active clients, dropping connection")); close(fd); return -1; } if (VIR_REALLOC_N(server->clients, server->nclients+1) < 0) { - ERROR0(_("Out of memory allocating clients")); + VIR_ERROR0(_("Out of memory allocating clients")); close(fd); return -1; } @@ -1143,7 +1143,7 @@ static int qemudDispatchServer(struct qe /* Client is running as root, so disable auth */ if (uid == 0) { - INFO(_("Turn off polkit auth for privileged client %d"), pid); + VIR_INFO(_("Turn off polkit auth for privileged client %d"), pid); client->auth = REMOTE_AUTH_NONE; } } @@ -1182,7 +1182,7 @@ static int qemudDispatchServer(struct qe if (qemudRegisterClientEvent (server, client, 0) < 0) goto cleanup; } else { - ERROR(_("TLS handshake failed: %s"), + VIR_ERROR(_("TLS handshake failed: %s"), gnutls_strerror (ret)); goto cleanup; } @@ -1288,7 +1288,7 @@ static int qemudClientReadBuf(struct qem if ((ret = read (client->fd, data, len)) <= 0) { if (ret == 0 || errno != EAGAIN) { if (ret != 0) - ERROR(_("read: %s"), strerror (errno)); + VIR_ERROR(_("read: %s"), strerror (errno)); qemudDispatchClientFailure(server, client); } return -1; @@ -1301,7 +1301,7 @@ static int qemudClientReadBuf(struct qem if (ret == 0 || (ret != GNUTLS_E_AGAIN && ret != GNUTLS_E_INTERRUPTED)) { if (ret != 0) - ERROR(_("gnutls_record_recv: %s"), + VIR_ERROR(_("gnutls_record_recv: %s"), gnutls_strerror (ret)); qemudDispatchClientFailure (server, client); } @@ -1461,7 +1461,7 @@ static void qemudDispatchClientRead(stru else if (qemudRegisterClientEvent (server, client, 1) < 0) qemudDispatchClientFailure (server, client); } else if (ret != GNUTLS_E_AGAIN && ret != GNUTLS_E_INTERRUPTED) { - ERROR(_("TLS handshake failed: %s"), + VIR_ERROR(_("TLS handshake failed: %s"), gnutls_strerror (ret)); qemudDispatchClientFailure (server, client); } else { @@ -1485,7 +1485,7 @@ static int qemudClientWriteBuf(struct qe int ret; if (!client->tlssession) { if ((ret = safewrite(client->fd, data, len)) == -1) { - ERROR(_("write: %s"), strerror (errno)); + VIR_ERROR(_("write: %s"), strerror (errno)); qemudDispatchClientFailure(server, client); return -1; } @@ -1495,7 +1495,7 @@ static int qemudClientWriteBuf(struct qe qemudDispatchClientFailure (server, client); else if (ret < 0) { if (ret != GNUTLS_E_INTERRUPTED && ret != GNUTLS_E_AGAIN) { - ERROR(_("gnutls_record_send: %s"), gnutls_strerror (ret)); + VIR_ERROR(_("gnutls_record_send: %s"), gnutls_strerror (ret)); qemudDispatchClientFailure (server, client); } return -1; @@ -1604,7 +1604,7 @@ qemudDispatchClientWrite(struct qemud_se else if (qemudRegisterClientEvent (server, client, 1)) qemudDispatchClientFailure (server, client); } else if (ret != GNUTLS_E_AGAIN && ret != GNUTLS_E_INTERRUPTED) { - ERROR(_("TLS handshake failed: %s"), gnutls_strerror (ret)); + VIR_ERROR(_("TLS handshake failed: %s"), gnutls_strerror (ret)); qemudDispatchClientFailure (server, client); } else { if (qemudRegisterClientEvent (server, client, 1)) @@ -1731,7 +1731,7 @@ static int qemudOneLoop(void) { errors = sig_errors; if (errors) { sig_errors -= errors; - ERROR(_("Signal handler reported %d errors: last error: %s"), + VIR_ERROR(_("Signal handler reported %d errors: last error: %s"), errors, strerror (sig_lasterrno)); return -1; } @@ -1756,7 +1756,7 @@ static int qemudRunLoop(struct qemud_ser server->nworkers = min_workers; if (VIR_ALLOC_N(server->workers, server->nworkers) < 0) { - ERROR0(_("Failed to allocate workers")); + VIR_ERROR0(_("Failed to allocate workers")); return -1; } @@ -1882,13 +1882,13 @@ remoteConfigGetStringList(virConfPtr con switch (p->type) { case VIR_CONF_STRING: if (VIR_ALLOC_N(list, 2) < 0) { - ERROR(_("failed to allocate memory for %s config list"), key); + VIR_ERROR(_("failed to allocate memory for %s config list"), key); return -1; } list[0] = strdup (p->str); list[1] = NULL; if (list[0] == NULL) { - ERROR(_("failed to allocate memory for %s config list value"), + VIR_ERROR(_("failed to allocate memory for %s config list value"), key); VIR_FREE(list); return -1; @@ -1901,13 +1901,13 @@ remoteConfigGetStringList(virConfPtr con for (pp = p->list; pp; pp = pp->next) len++; if (VIR_ALLOC_N(list, 1+len) < 0) { - ERROR(_("failed to allocate memory for %s config list"), key); + VIR_ERROR(_("failed to allocate memory for %s config list"), key); return -1; } for (i = 0, pp = p->list; pp; ++i, pp = pp->next) { if (pp->type != VIR_CONF_STRING) { - ERROR(_("remoteReadConfigFile: %s: %s:" - " must be a string or list of strings\n"), + VIR_ERROR(_("remoteReadConfigFile: %s: %s:" + " must be a string or list of strings\n"), filename, key); VIR_FREE(list); return -1; @@ -1918,8 +1918,8 @@ remoteConfigGetStringList(virConfPtr con for (j = 0 ; j < i ; j++) VIR_FREE(list[j]); VIR_FREE(list); - ERROR(_("failed to allocate memory for %s config list value"), - key); + VIR_ERROR(_("failed to allocate memory for %s config list value"), + key); return -1; } @@ -1929,8 +1929,8 @@ remoteConfigGetStringList(virConfPtr con } default: - ERROR(_("remoteReadConfigFile: %s: %s:" - " must be a string or list of strings\n"), + VIR_ERROR(_("remoteReadConfigFile: %s: %s:" + " must be a string or list of strings\n"), filename, key); return -1; } @@ -1945,7 +1945,7 @@ checkType (virConfValuePtr p, const char const char *key, virConfType required_type) { if (p->type != required_type) { - ERROR(_("remoteReadConfigFile: %s: %s: invalid type:" + VIR_ERROR(_("remoteReadConfigFile: %s: %s: invalid type:" " got %s; expected %s\n"), filename, key, virConfTypeName (p->type), virConfTypeName (required_type)); @@ -1966,7 +1966,7 @@ checkType (virConfValuePtr p, const char goto free_and_fail; \ (var_name) = strdup (p->str); \ if ((var_name) == NULL) { \ - ERROR(_("remoteReadConfigFile: %s\n"),strerror (errno));\ + VIR_ERROR(_("remoteReadConfigFile: %s\n"),strerror (errno)); \ goto free_and_fail; \ } \ } \ @@ -2008,7 +2008,7 @@ static int remoteConfigGetAuth(virConfPt *auth = REMOTE_AUTH_POLKIT; #endif } else { - ERROR(_("remoteReadConfigFile: %s: %s: unsupported auth %s\n"), + VIR_ERROR(_("remoteReadConfigFile: %s: %s: unsupported auth %s\n"), filename, key, p->str); return -1; } @@ -2155,11 +2155,11 @@ remoteReadConfigFile (struct qemud_serve GET_CONF_STR (conf, filename, unix_sock_group); if (unix_sock_group) { if (getuid() != 0) { - WARN0(_("Cannot set group when not running as root")); + VIR_WARN0(_("Cannot set group when not running as root")); } else { struct group *grp = getgrnam(unix_sock_group); if (!grp) { - ERROR(_("Failed to lookup group '%s'"), unix_sock_group); + VIR_ERROR(_("Failed to lookup group '%s'"), unix_sock_group); goto free_and_fail; } unix_sock_gid = grp->gr_gid; @@ -2171,7 +2171,7 @@ remoteReadConfigFile (struct qemud_serve GET_CONF_STR (conf, filename, unix_sock_ro_perms); if (unix_sock_ro_perms) { if (virStrToLong_i (unix_sock_ro_perms, NULL, 8, &unix_sock_ro_mask) != 0) { - ERROR(_("Failed to parse mode '%s'"), unix_sock_ro_perms); + VIR_ERROR(_("Failed to parse mode '%s'"), unix_sock_ro_perms); goto free_and_fail; } free (unix_sock_ro_perms); @@ -2181,7 +2181,7 @@ remoteReadConfigFile (struct qemud_serve GET_CONF_STR (conf, filename, unix_sock_rw_perms); if (unix_sock_rw_perms) { if (virStrToLong_i (unix_sock_rw_perms, NULL, 8, &unix_sock_rw_mask) != 0) { - ERROR(_("Failed to parse mode '%s'"), unix_sock_rw_perms); + VIR_ERROR(_("Failed to parse mode '%s'"), unix_sock_rw_perms); goto free_and_fail; } free (unix_sock_rw_perms); @@ -2374,7 +2374,7 @@ int main(int argc, char **argv) { if (godaemon) { if (qemudGoDaemon() < 0) { - ERROR(_("Failed to fork as daemon: %s"), strerror(errno)); + VIR_ERROR(_("Failed to fork as daemon: %s"), strerror(errno)); goto error1; } } @@ -2395,7 +2395,7 @@ int main(int argc, char **argv) { qemudSetNonBlock(sigpipe[1]) < 0 || qemudSetCloseExec(sigpipe[0]) < 0 || qemudSetCloseExec(sigpipe[1]) < 0) { - ERROR(_("Failed to create pipe: %s"), strerror(errno)); + VIR_ERROR(_("Failed to create pipe: %s"), strerror(errno)); goto error2; } sigwrite = sigpipe[1]; @@ -2427,14 +2427,14 @@ int main(int argc, char **argv) { const char *sockdirname = LOCAL_STATE_DIR "/run/libvirt"; if (chown(sockdirname, -1, unix_sock_gid) < 0) - ERROR(_("Failed to change group ownership of %s"), sockdirname); + VIR_ERROR(_("Failed to change group ownership of %s"), sockdirname); } if (virEventAddHandleImpl(sigpipe[0], VIR_EVENT_HANDLE_READABLE, qemudDispatchSignalEvent, server, NULL) < 0) { - ERROR0(_("Failed to register callback for signal pipe")); + VIR_ERROR0(_("Failed to register callback for signal pipe")); ret = 3; goto error2; } diff --git a/qemud/remote.c b/qemud/remote.c --- a/qemud/remote.c +++ b/qemud/remote.c @@ -2542,7 +2542,7 @@ remoteDispatchAuthSaslInit (struct qemud REMOTE_DEBUG("Initialize SASL auth %d", client->fd); if (client->auth != REMOTE_AUTH_SASL || client->saslconn != NULL) { - ERROR0(_("client tried invalid SASL init request")); + VIR_ERROR0(_("client tried invalid SASL init request")); goto authfail; } @@ -2582,8 +2582,8 @@ remoteDispatchAuthSaslInit (struct qemud VIR_FREE(localAddr); VIR_FREE(remoteAddr); if (err != SASL_OK) { - ERROR(_("sasl context setup failed %d (%s)"), - err, sasl_errstring(err, NULL, NULL)); + VIR_ERROR(_("sasl context setup failed %d (%s)"), + err, sasl_errstring(err, NULL, NULL)); client->saslconn = NULL; goto authfail; } @@ -2595,7 +2595,7 @@ remoteDispatchAuthSaslInit (struct qemud cipher = gnutls_cipher_get(client->tlssession); if (!(ssf = (sasl_ssf_t)gnutls_cipher_get_key_size(cipher))) { - ERROR0(_("cannot TLS get cipher size")); + VIR_ERROR0(_("cannot TLS get cipher size")); sasl_dispose(&client->saslconn); client->saslconn = NULL; goto authfail; @@ -2604,8 +2604,8 @@ remoteDispatchAuthSaslInit (struct qemud err = sasl_setprop(client->saslconn, SASL_SSF_EXTERNAL, &ssf); if (err != SASL_OK) { - ERROR(_("cannot set SASL external SSF %d (%s)"), - err, sasl_errstring(err, NULL, NULL)); + VIR_ERROR(_("cannot set SASL external SSF %d (%s)"), + err, sasl_errstring(err, NULL, NULL)); sasl_dispose(&client->saslconn); client->saslconn = NULL; goto authfail; @@ -2632,8 +2632,8 @@ remoteDispatchAuthSaslInit (struct qemud err = sasl_setprop(client->saslconn, SASL_SEC_PROPS, &secprops); if (err != SASL_OK) { - ERROR(_("cannot set SASL security props %d (%s)"), - err, sasl_errstring(err, NULL, NULL)); + VIR_ERROR(_("cannot set SASL security props %d (%s)"), + err, sasl_errstring(err, NULL, NULL)); sasl_dispose(&client->saslconn); client->saslconn = NULL; goto authfail; @@ -2648,8 +2648,8 @@ remoteDispatchAuthSaslInit (struct qemud NULL, NULL); if (err != SASL_OK) { - ERROR(_("cannot list SASL mechanisms %d (%s)"), - err, sasl_errdetail(client->saslconn)); + VIR_ERROR(_("cannot list SASL mechanisms %d (%s)"), + err, sasl_errdetail(client->saslconn)); sasl_dispose(&client->saslconn); client->saslconn = NULL; goto authfail; @@ -2657,7 +2657,7 @@ remoteDispatchAuthSaslInit (struct qemud REMOTE_DEBUG("Available mechanisms for client: '%s'", mechlist); ret->mechlist = strdup(mechlist); if (!ret->mechlist) { - ERROR0(_("cannot allocate mechlist")); + VIR_ERROR0(_("cannot allocate mechlist")); sasl_dispose(&client->saslconn); client->saslconn = NULL; goto authfail; @@ -2688,8 +2688,8 @@ remoteSASLCheckSSF (struct qemud_client err = sasl_getprop(client->saslconn, SASL_SSF, &val); if (err != SASL_OK) { - ERROR(_("cannot query SASL ssf on connection %d (%s)"), - err, sasl_errstring(err, NULL, NULL)); + VIR_ERROR(_("cannot query SASL ssf on connection %d (%s)"), + err, sasl_errstring(err, NULL, NULL)); remoteDispatchAuthError(rerr); sasl_dispose(&client->saslconn); client->saslconn = NULL; @@ -2698,7 +2698,7 @@ remoteSASLCheckSSF (struct qemud_client ssf = *(const int *)val; REMOTE_DEBUG("negotiated an SSF of %d", ssf); if (ssf < 56) { /* 56 is good for Kerberos */ - ERROR(_("negotiated SSF %d was not strong enough"), ssf); + VIR_ERROR(_("negotiated SSF %d was not strong enough"), ssf); remoteDispatchAuthError(rerr); sasl_dispose(&client->saslconn); client->saslconn = NULL; @@ -2727,15 +2727,15 @@ remoteSASLCheckAccess (struct qemud_serv err = sasl_getprop(client->saslconn, SASL_USERNAME, &val); if (err != SASL_OK) { - ERROR(_("cannot query SASL username on connection %d (%s)"), - err, sasl_errstring(err, NULL, NULL)); + VIR_ERROR(_("cannot query SASL username on connection %d (%s)"), + err, sasl_errstring(err, NULL, NULL)); remoteDispatchAuthError(rerr); sasl_dispose(&client->saslconn); client->saslconn = NULL; return -1; } if (val == NULL) { - ERROR0(_("no client username was found")); + VIR_ERROR0(_("no client username was found")); remoteDispatchAuthError(rerr); sasl_dispose(&client->saslconn); client->saslconn = NULL; @@ -2745,7 +2745,7 @@ remoteSASLCheckAccess (struct qemud_serv client->saslUsername = strdup((const char*)val); if (client->saslUsername == NULL) { - ERROR0(_("out of memory copying username")); + VIR_ERROR0(_("out of memory copying username")); remoteDispatchAuthError(rerr); sasl_dispose(&client->saslconn); client->saslconn = NULL; @@ -2764,7 +2764,7 @@ remoteSASLCheckAccess (struct qemud_serv } /* Denied */ - ERROR(_("SASL client %s not allowed in whitelist"), client->saslUsername); + VIR_ERROR(_("SASL client %s not allowed in whitelist"), client->saslUsername); remoteDispatchAuthError(rerr); sasl_dispose(&client->saslconn); client->saslconn = NULL; @@ -2794,7 +2794,7 @@ remoteDispatchAuthSaslStart (struct qemu REMOTE_DEBUG("Start SASL auth %d", client->fd); if (client->auth != REMOTE_AUTH_SASL || client->saslconn == NULL) { - ERROR0(_("client tried invalid SASL start request")); + VIR_ERROR0(_("client tried invalid SASL start request")); goto authfail; } @@ -2809,14 +2809,14 @@ remoteDispatchAuthSaslStart (struct qemu &serveroutlen); if (err != SASL_OK && err != SASL_CONTINUE) { - ERROR(_("sasl start failed %d (%s)"), - err, sasl_errdetail(client->saslconn)); + VIR_ERROR(_("sasl start failed %d (%s)"), + err, sasl_errdetail(client->saslconn)); sasl_dispose(&client->saslconn); client->saslconn = NULL; goto authfail; } if (serveroutlen > REMOTE_AUTH_SASL_DATA_MAX) { - ERROR(_("sasl start reply data too long %d"), serveroutlen); + VIR_ERROR(_("sasl start reply data too long %d"), serveroutlen); sasl_dispose(&client->saslconn); client->saslconn = NULL; goto authfail; @@ -2881,7 +2881,7 @@ remoteDispatchAuthSaslStep (struct qemud REMOTE_DEBUG("Step SASL auth %d", client->fd); if (client->auth != REMOTE_AUTH_SASL || client->saslconn == NULL) { - ERROR0(_("client tried invalid SASL start request")); + VIR_ERROR0(_("client tried invalid SASL start request")); goto authfail; } @@ -2895,16 +2895,16 @@ remoteDispatchAuthSaslStep (struct qemud &serveroutlen); if (err != SASL_OK && err != SASL_CONTINUE) { - ERROR(_("sasl step failed %d (%s)"), - err, sasl_errdetail(client->saslconn)); + VIR_ERROR(_("sasl step failed %d (%s)"), + err, sasl_errdetail(client->saslconn)); sasl_dispose(&client->saslconn); client->saslconn = NULL; goto authfail; } if (serveroutlen > REMOTE_AUTH_SASL_DATA_MAX) { - ERROR(_("sasl step reply data too long %d"), - serveroutlen); + VIR_ERROR(_("sasl step reply data too long %d"), + serveroutlen); sasl_dispose(&client->saslconn); client->saslconn = NULL; goto authfail; @@ -2959,7 +2959,7 @@ remoteDispatchAuthSaslInit (struct qemud void *args ATTRIBUTE_UNUSED, remote_auth_sasl_init_ret *ret ATTRIBUTE_UNUSED) { - ERROR0(_("client tried unsupported SASL init request")); + VIR_ERROR0(_("client tried unsupported SASL init request")); remoteDispatchAuthError(rerr); return -1; } @@ -2972,7 +2972,7 @@ remoteDispatchAuthSaslStart (struct qemu remote_auth_sasl_start_args *args ATTRIBUTE_UNUSED, remote_auth_sasl_start_ret *ret ATTRIBUTE_UNUSED) { - ERROR0(_("client tried unsupported SASL start request")); + VIR_ERROR0(_("client tried unsupported SASL start request")); remoteDispatchAuthError(rerr); return -1; } @@ -2985,7 +2985,7 @@ remoteDispatchAuthSaslStep (struct qemud remote_auth_sasl_step_args *args ATTRIBUTE_UNUSED, remote_auth_sasl_step_ret *ret ATTRIBUTE_UNUSED) { - ERROR0(_("client tried unsupported SASL step request")); + VIR_ERROR0(_("client tried unsupported SASL step request")); remoteDispatchAuthError(rerr); return -1; } @@ -3021,26 +3021,26 @@ remoteDispatchAuthPolkit (struct qemud_s REMOTE_DEBUG("Start PolicyKit auth %d", client->fd); if (client->auth != REMOTE_AUTH_POLKIT) { - ERROR0(_("client tried invalid PolicyKit init request")); + VIR_ERROR0(_("client tried invalid PolicyKit init request")); goto authfail; } if (qemudGetSocketIdentity(client->fd, &callerUid, &callerPid) < 0) { - ERROR0(_("cannot get peer socket identity")); - goto authfail; - } - - INFO(_("Checking PID %d running as %d"), callerPid, callerUid); + VIR_ERROR0(_("cannot get peer socket identity")); + goto authfail; + } + + VIR_INFO(_("Checking PID %d running as %d"), callerPid, callerUid); dbus_error_init(&err); if (!(pkcaller = polkit_caller_new_from_pid(server->sysbus, callerPid, &err))) { - ERROR(_("Failed to lookup policy kit caller: %s"), err.message); + VIR_ERROR(_("Failed to lookup policy kit caller: %s"), err.message); dbus_error_free(&err); goto authfail; } if (!(pkaction = polkit_action_new())) { - ERROR(_("Failed to create polkit action %s\n"), strerror(errno)); + VIR_ERROR(_("Failed to create polkit action %s\n"), strerror(errno)); polkit_caller_unref(pkcaller); goto authfail; } @@ -3048,9 +3048,9 @@ remoteDispatchAuthPolkit (struct qemud_s if (!(pkcontext = polkit_context_new()) || !polkit_context_init(pkcontext, &pkerr)) { - ERROR(_("Failed to create polkit context %s\n"), - (pkerr ? polkit_error_get_error_message(pkerr) - : strerror(errno))); + VIR_ERROR(_("Failed to create polkit context %s\n"), + (pkerr ? polkit_error_get_error_message(pkerr) + : strerror(errno))); if (pkerr) polkit_error_free(pkerr); polkit_caller_unref(pkcaller); @@ -3066,9 +3066,9 @@ remoteDispatchAuthPolkit (struct qemud_s 0, &pkerr); if (pkerr && polkit_error_is_set(pkerr)) { - ERROR(_("Policy kit failed to check authorization %d %s"), - polkit_error_get_error_code(pkerr), - polkit_error_get_error_message(pkerr)); + VIR_ERROR(_("Policy kit failed to check authorization %d %s"), + polkit_error_get_error_code(pkerr), + polkit_error_get_error_message(pkerr)); goto authfail; } #else @@ -3080,12 +3080,12 @@ remoteDispatchAuthPolkit (struct qemud_s polkit_caller_unref(pkcaller); polkit_action_unref(pkaction); if (pkresult != POLKIT_RESULT_YES) { - ERROR(_("Policy kit denied action %s from pid %d, uid %d, result: %s\n"), - action, callerPid, callerUid, - polkit_result_to_string_representation(pkresult)); - goto authfail; - } - INFO(_("Policy allowed action %s from pid %d, uid %d, result %s"), + VIR_ERROR(_("Policy kit denied action %s from pid %d, uid %d, result: %s\n"), + action, callerPid, callerUid, + polkit_result_to_string_representation(pkresult)); + goto authfail; + } + VIR_INFO(_("Policy allowed action %s from pid %d, uid %d, result %s"), action, callerPid, callerUid, polkit_result_to_string_representation(pkresult)); ret->complete = 1; @@ -3110,7 +3110,7 @@ remoteDispatchAuthPolkit (struct qemud_s void *args ATTRIBUTE_UNUSED, remote_auth_polkit_ret *ret ATTRIBUTE_UNUSED) { - ERROR0(_("client tried unsupported PolicyKit init request")); + VIR_ERROR0(_("client tried unsupported PolicyKit init request")); remoteDispatchAuthError(rerr); return -1; } diff --git a/qemud/remote_protocol.c b/qemud/remote_protocol.c --- a/qemud/remote_protocol.c +++ b/qemud/remote_protocol.c @@ -332,7 +332,7 @@ xdr_remote_node_get_info_ret (XDR *xdrs, return FALSE; if (!xdr_quad_t (xdrs, &objp->memory)) return FALSE; - buf = XDR_INLINE (xdrs, 6 * BYTES_PER_XDR_UNIT); + buf = (int32_t*)XDR_INLINE (xdrs, 6 * BYTES_PER_XDR_UNIT); if (buf == NULL) { if (!xdr_int (xdrs, &objp->cpus)) return FALSE; @@ -361,7 +361,7 @@ xdr_remote_node_get_info_ret (XDR *xdrs, return FALSE; if (!xdr_quad_t (xdrs, &objp->memory)) return FALSE; - buf = XDR_INLINE (xdrs, 6 * BYTES_PER_XDR_UNIT); + buf = (int32_t*)XDR_INLINE (xdrs, 6 * BYTES_PER_XDR_UNIT); if (buf == NULL) { if (!xdr_int (xdrs, &objp->cpus)) return FALSE; diff --git a/qemud/rpcgen_fix.pl b/qemud/rpcgen_fix.pl --- a/qemud/rpcgen_fix.pl +++ b/qemud/rpcgen_fix.pl @@ -68,6 +68,7 @@ while (<>) { # be ignored. Correct both these mistakes. @function = map { s/\bIXDR_PUT_((U_)?)LONG\b/(void)IXDR_PUT_$1INT32/; $_ } + map { s/\bXDR_INLINE\b/(int32_t*)XDR_INLINE/; $_ } @function; print (join ("", @function)); diff --git a/src/logging.c b/src/logging.c --- a/src/logging.c +++ b/src/logging.c @@ -29,6 +29,7 @@ #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> +#include <unistd.h> #if HAVE_SYSLOG_H #include <syslog.h> #endif @@ -483,7 +484,10 @@ void virLogMessage(const char *category, char *str = NULL; char *msg; struct timeval cur_time; - struct tm time_info; +#if HAVE_LOCALTIME_R + struct tm tmdata; +#endif + struct tm *tm; int len, fprio, i, ret; if (!virLogInitialized) @@ -509,17 +513,21 @@ void virLogMessage(const char *category, if (str == NULL) return; gettimeofday(&cur_time, NULL); - localtime_r(&cur_time.tv_sec, &time_info); +#if HAVE_LOCALTIME_R + tm = localtime_r(&cur_time.tv_sec, &tmdata); +#else + tm = localtime(&cur_time.tv_sec); +#endif if ((funcname != NULL) && (priority == VIR_LOG_DEBUG)) { ret = virAsprintf(&msg, "%02d:%02d:%02d.%03d: %s : %s:%lld : %s\n", - time_info.tm_hour, time_info.tm_min, - time_info.tm_sec, (int) cur_time.tv_usec / 1000, + tm->tm_hour, tm->tm_min, + tm->tm_sec, (int) cur_time.tv_usec / 1000, virLogPriorityString(priority), funcname, linenr, str); } else { ret = virAsprintf(&msg, "%02d:%02d:%02d.%03d: %s : %s\n", - time_info.tm_hour, time_info.tm_min, - time_info.tm_sec, (int) cur_time.tv_usec / 1000, + tm->tm_hour, tm->tm_min, + tm->tm_sec, (int) cur_time.tv_usec / 1000, virLogPriorityString(priority), str); } VIR_FREE(str); diff --git a/src/logging.h b/src/logging.h --- a/src/logging.h +++ b/src/logging.h @@ -30,48 +30,53 @@ * defined at runtime of from the libvirt daemon configuration file */ #ifdef ENABLE_DEBUG -#define VIR_DEBUG(category, f, l, fmt,...) \ +#define VIR_DEBUG_INT(category, f, l, fmt,...) \ virLogMessage(category, VIR_LOG_DEBUG, f, l, 0, fmt, __VA_ARGS__) -#define VIR_INFO(category, f, l, fmt,...) \ +#define VIR_INFO_INT(category, f, l, fmt,...) \ virLogMessage(category, VIR_LOG_INFO, f, l, 0, fmt, __VA_ARGS__) -#define VIR_WARN(category, f, l, fmt,...) \ +#define VIR_WARN_INT(category, f, l, fmt,...) \ virLogMessage(category, VIR_LOG_WARN, f, l, 0, fmt, __VA_ARGS__) -#define VIR_ERROR(category, f, l, fmt,...) \ +#define VIR_ERROR_INT(category, f, l, fmt,...) \ virLogMessage(category, VIR_LOG_ERROR, f, l, 0, fmt, __VA_ARGS__) #else -#define VIR_DEBUG(category, f, l, fmt,...) \ +#define VIR_DEBUG_INT(category, f, l, fmt,...) \ do { } while (0) -#define VIR_INFO(category, f, l, fmt,...) \ +#define VIR_INFO_INT(category, f, l, fmt,...) \ do { } while (0) -#define VIR_WARN(category, f, l, fmt,...) \ +#define VIR_WARN_INT(category, f, l, fmt,...) \ do { } while (0) -#define VIR_ERROR(category, f, l, fmt,...) \ +#define VIR_ERROR_INT(category, f, l, fmt,...) \ do { } while (0) -#define VIR_INFO(category, fmt,...) \ +#define VIR_INFO_INT(category, fmt,...) \ do { } while (0) -#define VIR_WARN(category, fmt,...) \ +#define VIR_WARN_INT(category, fmt,...) \ do { } while (0) -#define VIR_ERROR(category, fmt,...) \ +#define VIR_ERROR_INT(category, fmt,...) \ do { } while (0) #endif /* !ENABLE_DEBUG */ +#define VIR_DEBUG(fmt,...) \ + VIR_DEBUG_INT("file." __FILE__, __func__, __LINE__, fmt, __VA_ARGS__) +#define VIR_DEBUG0(msg) \ + VIR_DEBUG_INT("file." __FILE__, __func__, __LINE__, "%s", msg) +#define VIR_INFO(fmt,...) \ + VIR_INFO_INT("file." __FILE__, __func__, __LINE__, fmt, __VA_ARGS__) +#define VIR_INFO0(msg) \ + VIR_INFO_INT("file." __FILE__, __func__, __LINE__, "%s", msg) +#define VIR_WARN(fmt,...) \ + VIR_WARN_INT("file." __FILE__, __func__, __LINE__, fmt, __VA_ARGS__) +#define VIR_WARN0(msg) \ + VIR_WARN_INT("file." __FILE__, __func__, __LINE__, "%s", msg) +#define VIR_ERROR(fmt,...) \ + VIR_ERROR_INT("file." __FILE__, __func__, __LINE__, fmt, __VA_ARGS__) +#define VIR_ERROR0(msg) \ + VIR_ERROR_INT("file." __FILE__, __func__, __LINE__, "%s", msg) + +/* Legacy compat */ #define DEBUG(fmt,...) \ - VIR_DEBUG("file." __FILE__, __func__, __LINE__, fmt, __VA_ARGS__) + VIR_DEBUG_INT("file." __FILE__, __func__, __LINE__, fmt, __VA_ARGS__) #define DEBUG0(msg) \ - VIR_DEBUG("file." __FILE__, __func__, __LINE__, "%s", msg) -#define INFO(fmt,...) \ - VIR_INFO("file." __FILE__, __func__, __LINE__, fmt, __VA_ARGS__) -#define INFO0(msg) \ - VIR_INFO("file." __FILE__, __func__, __LINE__, "%s", msg) -#define WARN(fmt,...) \ - VIR_WARN("file." __FILE__, __func__, __LINE__, fmt, __VA_ARGS__) -#define WARN0(msg) \ - VIR_WARN("file." __FILE__, __func__, __LINE__, "%s", msg) -#define ERROR(fmt,...) \ - VIR_ERROR("file." __FILE__, __func__, __LINE__, fmt, __VA_ARGS__) -#define ERROR0(msg) \ - VIR_ERROR("file." __FILE__, __func__, __LINE__, "%s", msg) - + VIR_DEBUG_INT("file." __FILE__, __func__, __LINE__, "%s", msg) /* * To be made public diff --git a/src/test.c b/src/test.c --- a/src/test.c +++ b/src/test.c @@ -93,6 +93,7 @@ static const virNodeInfo defaultNodeInfo virReportErrorHelper(conn, VIR_FROM_TEST, code, __FILE__, \ __FUNCTION__, __LINE__, fmt) +#ifdef HAVE_THREAD_H static void testDriverLock(testConnPtr driver) { pthread_mutex_lock(&driver->lock); @@ -102,6 +103,10 @@ static void testDriverUnlock(testConnPtr { pthread_mutex_unlock(&driver->lock); } +#else +static void testDriverLock(testConnPtr driver ATTRIBUTE_UNUSED) {} +static void testDriverUnlock(testConnPtr driver ATTRIBUTE_UNUSED) {} +#endif static virCapsPtr testBuildCapabilities(virConnectPtr conn) { diff --git a/tests/nodeinfotest.c b/tests/nodeinfotest.c --- a/tests/nodeinfotest.c +++ b/tests/nodeinfotest.c @@ -13,7 +13,7 @@ #ifndef __linux__ static int -mymain(int argc, char **argv) +mymain(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) { exit (77); /* means 'test skipped' for automake */ } -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :| -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list