mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-05 10:08:41 +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
|
||||
The default location of the integrated Quagga routing engine config file
|
||||
if integrated config file is in use (not default).
|
||||
.TP
|
||||
.BI ${HOME}/.history_quagga
|
||||
Location of history of commands entered via cli
|
||||
.SH WARNING
|
||||
This man page is intended to be a quick reference for command line
|
||||
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 no_error = 0;
|
||||
int markfile = 0;
|
||||
char *homedir = NULL;
|
||||
|
||||
/* Preserve name of myself. */
|
||||
progname = ((p = strrchr (argv[0], '/')) ? ++p : argv[0]);
|
||||
@ -360,6 +361,27 @@ main (int argc, char **argv, char **env)
|
||||
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 (cmd)
|
||||
{
|
||||
@ -375,6 +397,9 @@ main (int argc, char **argv, char **env)
|
||||
{
|
||||
*eol = '\0';
|
||||
|
||||
add_history (cmd->line);
|
||||
append_history (1, history_file);
|
||||
|
||||
if (echo_command)
|
||||
printf("%s%s\n", vtysh_prompt(), cmd->line);
|
||||
|
||||
@ -391,6 +416,9 @@ main (int argc, char **argv, char **env)
|
||||
cmd->line = eol+1;
|
||||
}
|
||||
|
||||
add_history (cmd->line);
|
||||
append_history (1, history_file);
|
||||
|
||||
if (echo_command)
|
||||
printf("%s%s\n", vtysh_prompt(), cmd->line);
|
||||
|
||||
@ -411,6 +439,8 @@ main (int argc, char **argv, char **env)
|
||||
XFREE(0, cr);
|
||||
}
|
||||
}
|
||||
|
||||
history_truncate_file(history_file,1000);
|
||||
exit (0);
|
||||
}
|
||||
|
||||
@ -440,8 +470,6 @@ main (int argc, char **argv, char **env)
|
||||
sigsetjmp (jmpbuf, 1);
|
||||
jmpflag = 1;
|
||||
|
||||
snprintf(history_file, sizeof(history_file), "%s/.history_quagga", getenv("HOME"));
|
||||
read_history(history_file);
|
||||
/* Main command loop. */
|
||||
while (vtysh_rl_gets ())
|
||||
vtysh_execute (line_read);
|
||||
|
@ -207,8 +207,18 @@ vtysh_auth ()
|
||||
return 0;
|
||||
}
|
||||
|
||||
char *
|
||||
vtysh_get_home (void)
|
||||
{
|
||||
struct passwd *passwd;
|
||||
|
||||
passwd = getpwuid (getuid ());
|
||||
|
||||
return passwd ? passwd->pw_dir : NULL;
|
||||
}
|
||||
|
||||
void
|
||||
vtysh_user_init ()
|
||||
vtysh_user_init (void)
|
||||
{
|
||||
userlist = list_new ();
|
||||
install_element (CONFIG_NODE, &username_nopassword_cmd);
|
||||
|
@ -25,4 +25,6 @@
|
||||
int vtysh_auth ();
|
||||
void user_config_write(void);
|
||||
|
||||
char *vtysh_get_home (void);
|
||||
|
||||
#endif /* _VTYSH_USER_H */
|
||||
|
Loading…
Reference in New Issue
Block a user