]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - arch/um/os-Linux/tty.c
Merge branch 'topic/rawmidi-fix' into for-linus
[karo-tx-linux.git] / arch / um / os-Linux / tty.c
index 4cfdd18ea1efdd383e44405a4ddcf98642f0c43d..b09ff66a77eeaf7578d84df8839e2a2961813cd3 100644 (file)
@@ -1,13 +1,16 @@
-/* 
- * Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
+/*
+ * Copyright (C) 2002 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
  * Licensed under the GPL
  */
 
 #include <stdlib.h>
+#include <unistd.h>
 #include <errno.h>
+#include <fcntl.h>
+#include "kern_constants.h"
+#include "kern_util.h"
 #include "os.h"
 #include "user.h"
-#include "kern_util.h"
 
 struct grantpt_info {
        int fd;
@@ -26,36 +29,34 @@ static void grantpt_cb(void *arg)
 int get_pty(void)
 {
        struct grantpt_info info;
-       int fd;
-
-       fd = os_open_file("/dev/ptmx", of_rdwr(OPENFLAGS()), 0);
-       if(fd < 0){
-               printk("get_pty : Couldn't open /dev/ptmx - err = %d\n", -fd);
-               return(fd);
+       int fd, err;
+
+       fd = open("/dev/ptmx", O_RDWR);
+       if (fd < 0) {
+               err = -errno;
+               printk(UM_KERN_ERR "get_pty : Couldn't open /dev/ptmx - "
+                      "err = %d\n", errno);
+               return err;
        }
 
        info.fd = fd;
        initial_thread_cb(grantpt_cb, &info);
 
-       if(info.res < 0){
-               printk("get_pty : Couldn't grant pty - errno = %d\n", 
-                      -info.err);
-               return(-1);
+       if (info.res < 0) {
+               err = -info.err;
+               printk(UM_KERN_ERR "get_pty : Couldn't grant pty - "
+                      "errno = %d\n", -info.err);
+               goto out;
        }
-       if(unlockpt(fd) < 0){
-               printk("get_pty : Couldn't unlock pty - errno = %d\n", errno);
-               return(-1);
+
+       if (unlockpt(fd) < 0) {
+               err = -errno;
+               printk(UM_KERN_ERR "get_pty : Couldn't unlock pty - "
+                      "errno = %d\n", errno);
+               goto out;
        }
-       return(fd);
+       return fd;
+out:
+       close(fd);
+       return err;
 }
-
-/*
- * Overrides for Emacs so that we follow Linus's tabbing style.
- * Emacs will notice this stuff at the end of the file and automatically
- * adjust the settings for this buffer only.  This must remain at the end
- * of the file.
- * ---------------------------------------------------------------------------
- * Local variables:
- * c-file-style: "linux"
- * End:
- */