int OpenPTY(char **ttyn) { int f; /* used for opening a new pty-pair: */ static char TtyName[32]; /* a dumb looking loop replaced by mycrofts code: */ if ((f = open("/dev/ptc", O_RDWR | O_NOCTTY | O_EXTRA)) < 0) return -1; vim_strncpy((char_u *)TtyName, (char_u *)ttyname(f), sizeof(TtyName) - 1); if (geteuid() != ROOT_UID && mch_access(TtyName, R_OK | W_OK)) { close(f); return -1; } initmaster(f); # ifdef _IBMR2 if (aixhack >= 0) close(aixhack); if ((aixhack = open(TtyName, O_RDWR | O_NOCTTY | O_EXTRA, 0)) < 0) { close(f); return -1; } # endif *ttyn = TtyName; return f; }
int OpenPTY(char **ttyn) { int f; char *m; char *(ptsname(int)); int unlockpt(int); int grantpt(int); RETSIGTYPE (*sigcld) SIGPROTOARG; /* used for opening a new pty-pair: */ static char TtyName[32]; if ((f = open("/dev/ptmx", O_RDWR | O_NOCTTY | O_EXTRA, 0)) == -1) return -1; /* * SIGCHLD set to SIG_DFL for grantpt() because it fork()s and * exec()s pt_chmod */ sigcld = signal(SIGCHLD, SIG_DFL); if ((m = ptsname(f)) == NULL || grantpt(f) || unlockpt(f)) { signal(SIGCHLD, sigcld); close(f); return -1; } signal(SIGCHLD, sigcld); vim_strncpy((char_u *)TtyName, (char_u *)m, sizeof(TtyName) - 1); initmaster(f); *ttyn = TtyName; return f; }
int OpenPTY(char **ttyn) { register int f; if ((f = open_controlling_pty(TtyName)) < 0) return -1; initmaster(f); *ttyn = TtyName; return f; }
int OpenPTY(char **ttyn) { int f, s; if (openpty(&f, &s, TtyName, NULL, NULL) != 0) return -1; close(s); initmaster(f); pty_preopen = 1; *ttyn = TtyName; return f; }
int OpenPTY(char **ttyn) { int f; static char TtyName[32]; if ((f = open_controlling_pty(TtyName)) < 0) return -1; initmaster(f); *ttyn = TtyName; return f; }
int OpenPTY(char **ttyn) { char *p, *q, *l, *d; int f; /* used for opening a new pty-pair: */ static char PtyName[32]; static char TtyName[32]; strcpy(PtyName, PtyProto); strcpy(TtyName, TtyProto); for (p = PtyName; *p != 'X'; p++) ; for (q = TtyName; *q != 'X'; q++) ; for (l = PTYRANGE0; (*p = *l) != '\0'; l++) { for (d = PTYRANGE1; (p[1] = *d) != '\0'; d++) { if ((f = open(PtyName, O_RDWR | O_NOCTTY | O_EXTRA, 0)) == -1) continue; q[0] = *l; q[1] = *d; if (geteuid() != ROOT_UID && mch_access(TtyName, R_OK | W_OK)) { close(f); continue; } #if defined(SUN_SYSTEM) && defined(TIOCGPGRP) && !defined(SUNOS3) /* Hack to ensure that the slave side of the pty is * unused. May not work in anything other than SunOS4.1 */ { int pgrp; /* tcgetpgrp does not work (uses TIOCGETPGRP)! */ if (ioctl(f, TIOCGPGRP, (char *)&pgrp) != -1 || errno != EIO) { close(f); continue; } } #endif initmaster(f); *ttyn = TtyName; return f; } } return -1; }
int OpenPTY(char **ttyn) { register char *p, *q, *l, *d; register int f; debug("OpenPTY: Using BSD style ptys.\n"); strncpy(PtyName, PtyProto, 32); strncpy(TtyName, TtyProto, 32); for (p = PtyName; *p != 'X'; p++) ; for (q = TtyName; *q != 'X'; q++) ; for (l = PTYRANGE0; (*p = *l) != '\0'; l++) { for (d = PTYRANGE1; (p[1] = *d) != '\0'; d++) { debug1("OpenPTY tries '%s'\n", PtyName); if ((f = open(PtyName, O_RDWR | O_NOCTTY)) == -1) continue; q[0] = *l; q[1] = *d; if (eff_uid && access(TtyName, R_OK | W_OK)) { close(f); continue; } #if defined(sun) && defined(TIOCGPGRP) && !defined(SUNOS3) /* Hack to ensure that the slave side of the pty is * unused. May not work in anything other than SunOS4.1 */ { int pgrp; /* tcgetpgrp does not work (uses TIOCGETPGRP)! */ if (ioctl(f, TIOCGPGRP, (char *)&pgrp) != -1 || errno != EIO) { close(f); continue; } } #endif initmaster(f); *ttyn = TtyName; return f; } } return -1; }
int OpenPTY(char **ttyn) { char *m, *s; register int f; if ((f = getpseudotty(&s, &m)) < 0) return -1; #ifdef _SEQUENT_ fvhangup(s); #endif strncpy(PtyName, m, sizeof(PtyName)); strncpy(TtyName, s, sizeof(TtyName)); initmaster(f); *ttyn = TtyName; return f; }
int OpenPTY(char **ttyn) { register int f; struct stat buf; strncpy(PtyName, "/dev/ptc", 32); if ((f = open(PtyName, O_RDWR | O_NOCTTY | O_NONBLOCK)) < 0) return -1; if (fstat(f, &buf) < 0) { close(f); return -1; } sprintf(TtyName, "/dev/ttyq%d", minor(buf.st_rdev)); initmaster(f); *ttyn = TtyName; return f; }
int OpenPTY(char **ttyn) { int f; stat_T buf; /* used for opening a new pty-pair: */ static char TtyName[32]; if ((f = open("/dev/ptc", O_RDWR | O_NOCTTY | O_NONBLOCK | O_EXTRA, 0)) < 0) return -1; if (mch_fstat(f, &buf) < 0) { close(f); return -1; } sprintf(TtyName, "/dev/ttyq%d", minor(buf.st_rdev)); initmaster(f); *ttyn = TtyName; return f; }
int OpenPTY(char **ttyn) { char *m, *s; int f; /* used for opening a new pty-pair: */ static char PtyName[32]; static char TtyName[32]; if ((f = getpseudotty(&s, &m)) < 0) return -1; #ifdef _SEQUENT_ fvhangup(s); #endif vim_strncpy((char_u *)PtyName, (char_u *)m, sizeof(PtyName) - 1); vim_strncpy((char_u *)TtyName, (char_u *)s, sizeof(TtyName) - 1); initmaster(f); *ttyn = TtyName; return f; }
int OpenPTY(char **ttyn) { int f; char *name; RETSIGTYPE (*sigcld) SIGPROTOARG; /* * SIGCHLD set to SIG_DFL for _getpty() because it may fork() and * exec() /usr/adm/mkpts */ sigcld = signal(SIGCHLD, SIG_DFL); name = _getpty(&f, O_RDWR | O_NONBLOCK | O_EXTRA, 0600, 0); signal(SIGCHLD, sigcld); if (name == 0) return -1; initmaster(f); *ttyn = name; return f; }
int OpenPTY(char **ttyn) { register int f; /* a dumb looking loop replaced by mycrofts code: */ strncpy (PtyName, "/dev/ptc", 32); if ((f = open (PtyName, O_RDWR | O_NOCTTY)) < 0) return -1; strncpy(TtyName, ttyname(f), sizeof(TtyName)); if (eff_uid && access(TtyName, R_OK | W_OK)) { close(f); return -1; } initmaster(f); # ifdef _IBMR2 pty_preopen = 1; # endif *ttyn = TtyName; return f; }
int OpenPTY(char **ttyn) { register int f; char *m, *ptsname(); int unlockpt (int), grantpt (int); #if defined(HAVE_GETPT) && defined(linux) int getpt (void); #endif void (*sigcld)(int); strncpy(PtyName, "/dev/ptmx", 32); #if defined(HAVE_GETPT) && defined(linux) if ((f = getpt()) == -1) #else if ((f = open(PtyName, O_RDWR | O_NOCTTY)) == -1) #endif return -1; /* * SIGCHLD set to SIG_DFL for grantpt() because it fork()s and * exec()s pt_chmod */ sigcld = signal(SIGCHLD, SIG_DFL); if ((m = ptsname(f)) == NULL || grantpt(f) || unlockpt(f)) { signal(SIGCHLD, sigcld); close(f); return -1; } signal(SIGCHLD, sigcld); strncpy(TtyName, m, sizeof(TtyName)); initmaster(f); *ttyn = TtyName; return f; }