提交 3d3af088 编写于 作者: D Daniel P. Berrange

Fix Win32 portability problems

The network filter / snapshot / hooks code introduced some
non-portable pices that broke the win32 build

* configure.ac: Check for net/ethernet.h required by nwfile config
   parsing code
* src/conf/nwfilter_conf.c: Define ethernet protocol  constants
  if net/ethernet.h is missing
* src/util/hooks.c: Disable hooks build on Win32 since it lacks
  fork/exec/pipe
* src/util/threads-win32.c: Fix unchecked return value
* tools/virsh.c: Disable SIGPIPE on Win32 since it doesn't exist.
  Fix non-portable strftime() formats
上级 9fd54a78
......@@ -112,7 +112,7 @@ dnl Availability of various not common threadsafe functions
AC_CHECK_FUNCS([strerror_r strtok_r getmntent_r getgrnam_r getpwuid_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 mntent.h])
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 mntent.h net/ethernet.h])
dnl Where are the XDR functions?
dnl If portablexdr is installed, prefer that.
......
......@@ -26,9 +26,13 @@
#include <config.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <dirent.h>
#include <net/ethernet.h>
#if HAVE_NET_ETHERNET_H
# include <net/ethernet.h>
#endif
#include "internal.h"
......@@ -41,6 +45,22 @@
#include "domain_conf.h"
/* XXX
* The config parser/structs should not be using platform specific
* constants. Win32 lacks these constants, breaking the parser,
* so temporarily define them until this can be re-written to use
* locally defined enums for all constants
*/
#ifndef ETHERTYPE_IP
#define ETHERTYPE_IP 0x0800
#endif
#ifndef ETHERTYPE_ARP
#define ETHERTYPE_ARP 0x0806
#endif
#ifndef ETHERTYPE_IPV6
#define ETHERTYPE_IPV6 0x86dd
#endif
#define VIR_FROM_THIS VIR_FROM_NWFILTER
......
......@@ -24,7 +24,9 @@
#include <config.h>
#include <sys/types.h>
#if HAVE_SYS_WAIT_H
#include <sys/wait.h>
#endif
#include <sys/stat.h>
#include <unistd.h>
#include <stdlib.h>
......@@ -188,6 +190,19 @@ virHookPresent(int driver) {
* Returns: 0 if the execution succeeded, 1 if the script was not found or
* invalid parameters, and -1 if script returned an error
*/
#ifdef WIN32
int
virHookCall(int driver ATTRIBUTE_UNUSED,
const char *id ATTRIBUTE_UNUSED,
int op ATTRIBUTE_UNUSED,
int sub_op ATTRIBUTE_UNUSED,
const char *extra ATTRIBUTE_UNUSED,
const char *input ATTRIBUTE_UNUSED) {
virReportSystemError(ENOSYS, "%s",
_("spawning hooks not supported on this platform"));
return -1;
}
#else
int
virHookCall(int driver, const char *id, int op, int sub_op, const char *extra,
const char *input) {
......@@ -447,3 +462,4 @@ no_memory:
#undef ADD_ENV_LIT
#undef ADD_ENV_SPACE
}
#endif
......@@ -69,7 +69,7 @@ void virThreadOnExit(void)
int virMutexInit(virMutexPtr m)
{
virMutexInitRecursive(m);
return virMutexInitRecursive(m);
}
int virMutexInitRecursive(virMutexPtr m)
......
......@@ -414,6 +414,7 @@ out:
*/
static int disconnected = 0; /* we may have been disconnected */
#ifdef SIGPIPE
/*
* vshCatchDisconnect:
*
......@@ -442,6 +443,10 @@ vshSetupSignals(void) {
sigaction(SIGPIPE, &sig_action, NULL);
}
#else
static void
vshSetupSignals(void) {}
#endif
/*
* vshReconnect:
......@@ -8425,7 +8430,7 @@ cmdSnapshotList(vshControl *ctl, const vshCmd *cmd)
&creation) < 0)
continue;
localtime_r(&creation, &time_info);
strftime(timestr, sizeof(timestr), "%F %T %z", &time_info);
strftime(timestr, sizeof(timestr), "%Y-%m-%d %H:%M:%S %z", &time_info);
vshPrint(ctl, " %-20s %-25s %s\n", names[i], timestr, state);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册