Diff for /embedaddon/quagga/vtysh/vtysh_main.c between versions 1.1.1.1 and 1.1.1.2

version 1.1.1.1, 2012/02/21 17:26:12 version 1.1.1.2, 2016/11/02 10:09:10
Line 63  struct thread_master *master; Line 63  struct thread_master *master;
 FILE *logfile;  FILE *logfile;
   
 /* SIGTSTP handler.  This function care user's ^Z input. */  /* SIGTSTP handler.  This function care user's ^Z input. */
voidstatic void
 sigtstp (int sig)  sigtstp (int sig)
 {  {
   /* Execute "end" command. */    /* Execute "end" command. */
Line 84  sigtstp (int sig) Line 84  sigtstp (int sig)
 }  }
   
 /* SIGINT handler.  This function care user's ^Z input.  */  /* SIGINT handler.  This function care user's ^Z input.  */
voidstatic void
 sigint (int sig)  sigint (int sig)
 {  {
   /* Check this process is not child process. */    /* Check this process is not child process. */
Line 98  sigint (int sig) Line 98  sigint (int sig)
   
 /* Signale wrapper for vtysh. We don't use sigevent because  /* Signale wrapper for vtysh. We don't use sigevent because
  * vtysh doesn't use threads. TODO */   * vtysh doesn't use threads. TODO */
RETSIGTYPE *static void
 vtysh_signal_set (int signo, void (*func)(int))  vtysh_signal_set (int signo, void (*func)(int))
 {  {
   int ret;  
   struct sigaction sig;    struct sigaction sig;
   struct sigaction osig;    struct sigaction osig;
   
Line 112  vtysh_signal_set (int signo, void (*func)(int)) Line 111  vtysh_signal_set (int signo, void (*func)(int))
   sig.sa_flags |= SA_RESTART;    sig.sa_flags |= SA_RESTART;
 #endif /* SA_RESTART */  #endif /* SA_RESTART */
   
  ret = sigaction (signo, &sig, &osig);  sigaction (signo, &sig, &osig);
 
  if (ret < 0)  
    return (SIG_ERR); 
  else 
    return (osig.sa_handler); 
 }  }
   
 /* Initialization of signal handles. */  /* Initialization of signal handles. */
voidstatic void
 vtysh_signal_init ()  vtysh_signal_init ()
 {  {
   vtysh_signal_set (SIGINT, sigint);    vtysh_signal_set (SIGINT, sigint);
Line 168  struct option longopts[] =  Line 162  struct option longopts[] = 
 };  };
   
 /* Read a string, and return a pointer to it.  Returns NULL on EOF. */  /* Read a string, and return a pointer to it.  Returns NULL on EOF. */
char *static char *
 vtysh_rl_gets ()  vtysh_rl_gets ()
 {  {
   HIST_ENTRY *last;    HIST_ENTRY *last;
Line 202  static void log_it(const char *line) Line 196  static void log_it(const char *line)
 {  {
   time_t t = time(NULL);    time_t t = time(NULL);
   struct tm *tmp = localtime(&t);    struct tm *tmp = localtime(&t);
  char *user = getenv("USER") ? : "boot";  const char *user = getenv("USER");
   char tod[64];    char tod[64];
   
     if (!user)
       user = "boot";
   
   strftime(tod, sizeof tod, "%Y%m%d-%H:%M.%S", tmp);    strftime(tod, sizeof tod, "%Y%m%d-%H:%M.%S", tmp);
       
   fprintf(logfile, "%s:%s %s\n", tod, user, line);    fprintf(logfile, "%s:%s %s\n", tod, user, line);
Line 226  main (int argc, char **argv, char **env) Line 223  main (int argc, char **argv, char **env)
   struct cmd_rec *tail = NULL;    struct cmd_rec *tail = NULL;
   int echo_command = 0;    int echo_command = 0;
   int no_error = 0;    int no_error = 0;
     char *homedir = NULL;
   
   /* Preserve name of myself. */    /* Preserve name of myself. */
   progname = ((p = strrchr (argv[0], '/')) ? ++p : argv[0]);    progname = ((p = strrchr (argv[0], '/')) ? ++p : argv[0]);
Line 299  main (int argc, char **argv, char **env) Line 297  main (int argc, char **argv, char **env)
   
   vty_init_vtysh ();    vty_init_vtysh ();
   
   sort_node ();  
   
   /* Read vtysh configuration file before connecting to daemons. */    /* Read vtysh configuration file before connecting to daemons. */
   vtysh_read_config (config_default);    vtysh_read_config (config_default);
   
Line 322  main (int argc, char **argv, char **env) Line 318  main (int argc, char **argv, char **env)
       exit(1);        exit(1);
     }      }
   
     /*
      * Setup history file for use by both -c and regular input
      * If we can't find the home directory, then don't store
      * the history information
      */
     homedir = vtysh_get_home ();
     if (homedir)
       {
         snprintf(history_file, sizeof(history_file), "%s/.history_quagga", homedir);
         if (read_history (history_file) != 0)
           {
             int fp;
   
             fp = open (history_file, O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);
             if (fp)
               close (fp);
   
             read_history (history_file);
           }
       }
   
   /* If eval mode. */    /* If eval mode. */
   if (cmd)    if (cmd)
     {      {
Line 337  main (int argc, char **argv, char **env) Line 354  main (int argc, char **argv, char **env)
             {              {
               *eol = '\0';                *eol = '\0';
   
                 add_history (cmd->line);
                 append_history (1, history_file);
   
               if (echo_command)                if (echo_command)
                 printf("%s%s\n", vtysh_prompt(), cmd->line);                  printf("%s%s\n", vtysh_prompt(), cmd->line);
                               
Line 353  main (int argc, char **argv, char **env) Line 373  main (int argc, char **argv, char **env)
               cmd->line = eol+1;                cmd->line = eol+1;
             }              }
   
             add_history (cmd->line);
             append_history (1, history_file);
   
           if (echo_command)            if (echo_command)
             printf("%s%s\n", vtysh_prompt(), cmd->line);              printf("%s%s\n", vtysh_prompt(), cmd->line);
   
Line 373  main (int argc, char **argv, char **env) Line 396  main (int argc, char **argv, char **env)
             XFREE(0, cr);              XFREE(0, cr);
           }            }
         }          }
   
         history_truncate_file(history_file,1000);
       exit (0);        exit (0);
     }      }
       
Line 402  main (int argc, char **argv, char **env) Line 427  main (int argc, char **argv, char **env)
   sigsetjmp (jmpbuf, 1);    sigsetjmp (jmpbuf, 1);
   jmpflag = 1;    jmpflag = 1;
   
   snprintf(history_file, sizeof(history_file), "%s/.history_quagga", getenv("HOME"));  
   read_history(history_file);  
   /* Main command loop. */    /* Main command loop. */
   while (vtysh_rl_gets ())    while (vtysh_rl_gets ())
     vtysh_execute (line_read);      vtysh_execute (line_read);

Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.2


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