git.annexia.org
/
libguestfs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Update PO files.
[libguestfs.git]
/
daemon
/
guestfsd.c
diff --git
a/daemon/guestfsd.c
b/daemon/guestfsd.c
index
4b91660
..
9691053
100644
(file)
--- a/
daemon/guestfsd.c
+++ b/
daemon/guestfsd.c
@@
-20,6
+20,10
@@
#define _BSD_SOURCE /* for daemon(3) */
#define _BSD_SOURCE /* for daemon(3) */
+#ifdef HAVE_WINDOWS_H
+#include <windows.h>
+#endif
+
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@
-32,18
+36,9
@@
#include <sys/stat.h>
#include <fcntl.h>
#include <signal.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <signal.h>
-
-#ifdef HAVE_NETDB_H
#include <netdb.h>
#include <netdb.h>
-#endif
-
-#ifdef HAVE_SYS_SELECT_H
#include <sys/select.h>
#include <sys/select.h>
-#endif
-
-#ifdef HAVE_SYS_WAIT_H
#include <sys/wait.h>
#include <sys/wait.h>
-#endif
#ifdef HAVE_PRINTF_H
#include <printf.h>
#ifdef HAVE_PRINTF_H
#include <printf.h>
@@
-60,6
+55,15
@@
static char *read_cmdline (void);
#define GUESTFWD_ADDR "10.0.2.4"
#define GUESTFWD_PORT "6666"
#define GUESTFWD_ADDR "10.0.2.4"
#define GUESTFWD_PORT "6666"
+/* This is only a hint. If not defined, ignore it. */
+#ifndef AI_ADDRCONFIG
+#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);
int verbose = 0;
static int print_shell_quote (FILE *stream, const struct printf_info *info, const void *const *args);
@@
-133,17
+137,17
@@
main (int argc, char *argv[])
case '?':
usage ();
case '?':
usage ();
- exit (
0
);
+ exit (
EXIT_SUCCESS
);
default:
fprintf (stderr, "guestfsd: unexpected command line option 0x%x\n", c);
default:
fprintf (stderr, "guestfsd: unexpected command line option 0x%x\n", c);
- exit (
1
);
+ exit (
EXIT_FAILURE
);
}
}
if (optind < argc) {
usage ();
}
}
if (optind < argc) {
usage ();
- exit (
1
);
+ exit (
EXIT_FAILURE
);
}
cmdline = read_cmdline ();
}
cmdline = read_cmdline ();
@@
-161,6
+165,7
@@
main (int argc, char *argv[])
printf ("could not read linux command line\n");
}
printf ("could not read linux command line\n");
}
+#ifndef WIN32
/* Make sure SIGPIPE doesn't kill us. */
struct sigaction sa;
memset (&sa, 0, sizeof sa);
/* Make sure SIGPIPE doesn't kill us. */
struct sigaction sa;
memset (&sa, 0, sizeof sa);
@@
-168,7
+173,11
@@
main (int argc, char *argv[])
sa.sa_flags = 0;
if (sigaction (SIGPIPE, &sa, NULL) == -1)
perror ("sigaction SIGPIPE"); /* but try to continue anyway ... */
sa.sa_flags = 0;
if (sigaction (SIGPIPE, &sa, NULL) == -1)
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
/* 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
@@
-177,8
+186,16
@@
main (int argc, char *argv[])
setenv ("SHELL", "/bin/sh", 1);
setenv ("LC_ALL", "C", 1);
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);
/* 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.
*
/* Get the vmchannel string.
*
@@
-202,7
+219,7
@@
main (int argc, char *argv[])
vmchannel = strndup (p + 18, len);
if (!vmchannel) {
perror ("strndup");
vmchannel = strndup (p + 18, len);
if (!vmchannel) {
perror ("strndup");
- exit (
1
);
+ exit (
EXIT_FAILURE
);
}
}
}
}
@@
-216,7
+233,7
@@
main (int argc, char *argv[])
vmchannel = strndup (p + 4, len);
if (!vmchannel) {
perror ("strndup");
vmchannel = strndup (p + 4, len);
if (!vmchannel) {
perror ("strndup");
- exit (
1
);
+ exit (
EXIT_FAILURE
);
}
memcpy (vmchannel, "tcp:", 4);
}
}
memcpy (vmchannel, "tcp:", 4);
}
@@
-228,7
+245,7
@@
main (int argc, char *argv[])
vmchannel = strdup ("tcp:" GUESTFWD_ADDR ":" GUESTFWD_PORT);
if (!vmchannel) {
perror ("strdup");
vmchannel = strdup ("tcp:" GUESTFWD_ADDR ":" GUESTFWD_PORT);
if (!vmchannel) {
perror ("strdup");
- exit (
1
);
+ exit (
EXIT_FAILURE
);
}
}
}
}
@@
-253,7
+270,7
@@
main (int argc, char *argv[])
} else {
fprintf (stderr, "vmchannel: expecting \"tcp:<ip>:<port>\": %s\n",
vmchannel);
} else {
fprintf (stderr, "vmchannel: expecting \"tcp:<ip>:<port>\": %s\n",
vmchannel);
- exit (
1
);
+ exit (
EXIT_FAILURE
);
}
memset (&hints, 0, sizeof hints);
}
memset (&hints, 0, sizeof hints);
@@
-263,7
+280,7
@@
main (int argc, char *argv[])
if (r != 0) {
fprintf (stderr, "%s:%s: %s\n",
host, port, gai_strerror (r));
if (r != 0) {
fprintf (stderr, "%s:%s: %s\n",
host, port, gai_strerror (r));
- exit (
1
);
+ exit (
EXIT_FAILURE
);
}
/* Connect to the given TCP socket. */
}
/* Connect to the given TCP socket. */
@@
-284,7
+301,7
@@
main (int argc, char *argv[])
"unknown vmchannel connection type: %s\n"
"expecting \"tcp:<ip>:<port>\"\n",
vmchannel);
"unknown vmchannel connection type: %s\n"
"expecting \"tcp:<ip>:<port>\"\n",
vmchannel);
- exit (
1
);
+ exit (
EXIT_FAILURE
);
}
if (sock == -1) {
}
if (sock == -1) {
@@
-303,7
+320,7
@@
main (int argc, char *argv[])
"or on the libguestfs redhat com mailing list.\n"
"\n",
vmchannel);
"or on the libguestfs redhat com mailing list.\n"
"\n",
vmchannel);
- exit (
1
);
+ exit (
EXIT_FAILURE
);
}
/* Send the magic length message which indicates that
}
/* Send the magic length message which indicates that
@@
-313,25
+330,30
@@
main (int argc, char *argv[])
XDR xdr;
uint32_t len = GUESTFS_LAUNCH_FLAG;
xdrmem_create (&xdr, lenbuf, sizeof lenbuf, XDR_ENCODE);
XDR xdr;
uint32_t len = GUESTFS_LAUNCH_FLAG;
xdrmem_create (&xdr, lenbuf, sizeof lenbuf, XDR_ENCODE);
- xdr_u
int32_
t (&xdr, &len);
+ xdr_u
_in
t (&xdr, &len);
if (xwrite (sock, lenbuf, sizeof lenbuf) == -1)
if (xwrite (sock, lenbuf, sizeof lenbuf) == -1)
- exit (
1
);
+ exit (
EXIT_FAILURE
);
xdr_destroy (&xdr);
/* Fork into the background. */
if (!dont_fork) {
xdr_destroy (&xdr);
/* Fork into the background. */
if (!dont_fork) {
+#ifndef WIN32
if (daemon (0, 1) == -1) {
perror ("daemon");
if (daemon (0, 1) == -1) {
perror ("daemon");
- exit (
1
);
+ exit (
EXIT_FAILURE
);
}
}
+#else /* WIN32 */
+ 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 */
}
/* Enter the main loop, reading and performing actions. */
main_loop (sock);
}
/* Enter the main loop, reading and performing actions. */
main_loop (sock);
- exit (
0
);
+ exit (
EXIT_SUCCESS
);
}
/* Read /proc/cmdline. */
}
/* Read /proc/cmdline. */