Added a log file.
authorSapan Bhatia <sapanb@cs.princeton.edu>
Tue, 31 Mar 2009 18:26:43 +0000 (18:26 +0000)
committerSapan Bhatia <sapanb@cs.princeton.edu>
Tue, 31 Mar 2009 18:26:43 +0000 (18:26 +0000)
fd_fusemount.c

index 87af24a..dad21e2 100644 (file)
@@ -11,11 +11,14 @@ unsigned int rcvbuf = 16*1024*1024;
 unsigned int arg_length = 128;
 unsigned int mountflags = MS_NODEV | MS_NOSUID;
 
+FILE *logfd;
+
 void receive_argument(int control_channel_fd, char *source) {
     int received;
     received=recv(control_channel_fd, source, arg_length, 0);
     if (received<arg_length) {
-        printf("Error receiving arguments over the control buffer\n");
+        fprintf(logfd,"Error receiving arguments over the control buffer\n");
+        close(logfd);
         exit(1);
     }
 }
@@ -54,7 +57,8 @@ int set_magic_fd (char *data, int new_fd) {
 void check_source(char *source) {
     source[arg_length-1]='\0';
     if (strchr(source,'/') || strstr(source,"..")) {
-        printf("Tried mounting with source = %s\n", source);
+        fprintf(logfd, "Tried mounting with source = %s\n", source);
+        close(logfd);
         exit(1);
     }
 }
@@ -62,20 +66,23 @@ void check_source(char *source) {
 void check_target(char *target) {
     target[arg_length-1]='\0';
     if (strstr(target,"..")) {
-        printf("Tried mounting with target = %s\n", target);
+        fprintf(logfd,"Tried mounting with target = %s\n", target);
+        close(logfd);
         exit(1);
     }
 }
 
 void check_fstype(char *filesystemtype) {
     if (strncmp(filesystemtype,"fuse",4)) {
-        printf("Tried mounting filesystem type %s\n", filesystemtype);
+        fprintf(logfd,"Tried mounting filesystem type %s\n", filesystemtype);
+        close(logfd);
+        exit(1);
     }
 }
 
 int main(int argc, char *argv[]) {
     int control_channel_fd, magic_fd, mount_fd;
-    char source[128],target[128],filesystemtype[128],data[128],slice_target[256];
+    char source[128],target[128],filesystemtype[128],data[128],slice_target[1024];
 
     int received;
 
@@ -85,6 +92,9 @@ int main(int argc, char *argv[]) {
     }
 
     char *slice_name = argv[1];
+
+    logfd=fopen("/tmp/fuselog","w");
+    if (!logfd) {logfd = stderr;}
     
     sscanf(argv[2],"%d", &control_channel_fd);
 
@@ -114,6 +124,8 @@ int main(int argc, char *argv[]) {
 
     sprintf(slice_target,"/vservers/%s/%s", slice_name, target);
 
+    fprintf(logfd, "Mount fd: %d Source: %s slice_target: %s fstype: %s mountflags: %d data: %s\n", mount_fd, source, slice_target, filesystemtype, mountflags, data);
+
     if (!mount(source, slice_target, filesystemtype, mountflags, data)) {
         send_fd(control_channel_fd, mount_fd);
     }
@@ -122,5 +134,6 @@ int main(int argc, char *argv[]) {
         exit(1);
     }
 
+    close(logfd);
     return 0;
 }