diff options
author | Marc-André Lureau <marcandre.lureau@redhat.com> | 2011-06-16 12:39:38 +0200 |
---|---|---|
committer | Hans de Goede <hdegoede@redhat.com> | 2011-07-15 10:42:12 +0200 |
commit | b5f8b3c39df91767391832d0b6f0b12a880c2b0d (patch) | |
tree | b74c4cba2a01d7d96180b7c5649df35232f7169e | |
parent | a65884e6b6894c56492771b0a1bbb8458941a991 (diff) |
vdagent: check for portdev existence and leave if not
-rw-r--r-- | src/vdagent.c | 28 |
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(); |