From 37bad54aca756e020c0bea0a1fbdcf6a051027f0 Mon Sep 17 00:00:00 2001 From: Sapan Bhatia Date: Tue, 31 Mar 2009 16:09:42 +0000 Subject: [PATCH] Fixed some bugs and tested this to work. --- fuse/Makefile | 2 +- fuse/reroutemount.c | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/fuse/Makefile b/fuse/Makefile index 1da8868..c92d59a 100644 --- a/fuse/Makefile +++ b/fuse/Makefile @@ -1,4 +1,4 @@ all: fuse_vsys_wrapper.so fuse_vsys_wrapper.so: ../lib/fdpass.c reroutemount.c - gcc -shared -I../lib ../lib/fdpass.c reroutemount.c -o fuse_vsys_wrapper.so + gcc -g -shared -I../lib ../lib/fdpass.c reroutemount.c -o fuse_vsys_wrapper.so diff --git a/fuse/reroutemount.c b/fuse/reroutemount.c index 575554b..d727da8 100644 --- a/fuse/reroutemount.c +++ b/fuse/reroutemount.c @@ -6,7 +6,8 @@ #include #include "fdpass.h" -char *socket_name = "/vsys/fd_fusemount.control"; +//char *socket_name = "/vsys/fd_fusemount.control"; +char *socket_name = "/foo"; unsigned int arg_length = 128; void send_argument(int control_channel_fd, const char *source) { @@ -24,6 +25,7 @@ int connect_socket() { addr.sun_family = AF_UNIX; strcpy( addr.sun_path, socket_name ); int len = strlen(socket_name) + sizeof(addr.sun_family); + printf("Connecting to %s\n", socket_name); assert( connect( fd, (struct sockaddr *) &addr, len ) == 0 ); return fd; } @@ -53,6 +55,7 @@ int mount(const char *source, const char *target, const char *filesystemtype, unsigned long mountflags, const void *data) { int fd = connect_socket(); int old_fuse_fd, new_fuse_fd; + int dupfd; char buf[1024]; @@ -77,8 +80,8 @@ int mount(const char *source, const char *target, const char *filesystemtype, exit(1); } - if( dup2(new_fuse_fd, old_fuse_fd ) != new_fuse_fd ) { - printf ("Could not duplicate returned file descriptor\n"); + if( (dupfd=dup2(new_fuse_fd, old_fuse_fd )) != old_fuse_fd ) { + printf ("Could not duplicate returned file descriptor: %d\n",dupfd); exit(1); } -- 2.43.0