citrun

watch C/C++ source code execute
Log | Files | Refs | LICENSE

commit 07590dfc647bc7e461db85563795873e903799c8
parent 678baa7b5fc8333f826aacd3a85856b9e4d3ad9d
Author: Kyle Milz <kyle@getaddrinfo.net>
Date:   Wed, 23 Mar 2016 18:33:35 -0600

lib: add env var override to viewer socket

Diffstat:
MSCV/Project.pm | 2++
MSCV/Viewer.pm | 4++--
Mlib/runtime.c | 17+++++++++++------
3 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/SCV/Project.pm b/SCV/Project.pm @@ -68,6 +68,8 @@ sub instrumented_src { sub run { my ($self, @args) = @_; + $ENV{SCV_VIEWER_SOCKET} = "SCV::Viewer.socket"; + my $tmp_dir = $self->{tmp_dir}; $self->{pid} = open3(undef, undef, \*CHLD_ERR, "wrap/scv_wrap", "$tmp_dir/program", @args); } diff --git a/SCV/Viewer.pm b/SCV/Viewer.pm @@ -11,7 +11,7 @@ sub new { my $viewer_socket = IO::Socket::UNIX->new( Type => SOCK_STREAM(), - Local => "viewer_test.socket", + Local => "SCV::Viewer.socket", Listen => 1, ); die "socket error: $!\n" unless ($viewer_socket); @@ -104,7 +104,7 @@ sub DESTROY { my ($self) = @_; close($self->{viewer_socket}); - unlink "viewer_test.socket"; + unlink "SCV::Viewer.socket"; } 1; diff --git a/lib/runtime.c b/lib/runtime.c @@ -2,7 +2,7 @@ #include <err.h> #include <limits.h> // PATH_MAX #include <pthread.h> -#include <stdio.h> +#include <stdlib.h> // getenv #include <string.h> #include <sys/socket.h> #include <sys/un.h> @@ -37,17 +37,22 @@ void * control_thread(void *arg) { int fd; - int i; uint8_t response; + struct sockaddr_un addr; + char *viewer_sock = NULL; - fd = socket(AF_UNIX, SOCK_STREAM, 0); - if (fd == -1) + if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) err(1, "socket"); - struct sockaddr_un addr; + /* The default socket location can be overridden */ + if ((viewer_sock = getenv("SCV_VIEWER_SOCKET")) == NULL) + /* There was an error getting the env var, use the default */ + viewer_sock = "/tmp/scv_viewer.socket"; + + /* Connect the socket to the server which should already be running */ memset(&addr, 0, sizeof(addr)); addr.sun_family = AF_UNIX; - strncpy(addr.sun_path, "viewer_test.socket", sizeof(addr.sun_path) - 1); + strncpy(addr.sun_path, viewer_sock, sizeof(addr.sun_path) - 1); if (connect(fd, (struct sockaddr *)&addr, sizeof(addr))) { err(1, "connect");