diff --git a/ssh-keyscan.c b/ssh-keyscan.c
index da34f7c..9f7aa94 100644
--- a/ssh-keyscan.c
+++ b/ssh-keyscan.c
@@ -7,7 +7,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: ssh-keyscan.c,v 1.23 2001/06/05 05:05:39 pvalchev Exp $");
+RCSID("$OpenBSD: ssh-keyscan.c,v 1.24 2001/06/23 15:12:20 itojun Exp $");
 
 #if defined(HAVE_SYS_QUEUE_H) && !defined(HAVE_BOGUS_SYS_QUEUE_H)
 #include <sys/queue.h>
@@ -90,7 +90,7 @@
 	void (*errfun) (const char *,...);
 } Linebuf;
 
-Linebuf *
+static Linebuf *
 Linebuf_alloc(const char *filename, void (*errfun) (const char *,...))
 {
 	Linebuf *lb;
@@ -124,7 +124,7 @@
 	return (lb);
 }
 
-void
+static void
 Linebuf_free(Linebuf * lb)
 {
 	fclose(lb->stream);
@@ -132,7 +132,8 @@
 	xfree(lb);
 }
 
-void
+#if 0
+static void
 Linebuf_restart(Linebuf * lb)
 {
 	clearerr(lb->stream);
@@ -140,13 +141,14 @@
 	lb->lineno = 0;
 }
 
-int
+static int
 Linebuf_lineno(Linebuf * lb)
 {
 	return (lb->lineno);
 }
+#endif
 
-char *
+static char *
 Linebuf_getline(Linebuf * lb)
 {
 	int n = 0;
@@ -183,7 +185,7 @@
 	}
 }
 
-int
+static int
 fdlim_get(int hard)
 {
 #if defined(HAVE_GETRLIMIT) && defined(RLIMIT_NOFILE)
@@ -202,7 +204,7 @@
 #endif
 }
 
-int
+static int
 fdlim_set(int lim)
 {
 #if defined(HAVE_SETRLIMIT) && defined(RLIMIT_NOFILE)
@@ -227,7 +229,7 @@
  * separators.  This is the same as the 4.4BSD strsep, but different from the
  * one in the GNU libc.
  */
-char *
+static char *
 xstrsep(char **str, const char *delim)
 {
 	char *s, *e;
@@ -249,7 +251,7 @@
  * Get the next non-null token (like GNU strsep).  Strsep() will return a
  * null token for two adjacent separators, so we may have to loop.
  */
-char *
+static char *
 strnnsep(char **stringp, char *delim)
 {
 	char *tok;
@@ -260,7 +262,7 @@
 	return (tok);
 }
 
-void
+static void
 keyprint(char *host, char *output_name, char *kd, int len)
 {
 	static Key *rsa;
@@ -295,7 +297,7 @@
 	fputs("\n", stdout);
 }
 
-int
+static int
 tcpconnect(char *host)
 {
 	struct addrinfo hints, *ai, *aitop;
@@ -328,7 +330,7 @@
 	return s;
 }
 
-int
+static int
 conalloc(char *iname, char *oname)
 {
 	int s;
@@ -366,7 +368,7 @@
 	return (s);
 }
 
-void
+static void
 confree(int s)
 {
 	if (s >= maxfd || fdcon[s].c_status == CS_UNUSED)
@@ -382,7 +384,7 @@
 	ncon--;
 }
 
-void
+static void
 contouch(int s)
 {
 	TAILQ_REMOVE(&tq, &fdcon[s], c_link);
@@ -391,7 +393,7 @@
 	TAILQ_INSERT_TAIL(&tq, &fdcon[s], c_link);
 }
 
-int
+static int
 conrecycle(int s)
 {
 	int ret;
@@ -407,7 +409,7 @@
 	return (ret);
 }
 
-void
+static void
 congreet(int s)
 {
 	char buf[80], *cp;
@@ -442,7 +444,7 @@
 	contouch(s);
 }
 
-void
+static void
 conread(int s)
 {
 	int n;
@@ -482,7 +484,7 @@
 	contouch(s);
 }
 
-void
+static void
 conloop(void)
 {
 	fd_set *r, *e;
@@ -534,7 +536,7 @@
 	}
 }
 
-char *
+static char *
 nexthost(int argc, char **argv)
 {
 	static Linebuf *lb;
@@ -577,7 +579,7 @@
 	}
 }
 
-void
+static void
 usage(void)
 {
 	fatal("usage: %s [-t timeout] { [--] host | -f file } ...", __progname);
