فهرست منبع

don't write openpty results until success is determined

not only is this semantically more correct; it also reduces code size
slightly by eliminating the need for the compiler to assume the
possibility of aliasing.
Rich Felker 10 سال پیش
والد
کامیت
3b26a32df4
1فایلهای تغییر یافته به همراه12 افزوده شده و 10 حذف شده
  1. 12 10
      src/misc/openpty.c

+ 12 - 10
src/misc/openpty.c

@@ -6,28 +6,30 @@
 
 /* Nonstandard, but vastly superior to the standard functions */
 
-int openpty(int *m, int *s, char *name, const struct termios *tio, const struct winsize *ws)
+int openpty(int *pm, int *ps, char *name, const struct termios *tio, const struct winsize *ws)
 {
-	int n=0;
+	int m, s, n=0;
 	char buf[20];
 
-	*m = open("/dev/ptmx", O_RDWR|O_NOCTTY);
-	if (*m < 0) return -1;
+	m = open("/dev/ptmx", O_RDWR|O_NOCTTY);
+	if (m < 0) return -1;
 
-	if (ioctl(*m, TIOCSPTLCK, &n) || ioctl (*m, TIOCGPTN, &n)) {
-		close(*m);
+	if (ioctl(m, TIOCSPTLCK, &n) || ioctl (m, TIOCGPTN, &n)) {
+		close(m);
 		return -1;
 	}
 
 	if (!name) name = buf;
 	snprintf(name, sizeof buf, "/dev/pts/%d", n);
-	if ((*s = open(name, O_RDWR|O_NOCTTY)) < 0) {
-		close(*m);
+	if ((s = open(name, O_RDWR|O_NOCTTY)) < 0) {
+		close(m);
 		return -1;
 	}
 
-	if (tio) tcsetattr(*s, TCSANOW, tio);
-	if (ws) ioctl(*s, TIOCSWINSZ, ws);
+	if (tio) tcsetattr(s, TCSANOW, tio);
+	if (ws) ioctl(s, TIOCSWINSZ, ws);
 
+	*pm = m;
+	*ps = s;
 	return 0;
 }