[BACK]Return to fep_main.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / fep

Diff for /OpenXM_contrib2/fep/fep_main.c between version 1.1 and 1.6

version 1.1, 2002/09/03 00:41:44 version 1.6, 2009/02/24 07:30:15
Line 10  static char rcsid[]=
Line 10  static char rcsid[]=
 #include <sys/types.h>  #include <sys/types.h>
 #include <sys/stat.h>  #include <sys/stat.h>
 #include <sys/ioctl.h>  #include <sys/ioctl.h>
   #if defined(sun)
   #include <sys/fcntl.h>
   #include <sys/ttold.h>
   #endif
 #ifdef TERMIOS  #ifdef TERMIOS
 #include <termios.h>  #include <termios.h>
 #if defined(__linux__) || defined(__CYGWIN__)  #if defined(__linux__) || defined(__CYGWIN__)
Line 57  int histlen = -1;   /* history length */
Line 61  int histlen = -1;   /* history length */
 int     debug = OFF;                    /* debug switch */  int     debug = OFF;                    /* debug switch */
 int     auto_tty_fix = ON;              /* fix tty mode automaticaly */  int     auto_tty_fix = ON;              /* fix tty mode automaticaly */
 FILE    *script_fp = NULL;              /* script file pointer */  FILE    *script_fp = NULL;              /* script file pointer */
   #if defined(sun)
   void    catchsig (int);         /* function take care SIGCHILD */
   #else
 void    catchsig __P((int));            /* function take care SIGCHILD */  void    catchsig __P((int));            /* function take care SIGCHILD */
   #endif
   
 #ifdef TERMIOS  #ifdef TERMIOS
 #define ttystruct termios  #define ttystruct termios
Line 72  int lines;    /* terminal line size */
Line 80  int lines;    /* terminal line size */
 int     columns;                        /* terminal coulumn size */  int     columns;                        /* terminal coulumn size */
 char    *term_clear;                    /* terminal clear code */  char    *term_clear;                    /* terminal clear code */
   
   #if defined(sun)
   void    (*sighup)(int), (*sigchld)(int), (*sigtstp)(int);
   #else
 void    (*sighup) __P((int)), (*sigchld) __P((int)), (*sigtstp) __P((int));  void    (*sighup) __P((int)), (*sigchld) __P((int)), (*sigtstp) __P((int));
   #endif
                                         /* function buffer for signal */                                          /* function buffer for signal */
   
 #ifdef TIOCSETN  #ifdef TIOCSETN
Line 245  DEFAULT:
Line 257  DEFAULT:
     commandv = &argv[1];      commandv = &argv[1];
   
     if (! isatty (0)) {      if (! isatty (0)) {
   #if defined(__INTERIX)
           execvp (*commandv, commandv);
   #else
         execvp (*commandv, commandv, 0);          execvp (*commandv, commandv, 0);
   #endif
         perror (*commandv);          perror (*commandv);
         exit (1);          exit (1);
     }      }
