[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.10

version 1.1, 2002/09/03 00:41:44 version 1.10, 2017/10/02 06:46:11
Line 6  static char rcsid[]=
Line 6  static char rcsid[]=
 #endif /* lint */  #endif /* lint */
   
 #include <stdio.h>  #include <stdio.h>
   #include <stdlib.h>
   #include <string.h>
 #include <signal.h>  #include <signal.h>
 #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 63  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 82  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 259  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 314  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 319  recover_signal ()
Line 341  recover_signal ()
 input_handler()  input_handler()
 {  {
     char   *inputline;      char   *inputline;
     char   *getline ();      char   *mygetline ();
   
     /*      /*
      * Get slave tty descriptor for auto-tty-fix       * Get slave tty descriptor for auto-tty-fix
Line 327  input_handler()
Line 349  input_handler()
     if ((slave = open (slave_tty, O_RDONLY)) < 0)      if ((slave = open (slave_tty, O_RDONLY)) < 0)
         perror ("open");          perror ("open");
   
     while (inputline = getline ()) {      while (inputline = mygetline ()) {
         /*          /*
          * XXX: nbyte should be greater than 0 only for ^@ input in emacs.           * XXX: nbyte should be greater than 0 only for ^@ input in emacs.
          * This solution is very ugly.. but it will takes a half day           * This solution is very ugly.. but it will takes a half day
Line 343  input_handler()
Line 365  input_handler()
   
         /*          /*
          * NOTE:           * NOTE:
          * Saving command line to output buffer is done in getline().           * Saving command line to output buffer is done in mygetline().
          * Because inputline here is converted by alias.           * Because inputline here is converted by alias.
          */           */
   
Line 525  int set_buffer (bp, size)
Line 547  int set_buffer (bp, size)
     BUFFER *bp;      BUFFER *bp;
     int size;      int size;
 {  {
     char *newbuf, *malloc(), *realloc();      char *newbuf;
   
     if (bp->b_buf)      if (bp->b_buf)
         newbuf = (char *) realloc (bp->b_buf, size);          newbuf = (char *) realloc (bp->b_buf, size);
Line 657  swallow_output()
Line 679  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 712  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 731  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 868  get_pty_master()
         master = 1;          master = 1;
         return;          return;
     }      }
 #ifdef __CYGWIN32__  #if defined(__CYGWIN32__) || defined(__linux__) || defined(__APPLE__)
     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;
         }          }
   #elif defined(__APPLE__)
           char *name;
           grantpt(master);
           unlockpt(master);
           if ( name = (char *)ptsname(master) ) {
               strcpy(slave_tty, name);
               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 1013  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 1029  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 1042  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 1081  usageAndExit()
 /*  /*
  * Propagate window size changes to the slave tty.   * Propagate window size changes to the slave tty.
  */   */
 sigwinch()  void sigwinch(int dummy)
 {  {
       char *itoa(int i);
 #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.10

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