summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpaul <paul>2005-03-08 15:16:57 +0000
committerpaul <paul>2005-03-08 15:16:57 +0000
commitb45da6f01612e8ec1938cacfe0ea0ef34ad1afca (patch)
tree670671d335524f7b44bee3e32bdba1a75aecc7df
parent3b0c5d9a56560cfbfb1a8f5b9e6cc71025eb5490 (diff)
2005-03-08 Paul Jakma <paul.jakma@sun.com>
* command.c: (banner_motd_file_cmd) use XSTRDUP/XFREE * vty.c: (vty_hello) suggestions from Andrew, read by line and stub out trailling non-printable characters on each line thus allowing us to specify VTY_NEWLINE to vty_out.
-rw-r--r--lib/ChangeLog7
-rw-r--r--lib/command.c8
-rw-r--r--lib/vty.c19
3 files changed, 22 insertions, 12 deletions
diff --git a/lib/ChangeLog b/lib/ChangeLog
index 3b60e294..ca5d4c3c 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,3 +1,10 @@
+2005-03-08 Paul Jakma <paul.jakma@sun.com>
+
+ * command.c: (banner_motd_file_cmd) use XSTRDUP/XFREE
+ * vty.c: (vty_hello) suggestions from Andrew, read by line and
+ stub out trailling non-printable characters on each line thus
+ allowing us to specify VTY_NEWLINE to vty_out.
+
2005-03-08 Jeroen Massar <jeroen@unfix.org>
* vty.c: (vty_hello) display motd file, if set
diff --git a/lib/command.c b/lib/command.c
index ca1100da..7656f680 100644
--- a/lib/command.c
+++ b/lib/command.c
@@ -1,5 +1,5 @@
/*
- $Id: command.c,v 1.38 2005/03/08 10:43:43 paul Exp $
+ $Id: command.c,v 1.39 2005/03/08 15:16:57 paul Exp $
Command interpreter routine for virtual terminal [aka TeletYpe]
Copyright (C) 1997, 98, 99 Kunihiro Ishiguro
@@ -3409,8 +3409,10 @@ DEFUN (banner_motd_file,
"Banner from a file\n"
"Filename\n")
{
- if (host.motdfile) free(host.motdfile);
- host.motdfile = strdup(argv[0]);
+ if (host.motdfile)
+ XFREE (MTYPE_TMP, host.motdfile);
+ host.motdfile = XSTRDUP (MTYPE_TMP, argv[0]);
+
return CMD_SUCCESS;
}
diff --git a/lib/vty.c b/lib/vty.c
index bb3f14a5..2ea24b8e 100644
--- a/lib/vty.c
+++ b/lib/vty.c
@@ -220,22 +220,23 @@ vty_hello (struct vty *vty)
{
FILE *f;
char buf[4096];
- int r;
+
f = fopen (host.motdfile, "r");
if (f)
{
- while (!feof (f))
+ while (fgets (buf, sizeof (buf), f))
{
- memset (buf, '\0', sizeof (buf));
- r = fread (&buf, sizeof (buf) - 1, 1, f);
- if (r < 0)
- break;
- vty_out (vty, buf);
- }
+ char *s;
+ /* work backwards and squash all isspace() chars
+ * we want nul terminated for vty_out */
+ for (s = buf+strlen(buf); (s > buf) && isspace(*(s-1)); s--);
+ *s = '\0';
+ vty_out (vty, "%s%s", buf, VTY_NEWLINE);
+ }
fclose (f);
}
else
- vty_out (vty, "MOTD file not found\n");
+ vty_out (vty, "MOTD file not found%s", VTY_NEWLINE);
}
else if (host.motd)
vty_out (vty, host.motd);