mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-08 09:30:30 +00:00
doc, vtysh: Fixup of history handling
This fix does two things: 1) If the ${HOME}/.history_quagga file does not exist, create it for history storing. 2) Allow vtysh -c "..." commands to be stored in history file as well Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
parent
d4573a1274
commit
fba55c8ac3
@ -76,6 +76,9 @@ config file.
|
|||||||
.BI /etc/quagga/Quagga.conf
|
.BI /etc/quagga/Quagga.conf
|
||||||
The default location of the integrated Quagga routing engine config file
|
The default location of the integrated Quagga routing engine config file
|
||||||
if integrated config file is in use (not default).
|
if integrated config file is in use (not default).
|
||||||
|
.TP
|
||||||
|
.BI ${HOME}/.history_quagga
|
||||||
|
Location of history of commands entered via cli
|
||||||
.SH WARNING
|
.SH WARNING
|
||||||
This man page is intended to be a quick reference for command line
|
This man page is intended to be a quick reference for command line
|
||||||
options. The definitive document is the Info file \fBQuagga\fR.
|
options. The definitive document is the Info file \fBQuagga\fR.
|
||||||
|
@ -232,6 +232,7 @@ main (int argc, char **argv, char **env)
|
|||||||
int echo_command = 0;
|
int echo_command = 0;
|
||||||
int no_error = 0;
|
int no_error = 0;
|
||||||
int markfile = 0;
|
int markfile = 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]);
|
||||||
@ -360,6 +361,27 @@ main (int argc, char **argv, char **env)
|
|||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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)
|
||||||
{
|
{
|
||||||
@ -375,6 +397,9 @@ 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);
|
||||||
|
|
||||||
@ -391,6 +416,9 @@ 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);
|
||||||
|
|
||||||
@ -411,6 +439,8 @@ main (int argc, char **argv, char **env)
|
|||||||
XFREE(0, cr);
|
XFREE(0, cr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
history_truncate_file(history_file,1000);
|
||||||
exit (0);
|
exit (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -440,8 +470,6 @@ 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);
|
||||||
|
@ -207,8 +207,18 @@ vtysh_auth ()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
vtysh_get_home (void)
|
||||||
|
{
|
||||||
|
struct passwd *passwd;
|
||||||
|
|
||||||
|
passwd = getpwuid (getuid ());
|
||||||
|
|
||||||
|
return passwd ? passwd->pw_dir : NULL;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
vtysh_user_init ()
|
vtysh_user_init (void)
|
||||||
{
|
{
|
||||||
userlist = list_new ();
|
userlist = list_new ();
|
||||||
install_element (CONFIG_NODE, &username_nopassword_cmd);
|
install_element (CONFIG_NODE, &username_nopassword_cmd);
|
||||||
|
@ -25,4 +25,6 @@
|
|||||||
int vtysh_auth ();
|
int vtysh_auth ();
|
||||||
void user_config_write(void);
|
void user_config_write(void);
|
||||||
|
|
||||||
|
char *vtysh_get_home (void);
|
||||||
|
|
||||||
#endif /* _VTYSH_USER_H */
|
#endif /* _VTYSH_USER_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user