X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;ds=sidebyside;f=daemon%2Fguestfsd.c;h=eef7c6decb425ed585715fb729f3e9730a0e8ee1;hb=fcae398873453d0542123e040b388c3be10b14f8;hp=f31f1f219fae342c7036b253a431fa016523caf2;hpb=55355491c5ad2535b99a31ec81241f7f9f92177e;p=libguestfs.git diff --git a/daemon/guestfsd.c b/daemon/guestfsd.c index f31f1f2..eef7c6d 100644 --- a/daemon/guestfsd.c +++ b/daemon/guestfsd.c @@ -20,6 +20,10 @@ #define _BSD_SOURCE /* for daemon(3) */ +#ifdef HAVE_WINDOWS_H +#include +#endif + #include #include #include @@ -56,6 +60,10 @@ static char *read_cmdline (void); #define AI_ADDRCONFIG 0 #endif +#ifndef MAX +#define MAX(a,b) ((a)>(b)?(a):(b)) +#endif + int verbose = 0; static int print_shell_quote (FILE *stream, const struct printf_info *info, const void *const *args); @@ -70,6 +78,17 @@ static int print_arginfo (const struct printf_info *info, size_t n, int *argtype #endif #endif +#ifdef WIN32 +static int +daemon (int nochdir, int noclose) +{ + fprintf (stderr, + "On Windows the daemon does not support forking into the " + "background.\nYou *must* run the daemon with the -f option.\n"); + exit (EXIT_FAILURE); +} +#endif /* WIN32 */ + /* Location to mount root device. */ const char *sysroot = "/sysroot"; /* No trailing slash. */ int sysroot_len = 8; @@ -167,6 +186,9 @@ main (int argc, char *argv[]) perror ("sigaction SIGPIPE"); /* but try to continue anyway ... */ #endif +#ifdef WIN32 +#define setenv(n,v,f) _putenv(n "=" v) +#endif /* Set up a basic environment. After we are called by /init the * environment is essentially empty. * https://bugzilla.redhat.com/show_bug.cgi?id=502074#c5 @@ -175,8 +197,16 @@ main (int argc, char *argv[]) setenv ("SHELL", "/bin/sh", 1); setenv ("LC_ALL", "C", 1); +#ifndef WIN32 /* We document that umask defaults to 022 (it should be this anyway). */ umask (022); +#else + /* This is the default for Windows anyway. It's not even clear if + * Windows ever uses this -- the MSDN documentation for the function + * contains obvious errors. + */ + _umask (0); +#endif /* Get the vmchannel string. *