vserver 1.9.3
[linux-2.6.git] / arch / um / drivers / net_user.c
index 75a83e9..2e4e1d4 100644 (file)
@@ -26,8 +26,7 @@ int tap_open_common(void *dev, char *gate_addr)
        if(gate_addr == NULL) return(0);
        if(sscanf(gate_addr, "%d.%d.%d.%d", &tap_addr[0], 
                  &tap_addr[1], &tap_addr[2], &tap_addr[3]) != 4){
-               printk("Invalid tap IP address - '%s'\n", 
-                      gate_addr);
+               printk("Invalid tap IP address - '%s'\n", gate_addr);
                return(-EINVAL);
        }
        return(0);
@@ -60,18 +59,18 @@ void read_output(int fd, char *output, int len)
        }
                
        *output = '\0';
-       if(read(fd, &remain, sizeof(remain)) != sizeof(remain)){
-               printk("read_output - read of length failed, errno = %d\n",
-                      errno);
+       n = os_read_file(fd, &remain, sizeof(remain));
+       if(n != sizeof(remain)){
+               printk("read_output - read of length failed, err = %d\n", -n);
                return;
        }
 
        while(remain != 0){
                n = (remain < len) ? remain : len;
-               actual = read(fd, output, n);
+               actual = os_read_file(fd, output, n);
                if(actual != n){
                        printk("read_output - read of data failed, "
-                              "errno = %d\n", errno);
+                              "err = %d\n", -actual);
                        return;
                }
                remain -= actual;
@@ -83,13 +82,12 @@ int net_read(int fd, void *buf, int len)
 {
        int n;
 
-       while(((n = read(fd,  buf,  len)) < 0) && (errno == EINTR)) ;
+       n = os_read_file(fd,  buf,  len);
 
-       if(n < 0){
-               if(errno == EAGAIN) return(0);
-               return(-errno);
-       }
-       else if(n == 0) return(-ENOTCONN);
+       if(n == -EAGAIN)
+               return(0);
+       else if(n == 0)
+               return(-ENOTCONN);
        return(n);
 }
 
@@ -112,13 +110,13 @@ int net_write(int fd, void *buf, int len)
 {
        int n;
 
-       while(((n = write(fd, buf, len)) < 0) && (errno == EINTR)) ;
-       if(n < 0){
-               if(errno == EAGAIN) return(0);
-               return(-errno);
-       }
-       else if(n == 0) return(-ENOTCONN);
-       return(n);      
+       n = os_write_file(fd, buf, len);
+
+       if(n == -EAGAIN)
+               return(0);
+       else if(n == 0)
+               return(-ENOTCONN);
+       return(n);
 }
 
 int net_send(int fd, void *buf, int len)
@@ -157,7 +155,7 @@ static void change_pre_exec(void *arg)
 {
        struct change_pre_exec_data *data = arg;
 
-       close(data->close_me);
+       os_close_file(data->close_me);
        dup2(data->stdout, 1);
 }
 
@@ -167,17 +165,18 @@ static int change_tramp(char **argv, char *output, int output_len)
        struct change_pre_exec_data pe_data;
 
        err = os_pipe(fds, 1, 0);
-       if(err){
-               printk("change_tramp - pipe failed, errno = %d\n", -err);
+       if(err < 0){
+               printk("change_tramp - pipe failed, err = %d\n", -err);
                return(err);
        }
        pe_data.close_me = fds[0];
        pe_data.stdout = fds[1];
        pid = run_helper(change_pre_exec, &pe_data, argv, NULL);
 
-       close(fds[1]);
+       os_close_file(fds[1]);
        read_output(fds[0], output, output_len);
-       waitpid(pid, NULL, 0);  
+
+       CATCH_EINTR(err = waitpid(pid, NULL, 0));
        return(pid);
 }