summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@redhat.com>2011-06-16 12:39:38 +0200
committerHans de Goede <hdegoede@redhat.com>2011-07-15 10:42:12 +0200
commitb5f8b3c39df91767391832d0b6f0b12a880c2b0d (patch)
treeb74c4cba2a01d7d96180b7c5649df35232f7169e
parenta65884e6b6894c56492771b0a1bbb8458941a991 (diff)
vdagent: check for portdev existence and leave if not
-rw-r--r--src/vdagent.c28
1 files changed, 24 insertions, 4 deletions
diff --git a/src/vdagent.c b/src/vdagent.c
index db18617..c40cf5f 100644
--- a/src/vdagent.c
+++ b/src/vdagent.c
@@ -39,6 +39,7 @@
#include "vdagentd-proto-strings.h"
#include "vdagent-x11.h"
+static const char *portdev = "/dev/virtio-ports/com.redhat.spice.0";
static int verbose = 0;
static struct vdagent_x11 *x11 = NULL;
static struct udscs_connection *client = NULL;
@@ -107,9 +108,11 @@ static void usage(FILE *fp)
fprintf(fp,
"vdagent -- spice agent xorg client\n"
"options:\n"
- " -h print this text\n"
- " -d log debug messages\n"
- " -x don't daemonize (and log to logfile)\n");
+ " -h print this text\n"
+ " -d log debug messages\n"
+ " -s <port> set virtio serial port [%s]\n"
+ " -x don't daemonize (and log to logfile)\n",
+ portdev);
}
static void quit_handler(int sig)
@@ -138,6 +141,13 @@ void daemonize(void)
}
}
+static int file_test(const char *path)
+{
+ struct stat buffer;
+
+ return stat(path, &buffer);
+}
+
int main(int argc, char *argv[])
{
fd_set readfds, writefds;
@@ -147,12 +157,15 @@ int main(int argc, char *argv[])
struct sigaction act;
for (;;) {
- if (-1 == (c = getopt(argc, argv, "-dxh")))
+ if (-1 == (c = getopt(argc, argv, "-dxhs:")))
break;
switch (c) {
case 'd':
verbose++;
break;
+ case 's':
+ portdev = optarg;
+ break;
case 'x':
do_daemonize = 0;
break;
@@ -191,6 +204,13 @@ int main(int argc, char *argv[])
fprintf(stderr, "Could not get home directory, logging to stderr\n");
}
+ if (file_test(portdev) != 0) {
+ fprintf(logfile, "Missing virtio device: %s\n",
+ portdev, strerror(errno));
+ retval = 1;
+ goto finish;
+ }
+
if (do_daemonize)
daemonize();