[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.5 and 1.12

version 1.5, 2005/01/18 14:20:19 version 1.12, 2020/11/01 10:28:22
Line 1 
Line 1 
 /*      Copyright (c) 1987, 1988 by Software Research Associates, Inc.  */  /*      Copyright (c) 1987, 1988 by Software Research Associates, Inc.  */
   
   #if defined(ANDROID)
   #include <strings.h>
   #define index(s,c) strchr(s,c)
   #define rindex(s,c) strrchr(s,c)
   #endif
   
 #ifndef lint  #ifndef lint
 static char rcsid[]=  static char rcsid[]=
 "$Id$ (SRA)";  "$Id$ (SRA)";
 #endif /* lint */  #endif /* lint */
   
 #include <stdio.h>  #include <stdio.h>
   #include <unistd.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>
Line 128  struct cmdinfo {
Line 137  struct cmdinfo {
         {0,                     0}          {0,                     0}
 };  };
   
 main(argc, argv)  int main(int argc, char *argv[])
     int argc;  
     char *argv[];  
 {  {
     int     i;      int     i;
     char    *cp;      char    *cp;
Line 246  DEFAULT:
Line 253  DEFAULT:
      * Set variable of command name.       * Set variable of command name.
      */       */
     {      {
   #if defined(ANDROID)
           char *cp = argv[1];
   #else
         char *cp = argv[1], *rindex();          char *cp = argv[1], *rindex();
   #endif
   
         if (any ('/', cp))          if (any ('/', cp))
             cp = rindex (cp, '/') + 1;              cp = rindex (cp, '/') + 1;
Line 260  DEFAULT:
Line 271  DEFAULT:
 #if defined(__INTERIX)  #if defined(__INTERIX)
         execvp (*commandv, commandv);          execvp (*commandv, commandv);
 #else  #else
         execvp (*commandv, commandv, 0);          execvp (*commandv, commandv);
 #endif  #endif
         perror (*commandv);          perror (*commandv);
         exit (1);          exit (1);
Line 309  DEFAULT:
Line 320  DEFAULT:
     input_handler ();      input_handler ();
 }  }
   
 fix_signal ()  void fix_signal ()
 {  {
 #ifdef SIGWINCH  #ifdef SIGWINCH
 #if defined(sun)  #if defined(sun)
Line 328  fix_signal ()
Line 339  fix_signal ()
 #endif  #endif
 }  }
   
 recover_signal ()  void recover_signal ()
 {  {
   
     (void) signal (SIGHUP, sighup);      (void) signal (SIGHUP, sighup);
Line 336  recover_signal ()
Line 347  recover_signal ()
     (void) signal (SIGTSTP, sigtstp);      (void) signal (SIGTSTP, sigtstp);
 }  }
   
 input_handler()  void 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 347  input_handler()
Line 358  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 363  input_handler()
Line 374  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 421  struct timeval *notimeout[] = {
Line 432  struct timeval *notimeout[] = {
         TIMEOUT_FOREVER          TIMEOUT_FOREVER
 };  };
   
 getcharacter()  int getcharacter()
 {  {
     char c;      char c;
     int n;      int n;
Line 541  RETRY:
Line 552  RETRY:
     goto RETRY;      goto RETRY;
 }  }
   
 int set_buffer (bp, size)  int set_buffer (BUFFER *bp, int size)
     BUFFER *bp;  
     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 568  int set_buffer (bp, size)
Line 577  int set_buffer (bp, size)
     return (1);      return (1);
 }  }
   
 int buf_read (fd, bp)  /*    int fd;                   file discriptor */
     int fd;                     /* file discriptor */  /*    BUFFER *bp;               buffer pointer */
     BUFFER *bp;                 /* buffer pointer */  
   int buf_read (int fd, BUFFER *bp)
 {  {
     int nbyte;      int nbyte;
   
Line 608  int buf_read (fd, bp)
Line 618  int buf_read (fd, bp)
     return (nbyte);      return (nbyte);
 }  }
   
 buf_put (bp, s)  /*
     BUFFER *bp;                 /* buffer pointer */      BUFFER *bp;                 buffer pointer
     char *s;                    /* string pointer */      char *s;                    string pointer
   */
   
   void buf_put (BUFFER *bp, char *s)
 {  {
     int nbyte;      int nbyte;
     int slen;      int slen;
Line 635  buf_put (bp, s)
Line 648  buf_put (bp, s)
     }      }
 }  }
   
 swallow_output()  void swallow_output()
 {  {
     fd_set readfd = mastermask;      fd_set readfd = mastermask;
     int r;      int r;
Line 681  swallow_output()
Line 694  swallow_output()
 #define wait3(s,opt,rp)   (waitpid((-1),(s),(opt)))  #define wait3(s,opt,rp)   (waitpid((-1),(s),(opt)))
 #endif  #endif
   
 void  void catchsig(int n)
 catchsig(n)  
     int n;  
 {  {
     int status;      int status;
     struct rusage   ru;      struct rusage   ru;
Line 700  catchsig(n)
Line 711  catchsig(n)
     terminate (0);      terminate (0);
 }  }
   
 exec_to_command(argv)  void exec_to_command(char *argv[])
     char *argv[];  
 {  {
     int t;      int t;
   
Line 732  exec_to_command(argv)
Line 742  exec_to_command(argv)
 #if defined(__INTERIX)  #if defined(__INTERIX)
     execvp (*argv, argv);      execvp (*argv, argv);
 #else  #else
     execvp (*argv, argv, 0);      execvp (*argv, argv);
 #endif  #endif
     perror (*argv);      perror (*argv);
     exit (1);      exit (1);
 }  }
   
 #ifdef TERMIOS  #ifdef TERMIOS
 fix_tty()  void fix_tty()
 {  {
     int i;      int i;
     master_ttymode = initial_ttymode;      master_ttymode = initial_ttymode;
Line 759  fix_tty()
Line 769  fix_tty()
   
 #elif defined(TIOCSETN)  #elif defined(TIOCSETN)
   
 fix_tty()  void fix_tty()
 {  {
     struct tchars tcbuf;      struct tchars tcbuf;
     struct ltchars lcbuf;      struct ltchars lcbuf;
Line 798  fix_tty()
Line 808  fix_tty()
 }  }
 #endif  #endif
   
 kill_process()  void kill_process()
 {  {
   
     if (child_pid)      if (child_pid)
         (void) killpg (child_pid, SIGTERM);          (void) killpg (child_pid, SIGTERM);
 }  }
   
 void  void terminate(int n)
 terminate(n)  
     int n;  
 {  {
     extern int errno;      extern int errno;
   
Line 849  terminate(n)
Line 857  terminate(n)
     exit (0);      exit (0);
 }  }
   
 send_int_sig() {  int send_int_sig() {
 #ifndef __CYGWIN__  #ifndef __CYGWIN__
     kill(child_pid,SIGINT);      kill(child_pid,SIGINT);
 #endif  #endif
         return 0;          return 0;
 }  }
   
 get_pty_master()  void get_pty_master()
 {  {
     char    c;      char    c;
     struct stat stb;      struct stat stb;
Line 866  get_pty_master()
Line 874  get_pty_master()
         master = 1;          master = 1;
         return;          return;
     }      }
 #ifdef __CYGWIN32__  #if defined(__CYGWIN32__) || defined(__linux__) || defined(__APPLE__)
     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__)
           char name[BUFSIZ];
           grantpt(master);
           unlockpt(master);
           if ( !ptsname_r(master,name,sizeof(name)) ) {
               strcpy(slave_tty, name);
               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;          char *name;
         name = (char *)ptsname(master);          name = (char *)ptsname(master);
         if ( name != 0 ) {          if ( name != 0 ) {
             strcpy(slave_tty, name);              strcpy(slave_tty, name);
             goto FOUND;              goto FOUND;
         }          }
   #endif
     }      }
 #else  #else
     for (c = 'p'; c <= 's'; c++) {      for (c = 'p'; c <= 's'; c++) {
Line 941  get_pty_master()
Line 967  get_pty_master()
     return;      return;
 }  }
   
 get_pty_slave()  void get_pty_slave()
 {  {
   
     slave = open (slave_tty, 2);      slave = open (slave_tty, 2);
Line 979  get_pty_slave()
Line 1005  get_pty_slave()
 #endif  #endif
 }  }
   
 recover_tty()  void recover_tty()
 {  {
 #ifdef TERMIOS  #ifdef TERMIOS
     tcsetattr(0, TCSANOW, &initial_ttymode);      tcsetattr(0, TCSANOW, &initial_ttymode);
Line 990  recover_tty()
Line 1016  recover_tty()
 #endif  #endif
 }  }
   
 suspend()  int suspend()
 {  {
     long        pid;      long        pid;
 #if defined(sun)  #if defined(sun)
Line 1030  suspend()
Line 1056  suspend()
         fep_repaint(0);          fep_repaint(0);
 }  }
   
 look_cmdinfo (command)  void look_cmdinfo (char *command)
     char *command;  
 {  {
     struct cmdinfo *p;      struct cmdinfo *p;
     char *allocAndCopyThere();      char *allocAndCopyThere();
Line 1050  look_cmdinfo (command)
Line 1075  look_cmdinfo (command)
 }  }
   
   
 usageAndExit()  void usageAndExit()
 {  {
   
     printf ("Usage: %s [-emacs|-vi] command\n", myself);      printf ("Usage: %s [-emacs|-vi] command\n", myself);
Line 1063  usageAndExit()
Line 1088  usageAndExit()
  */   */
 void sigwinch(int dummy)  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.5  
changed lines
  Added in v.1.12

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