--Boundary-=_nWlrBbmQBhCDarzOwKkYHIDdqSCD Content-Type: text/plain Content-Transfer-Encoding: 8bit Hi, the attached patch fixes a problem with the current 1_1 kvt where it can't get a pty. As this routine was already a mess, I took a clean approach and implemented the glibc-2.1 part like recommended in the glibc info pages. Additionally I added wtmp handling to kvt. This made kvt work in the following environment: linux-2.2.10/PPC glibc-2.1.2pre1 XFree86-3.3.3.1 qt-1.44 KDE_1_1_BRANCH as of 19990722 (with kde sound/bigendian fixes, BugID 1581/1582) Franz. --- /home/fsirl/kde/kdebase/kvt/command.c Tue Jun 8 04:09:22 1999 +++ kdebase-1.1.2/kvt/command.c Sun Jul 18 08:29:36 1999 @@ -24,6 +24,9 @@ * aggreed to distribute their code under the terms of the GPL */ +/* define _GNU_SOURCE to get prototypes for getpt() and ptsname() */ +#define _GNU_SOURCE + #include #include #include @@ -167,12 +170,16 @@ static int x_fd; /* file descriptor of t static int fd_width; /* width of file descriptors being used */ static int app_cur_keys = 0;/* flag to set cursor keys in application mode */ static int app_kp_keys = 0; /* flag to set application keypad keys */ +#if __GLIBC__ - 0 == 2 && __GLIBC_MINOR__ >= 1 +char *ttynam; +#else #ifndef SVR4 static char ptynam[25] = "/dev/ptyxx"; char ttynam[25] = "/dev/ttyxx"; #else char *ttynam, *ptsname(); #endif +#endif static Atom wm_del_win; extern WindowInfo MyWinInfo; @@ -348,6 +355,29 @@ static void catch_sig(int sig) /* First find a master pty that we can open. */ +#if __GLIBC__ - 0 == 2 && __GLIBC_MINOR__ >= 1 + ptyfd = getpt(); + if (ptyfd < 0) + { + error("Can't open a pseudo teletype"); + return(-1); + } + if (grantpt(ptyfd) < 0 || unlockpt(ptyfd) < 0) + { + close(ptyfd); + error("Can't grantpt/unlockpt a pseudo teletype"); + return(-1); + } + ttynam = ptsname(ptyfd); + if (ttynam == 0) + { + close(ptyfd); + error("Pseudo teletype has no name"); + return(-1); + } + fcntl(ptyfd,F_SETFL,O_NDELAY); + grantpty = 0; +#else #ifdef TIOCGPTN strcpy(ptynam,"/dev/ptmx"); strcpy(ttynam,"/dev/pts/"); @@ -418,6 +448,7 @@ if (ptyfd < 0) fcntl(ptyfd,F_SETFL,O_NDELAY); #endif } +#endif /* GLIBC */ for (i = 1; i <= 15; i++) signal(i,catch_sig); --- /home/fsirl/kde/kdebase/kvt/utmp.c Tue Jun 8 04:09:22 1999 +++ kdebase-1.1.2/kvt/utmp.c Sun Jul 18 08:24:23 1999 @@ -309,6 +309,7 @@ int write_utmp(struct utmp * u) setutent(); pututline(u); endutent(); + updwtmp(WTMP_FILE, u); pos = (int)NULL; madeutent = 1; @@ -404,6 +405,7 @@ void cleanutent() #endif pututline(u); /* Was reversed with in the original */ endutent(); + updwtmp(WTMP_FILE, u); } } --Boundary-=_nWlrBbmQBhCDarzOwKkYHIDdqSCD Content-Type: text/x-c; name="kdebase-1.1.2-glibc21.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="kdebase-1.1.2-glibc21.patch" LS0tIC9ob21lL2ZzaXJsL2tkZS9rZGViYXNlL2t2dC9jb21tYW5kLmMJVHVlIEp1biAgOCAwNDow OToyMiAxOTk5CisrKyBrZGViYXNlLTEuMS4yL2t2dC9jb21tYW5kLmMJU3VuIEp1bCAxOCAwODoy OTozNiAxOTk5CkBAIC0yNCw2ICsyNCw5IEBACiAgKiBhZ2dyZWVkIHRvIGRpc3RyaWJ1dGUgdGhl aXIgY29kZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdQTAogICovCiAKKy8qIGRlZmluZSBfR05V X1NPVVJDRSB0byBnZXQgcHJvdG90eXBlcyBmb3IgZ2V0cHQoKSBhbmQgcHRzbmFtZSgpICovCisj ZGVmaW5lIF9HTlVfU09VUkNFCisKICNpbmNsdWRlIDxzdGRhcmcuaD4KICNpbmNsdWRlIDxYMTEv WGxpYi5oPgogI2luY2x1ZGUgPFgxMS9YdXRpbC5oPgpAQCAtMTY3LDEyICsxNzAsMTYgQEAgc3Rh dGljIGludCB4X2ZkOwkvKiBmaWxlIGRlc2NyaXB0b3Igb2YgdAogc3RhdGljIGludCBmZF93aWR0 aDsJLyogd2lkdGggb2YgZmlsZSBkZXNjcmlwdG9ycyBiZWluZyB1c2VkICovCiBzdGF0aWMgaW50 IGFwcF9jdXJfa2V5cyA9IDA7LyogZmxhZyB0byBzZXQgY3Vyc29yIGtleXMgaW4gYXBwbGljYXRp b24gbW9kZSAqLwogc3RhdGljIGludCBhcHBfa3Bfa2V5cyA9IDA7IC8qIGZsYWcgdG8gc2V0IGFw cGxpY2F0aW9uIGtleXBhZCBrZXlzICovCisjaWYgX19HTElCQ19fIC0gMCA9PSAyICYmIF9fR0xJ QkNfTUlOT1JfXyA+PSAxCitjaGFyICp0dHluYW07CisjZWxzZQogI2lmbmRlZiBTVlI0CiBzdGF0 aWMgY2hhciBwdHluYW1bMjVdID0gIi9kZXYvcHR5eHgiOwogY2hhciB0dHluYW1bMjVdID0gIi9k ZXYvdHR5eHgiOwogI2Vsc2UKIGNoYXIgKnR0eW5hbSwgKnB0c25hbWUoKTsKICNlbmRpZgorI2Vu ZGlmCiBzdGF0aWMgQXRvbSB3bV9kZWxfd2luOwogZXh0ZXJuIFdpbmRvd0luZm8gTXlXaW5JbmZv OwogCkBAIC0zNDgsNiArMzU1LDI5IEBAIHN0YXRpYyB2b2lkIGNhdGNoX3NpZyhpbnQgc2lnKQog ICAvKiAgRmlyc3QgZmluZCBhIG1hc3RlciBwdHkgdGhhdCB3ZSBjYW4gb3Blbi4gIAogICAgKi8K IAorI2lmIF9fR0xJQkNfXyAtIDAgPT0gMiAmJiBfX0dMSUJDX01JTk9SX18gPj0gMQorICBwdHlm ZCA9IGdldHB0KCk7CisgIGlmIChwdHlmZCA8IDApCisgICAgeworICAgICAgZXJyb3IoIkNhbid0 IG9wZW4gYSBwc2V1ZG8gdGVsZXR5cGUiKTsKKyAgICAgIHJldHVybigtMSk7CisgICAgfQorICBp ZiAoZ3JhbnRwdChwdHlmZCkgPCAwIHx8IHVubG9ja3B0KHB0eWZkKSA8IDApCisgICAgeworICAg ICAgY2xvc2UocHR5ZmQpOworICAgICAgZXJyb3IoIkNhbid0IGdyYW50cHQvdW5sb2NrcHQgYSBw c2V1ZG8gdGVsZXR5cGUiKTsKKyAgICAgIHJldHVybigtMSk7CisgICAgfQorICB0dHluYW0gPSBw dHNuYW1lKHB0eWZkKTsKKyAgaWYgKHR0eW5hbSA9PSAwKQorICAgIHsKKyAgICAgIGNsb3NlKHB0 eWZkKTsKKyAgICAgIGVycm9yKCJQc2V1ZG8gdGVsZXR5cGUgaGFzIG5vIG5hbWUiKTsKKyAgICAg IHJldHVybigtMSk7CisgICAgfQorICBmY250bChwdHlmZCxGX1NFVEZMLE9fTkRFTEFZKTsKKyAg Z3JhbnRwdHkgPSAwOworI2Vsc2UKICNpZmRlZiBUSU9DR1BUTgogICBzdHJjcHkocHR5bmFtLCIv ZGV2L3B0bXgiKTsKICAgc3RyY3B5KHR0eW5hbSwiL2Rldi9wdHMvIik7CkBAIC00MTgsNiArNDQ4 LDcgQEAgaWYgKHB0eWZkIDwgMCkKICAgICBmY250bChwdHlmZCxGX1NFVEZMLE9fTkRFTEFZKTsK ICNlbmRpZiAgCiAgIH0KKyNlbmRpZiAvKiBHTElCQyAqLwogCiAgIGZvciAoaSA9IDE7IGkgPD0g MTU7IGkrKykKICAgICBzaWduYWwoaSxjYXRjaF9zaWcpOwotLS0gL2hvbWUvZnNpcmwva2RlL2tk ZWJhc2Uva3Z0L3V0bXAuYwlUdWUgSnVuICA4IDA0OjA5OjIyIDE5OTkKKysrIGtkZWJhc2UtMS4x LjIva3Z0L3V0bXAuYwlTdW4gSnVsIDE4IDA4OjI0OjIzIDE5OTkKQEAgLTMwOSw2ICszMDksNyBA QCBpbnQgd3JpdGVfdXRtcChzdHJ1Y3QgdXRtcCAqIHUpIAogICBzZXR1dGVudCgpOwogICBwdXR1 dGxpbmUodSk7CiAgIGVuZHV0ZW50KCk7CisgIHVwZHd0bXAoV1RNUF9GSUxFLCB1KTsKICAgcG9z ID0gKGludClOVUxMOwogICBtYWRldXRlbnQgPSAxOwogCkBAIC00MDQsNiArNDA1LDcgQEAgdm9p ZCBjbGVhbnV0ZW50KCkgCiAjZW5kaWYKIAkgIHB1dHV0bGluZSh1KTsgLyogV2FzIHJldmVyc2Vk IHdpdGggaW4gdGhlIG9yaWdpbmFsICovCiAJICBlbmR1dGVudCgpOworCSAgdXBkd3RtcChXVE1Q X0ZJTEUsIHUpOwogCX0KICAgICB9CiAK --Boundary-=_nWlrBbmQBhCDarzOwKkYHIDdqSCD--