Line 296  DEFAULT:
Line 312  DEFAULT:
 fix_signal ()  fix_signal ()
 {  {
 #ifdef SIGWINCH  #ifdef SIGWINCH
   #if defined(sun)
       void sigwinch (int);
   #else
     void sigwinch __P((int));      void sigwinch __P((int));
 #endif  #endif
   #endif
   
     sighup = signal (SIGHUP, terminate);      sighup = signal (SIGHUP, terminate);
     sigchld = signal (SIGCHLD, catchsig);      sigchld = signal (SIGCHLD, catchsig);
Line 657  swallow_output()
Line 677  swallow_output()
 #include <sys/m_wait.h>  #include <sys/m_wait.h>
 #endif  #endif
   
   #if defined(__INTERIX)
   #define wait3(s,opt,rp)   (waitpid((-1),(s),(opt)))
   #endif
   
 void  void
 catchsig(n)  catchsig(n)
     int n;      int n;
Line 686  exec_to_command(argv)
Line 710  exec_to_command(argv)
      */       */
     t = open ("/dev/tty", 2);      t = open ("/dev/tty", 2);
     if (t >= 0) {      if (t >= 0) {
 #ifndef __CYGWIN32__  #if !defined(__CYGWIN32__) && !defined(__INTERIX)
         ioctl (t, TIOCNOTTY, (char *) 0);          ioctl (t, TIOCNOTTY, (char *) 0);
 #endif  #endif
         (void) close (t);          (void) close (t);
Line 705  exec_to_command(argv)
Line 729  exec_to_command(argv)
 #elif defined(TIOCSETN)  #elif defined(TIOCSETN)
     ioctl (0, TIOCSETN, (char *) & slave_ttymode);      ioctl (0, TIOCSETN, (char *) & slave_ttymode);
 #endif  #endif
   #if defined(__INTERIX)
       execvp (*argv, argv);
   #else
     execvp (*argv, argv, 0);      execvp (*argv, argv, 0);
   #endif
     perror (*argv);      perror (*argv);
     exit (1);      exit (1);
 }  }
Line 838  get_pty_master()
Line 866  get_pty_master()
         master = 1;          master = 1;
         return;          return;
     }      }
 #ifdef __CYGWIN32__  #if defined(__CYGWIN32__) || defined(__linux__)
     for (i = 0; i < 16; i++) {      sprintf (master_tty, "/dev/ptmx");
         sprintf (master_tty, "/dev/ptmx");      master = open (master_tty, O_RDWR);
         master = open (master_tty, O_RDWR);      if (master >= 0) {
         if (master >= 0) {  #if defined(__linux__)
             sprintf (slave_tty, "/dev/tty%x",i);          char name[BUFSIZ];
           grantpt(master);
           unlockpt(master);
           if ( !ptsname_r(master,name,sizeof(name)) ) {
               strcpy(slave_tty, name);
             goto FOUND;              goto FOUND;
         }          }
   #else
           char *name;
           name = (char *)ptsname(master);
           if ( name != 0 ) {
               strcpy(slave_tty, name);
               goto FOUND;
           }
   #endif
     }      }
 #else  #else
     for (c = 'p'; c <= 's'; c++) {      for (c = 'p'; c <= 's'; c++) {
Line 963  recover_tty()
Line 1003  recover_tty()
 suspend()  suspend()
 {  {
     long        pid;      long        pid;
   #if defined(sun)
       void        (*func) (int);
   #else
     void        (*func) __P((int));      void        (*func) __P((int));
   #endif
 #ifndef __CYGWIN32__  #ifndef __CYGWIN32__
     int         omask;      int         omask;
 #endif  #endif
Line 975  suspend()
Line 1019  suspend()
     signal (SIGTSTP, SIG_DFL);      signal (SIGTSTP, SIG_DFL);
     recover_tty();      recover_tty();
 #define mask(s) (1 << ((s)-1))  #define mask(s) (1 << ((s)-1))
 #ifndef __CYGWIN32__  #if !defined(__CYGWIN32__) && !defined(sun)
     omask = sigsetmask (sigblock (0) & ~mask (SIGTSTP));      omask = sigsetmask (sigblock (0) & ~mask (SIGTSTP));
 #endif  #endif
     kill (0, SIGTSTP);      kill (0, SIGTSTP);
Line 988  suspend()
Line 1032  suspend()
     kill (0, SIGCONT);      kill (0, SIGCONT);
     signal (SIGCHLD, func);      signal (SIGCHLD, func);
     signal (SIGTSTP, SIG_IGN);      signal (SIGTSTP, SIG_IGN);
 #ifndef __CYGWIN32__  #if !defined(__CYGWIN32__) && !defined(sun)
     sigblock (mask (SIGTSTP));      sigblock (mask (SIGTSTP));
 #endif  #endif
     fix_tty ();      fix_tty ();
Line 1027  usageAndExit()
Line 1071  usageAndExit()
 /*  /*
  * Propagate window size changes to the slave tty.   * Propagate window size changes to the slave tty.
  */   */
 sigwinch()  void sigwinch(int dummy)
 {  {
 #ifdef TIOCGWINSZ                       /* 4.3BSD */  #ifdef TIOCGWINSZ                       /* 4.3BSD */
     struct winsize win;      struct winsize win;

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.6

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>