提交 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 ...@@ -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]) AC_CHECK_FUNCS([strerror_r strtok_r getmntent_r getgrnam_r getpwuid_r])
dnl Availability of various common headers (non-fatal if missing). 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 Where are the XDR functions?
dnl If portablexdr is installed, prefer that. dnl If portablexdr is installed, prefer that.
......
...@@ -26,9 +26,13 @@ ...@@ -26,9 +26,13 @@
#include <config.h> #include <config.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h> #include <fcntl.h>
#include <dirent.h> #include <dirent.h>
#include <net/ethernet.h> #if HAVE_NET_ETHERNET_H
# include <net/ethernet.h>
#endif
#include "internal.h" #include "internal.h"
...@@ -41,6 +45,22 @@ ...@@ -41,6 +45,22 @@
#include "domain_conf.h" #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 #define VIR_FROM_THIS VIR_FROM_NWFILTER
......
...@@ -24,7 +24,9 @@ ...@@ -24,7 +24,9 @@
#include <config.h> #include <config.h>
#include <sys/types.h> #include <sys/types.h>
#if HAVE_SYS_WAIT_H
#include <sys/wait.h> #include <sys/wait.h>
#endif
#include <sys/stat.h> #include <sys/stat.h>
#include <unistd.h> #include <unistd.h>
#include <stdlib.h> #include <stdlib.h>
...@@ -188,6 +190,19 @@ virHookPresent(int driver) { ...@@ -188,6 +190,19 @@ virHookPresent(int driver) {
* Returns: 0 if the execution succeeded, 1 if the script was not found or * Returns: 0 if the execution succeeded, 1 if the script was not found or
* invalid parameters, and -1 if script returned an error * 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 int
virHookCall(int driver, const char *id, int op, int sub_op, const char *extra, virHookCall(int driver, const char *id, int op, int sub_op, const char *extra,
const char *input) { const char *input) {
...@@ -447,3 +462,4 @@ no_memory: ...@@ -447,3 +462,4 @@ no_memory:
#undef ADD_ENV_LIT #undef ADD_ENV_LIT
#undef ADD_ENV_SPACE #undef ADD_ENV_SPACE
} }
#endif
...@@ -69,7 +69,7 @@ void virThreadOnExit(void) ...@@ -69,7 +69,7 @@ void virThreadOnExit(void)
int virMutexInit(virMutexPtr m) int virMutexInit(virMutexPtr m)
{ {
virMutexInitRecursive(m); return virMutexInitRecursive(m);
} }
int virMutexInitRecursive(virMutexPtr m) int virMutexInitRecursive(virMutexPtr m)
......
...@@ -414,6 +414,7 @@ out: ...@@ -414,6 +414,7 @@ out:
*/ */
static int disconnected = 0; /* we may have been disconnected */ static int disconnected = 0; /* we may have been disconnected */
#ifdef SIGPIPE
/* /*
* vshCatchDisconnect: * vshCatchDisconnect:
* *
...@@ -442,6 +443,10 @@ vshSetupSignals(void) { ...@@ -442,6 +443,10 @@ vshSetupSignals(void) {
sigaction(SIGPIPE, &sig_action, NULL); sigaction(SIGPIPE, &sig_action, NULL);
} }
#else
static void
vshSetupSignals(void) {}
#endif
/* /*
* vshReconnect: * vshReconnect:
...@@ -8425,7 +8430,7 @@ cmdSnapshotList(vshControl *ctl, const vshCmd *cmd) ...@@ -8425,7 +8430,7 @@ cmdSnapshotList(vshControl *ctl, const vshCmd *cmd)
&creation) < 0) &creation) < 0)
continue; continue;
localtime_r(&creation, &time_info); 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); 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.
先完成此消息的编辑!
想要评论请 注册