diff libqterminal/unix/kpty.cpp @ 15668:f2b81e8a4ab5

Added patched for Cygwin build from Marco Atzeri.
author Jacob Dawid <jacob.dawid@googlemail.com>
date Sun, 27 May 2012 23:38:57 +0200
parents dd311b9ff1ac
children d79d1a3130c8
line wrap: on
line diff
--- a/libqterminal/unix/kpty.cpp
+++ b/libqterminal/unix/kpty.cpp
@@ -161,12 +161,14 @@
 {
 }
 
+#ifndef HAVE_OPENPTY
 bool KPtyPrivate::chownpty(bool)
 {
 //    return !QProcess::execute(KStandardDirs::findExe("kgrantpty"),
 //        QStringList() << (grant?"--grant":"--revoke") << QString::number(masterFd));
     return true;
 }
+#endif
 
 /////////////////////////////
 // public member functions //
@@ -220,7 +222,7 @@
   {
     d->masterFd = -1;
     d->slaveFd = -1;
-    qWarning(175) << "Can't open a pseudo teletype";
+    qWarning() << "Can't open a pseudo teletype";
     return false;
   }
   d->ttyName = ptsn;
@@ -303,14 +305,14 @@
               p = getgrnam("wheel");
             gid_t gid = p ? p->gr_gid : getgid ();
 
-            if (!chown(d->ttyName.data(), getuid(), gid)) {
+	    if (!chown(d->ttyName.data(), getuid(), gid)) {
 	      chmod(d->ttyName.data(), S_IRUSR|S_IWUSR|S_IWGRP);
 	    }
-          }
-          goto gotpty;
-        }
-        ::close(d->masterFd);
-        d->masterFd = -1;
+	  }
+	  goto gotpty;
+	}
+	::close(d->masterFd);
+	d->masterFd = -1;
       }
     }
   }
@@ -391,20 +393,24 @@
    if (d->masterFd < 0)
       return;
    closeSlave();
+   if (d->ownMaster) {
+#ifndef HAVE_OPENPTY
    // don't bother resetting unix98 pty, it will go away after closing master anyway.
    if (memcmp(d->ttyName.data(), "/dev/pts/", 9)) {
       if (!geteuid()) {
          struct stat st;
          if (!stat(d->ttyName.data(), &st)) {
             if (!chown(d->ttyName.data(), 0, st.st_gid == getgid() ? 0 : -1)) {
-	      chmod(d->ttyName.data(), S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH);
-	    }
+              chmod(d->ttyName.data(), S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH);
+            }
          }
       } else {
          fcntl(d->masterFd, F_SETFD, 0);
          d->chownpty(false);
       }
    }
+   #endif
+   }
    ::close(d->masterFd);
    d->masterFd = -1;
 }