Mercurial > hg > octave-nkf
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; }