diff --git a/ChangeLog b/ChangeLog
index 19552da..def04ff 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -47,6 +47,13 @@
      prototype pedant.  not very creative...
      - () -> (void)
      - no variable names
+   - itojun@cvs.openbsd.org 2001/06/26 06:33:07
+     [servconf.h serverloop.h session.h sftp-client.h sftp-common.h 
+      sftp-glob.h sftp-int.h sshconnect.h ssh-dss.h sshlogin.h sshpty.h 
+      ssh-rsa.h tildexpand.h uidswap.h uuencode.h xmalloc.h]
+     prototype pedant.  not very creative...
+     - () -> (void)
+     - no variable names
 
 20010629
  - (bal) Removed net_aton() since we don't use it any more
@@ -5874,4 +5881,4 @@
  - Wrote replacements for strlcpy and mkdtemp
  - Released 1.0pre1
 
-$Id: ChangeLog,v 1.1356 2001/07/04 04:02:36 mouring Exp $
+$Id: ChangeLog,v 1.1357 2001/07/04 04:07:12 mouring Exp $
diff --git a/servconf.h b/servconf.h
index 6256c3a..a71b7c1 100644
--- a/servconf.h
+++ b/servconf.h
@@ -11,7 +11,7 @@
  * called by a name other than "ssh" or "Secure Shell".
  */
 
-/* RCSID("$OpenBSD: servconf.h,v 1.44 2001/06/23 02:34:31 markus Exp $"); */
+/* RCSID("$OpenBSD: servconf.h,v 1.45 2001/06/26 06:33:00 itojun Exp $"); */
 
 #ifndef SERVCONF_H
 #define SERVCONF_H
@@ -132,15 +132,15 @@
  * Initializes the server options to special values that indicate that they
  * have not yet been set.
  */
-void    initialize_server_options(ServerOptions * options);
+void    initialize_server_options(ServerOptions *);
 
 /*
  * Reads the server configuration file.  This only sets the values for those
  * options that have the special value indicating they have not been set.
  */
-void    read_server_config(ServerOptions * options, const char *filename);
+void    read_server_config(ServerOptions *, const char *);
 
 /* Sets values for those values that have not yet been set. */
-void    fill_default_server_options(ServerOptions * options);
+void    fill_default_server_options(ServerOptions *);
 
 #endif				/* SERVCONF_H */
diff --git a/serverloop.h b/serverloop.h
index 652c1d9..9c2c2cc 100644
--- a/serverloop.h
+++ b/serverloop.h
@@ -1,4 +1,4 @@
-/*	$OpenBSD: serverloop.h,v 1.2 2001/01/29 01:58:17 niklas Exp $	*/
+/*	$OpenBSD: serverloop.h,v 1.3 2001/06/26 06:33:00 itojun Exp $	*/
 
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -18,5 +18,5 @@
  * (of the child program), and reads from stdout and stderr (of the child
  * program).
  */
-void    server_loop(pid_t pid, int fdin, int fdout, int fderr);
+void    server_loop(pid_t, int, int, int);
 void    server_loop2(void);
diff --git a/session.h b/session.h
index bda1e50..9ed8358 100644
--- a/session.h
+++ b/session.h
@@ -1,4 +1,4 @@
-/*	$OpenBSD: session.h,v 1.7 2001/06/25 08:25:39 markus Exp $	*/
+/*	$OpenBSD: session.h,v 1.8 2001/06/26 06:33:01 itojun Exp $	*/
 
 /*
  * Copyright (c) 2000, 2001 Markus Friedl.  All rights reserved.
@@ -26,11 +26,11 @@
 #ifndef SESSION_H
 #define SESSION_H
 
-void	do_authenticated(Authctxt *ac);
+void	do_authenticated(Authctxt *);
 
-int	session_open(int id);
-void	session_input_channel_req(int id, void *arg);
-void	session_close_by_pid(pid_t pid, int status);
-void	session_close_by_channel(int id, void *arg);
+int	session_open(int);
+void	session_input_channel_req(int, void *);
+void	session_close_by_pid(pid_t, int);
+void	session_close_by_channel(int, void *);
 
 #endif
diff --git a/sftp-client.h b/sftp-client.h
index 09ffcc0..a322b25 100644
--- a/sftp-client.h
+++ b/sftp-client.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: sftp-client.h,v 1.5 2001/04/05 10:42:52 markus Exp $ */
+/* $OpenBSD: sftp-client.h,v 1.6 2001/06/26 06:33:01 itojun Exp $ */
 
 /*
  * Copyright (c) 2001 Damien Miller.  All rights reserved.
@@ -38,57 +38,55 @@
  * Initialiase a SSH filexfer connection. Returns -1 on error or
  * protocol version on success.
  */
-int do_init(int fd_in, int fd_out);
+int do_init(int, int);
 
 /* Close file referred to by 'handle' */
-int do_close(int fd_in, int fd_out, char *handle, u_int handle_len);
+int do_close(int, int, char *, u_int);
 
 /* List contents of directory 'path' to stdout */
-int do_ls(int fd_in, int fd_out, char *path);
+int do_ls(int, int, char *);
 
 /* Read contents of 'path' to NULL-terminated array 'dir' */
-int do_readdir(int fd_in, int fd_out, char *path, SFTP_DIRENT ***dir);
+int do_readdir(int, int, char *, SFTP_DIRENT ***);
 
 /* Frees a NULL-terminated array of SFTP_DIRENTs (eg. from do_readdir) */
-void free_sftp_dirents(SFTP_DIRENT **s);
+void free_sftp_dirents(SFTP_DIRENT **);
 
 /* Delete file 'path' */
-int do_rm(int fd_in, int fd_out, char *path);
+int do_rm(int, int, char *);
 
 /* Create directory 'path' */
-int do_mkdir(int fd_in, int fd_out, char *path, Attrib *a);
+int do_mkdir(int, int, char *, Attrib *);
 
 /* Remove directory 'path' */
-int do_rmdir(int fd_in, int fd_out, char *path);
+int do_rmdir(int, int, char *);
 
 /* Get file attributes of 'path' (follows symlinks) */
-Attrib *do_stat(int fd_in, int fd_out, char *path, int quiet);
+Attrib *do_stat(int, int, char *, int);
 
 /* Get file attributes of 'path' (does not follow symlinks) */
-Attrib *do_lstat(int fd_in, int fd_out, char *path, int quiet);
+Attrib *do_lstat(int, int, char *, int);
 
 /* Get file attributes of open file 'handle' */
-Attrib *do_fstat(int fd_in, int fd_out, char *handle, u_int handle_len,
-    int quiet);
+Attrib *do_fstat(int, int, char *, u_int, int);
 
 /* Set file attributes of 'path' */
-int do_setstat(int fd_in, int fd_out, char *path, Attrib *a);
+int do_setstat(int, int, char *, Attrib *);
 
 /* Set file attributes of open file 'handle' */
-int do_fsetstat(int fd_in, int fd_out, char *handle,
-    u_int handle_len, Attrib *a);
+int do_fsetstat(int, int, char *, u_int, Attrib *);
 
 /* Canonicalise 'path' - caller must free result */
-char *do_realpath(int fd_in, int fd_out, char *path);
+char *do_realpath(int, int, char *);
 
 /* Rename 'oldpath' to 'newpath' */
-int do_rename(int fd_in, int fd_out, char *oldpath, char *newpath);
+int do_rename(int, int, char *, char *);
 
 /* Rename 'oldpath' to 'newpath' */
-int do_symlink(int fd_in, int fd_out, char *oldpath, char *newpath);
+int do_symlink(int, int, char *, char *);
 
 /* Return target of symlink 'path' - caller must free result */
-char *do_readlink(int fd_in, int fd_out, char *path);
+char *do_readlink(int, int, char *);
 
 /* XXX: add callbacks to do_download/do_upload so we can do progress meter */
 
@@ -96,12 +94,10 @@
  * Download 'remote_path' to 'local_path'. Preserve permissions and times
  * if 'pflag' is set
  */
-int do_download(int fd_in, int fd_out, char *remote_path, char *local_path,
-    int pflag);
+int do_download(int, int, char *, char *, int);
 
 /*
  * Upload 'local_path' to 'remote_path'. Preserve permissions and times
  * if 'pflag' is set
  */
-int do_upload(int fd_in, int fd_out, char *local_path, char *remote_path,
-    int pflag);
+int do_upload(int, int, char *, char *, int);
diff --git a/sftp-common.h b/sftp-common.h
index 6dc1a32..3e4f502 100644
--- a/sftp-common.h
+++ b/sftp-common.h
@@ -1,4 +1,4 @@
-/*	$OpenBSD: sftp-common.h,v 1.1 2001/02/04 11:11:54 djm Exp $	*/
+/*	$OpenBSD: sftp-common.h,v 1.2 2001/06/26 06:33:01 itojun Exp $	*/
 
 /*
  * Copyright (c) 2001 Markus Friedl.  All rights reserved.
@@ -39,17 +39,17 @@
 };
 
 /* Clear contents of attributes structure */
-void attrib_clear(Attrib *a);
+void attrib_clear(Attrib *);
 
 /* Convert from struct stat to filexfer attribs */
-void stat_to_attrib(struct stat *st, Attrib *a);
+void stat_to_attrib(struct stat *, Attrib *);
 
 /* Decode attributes in buffer */
-Attrib *decode_attrib(Buffer *b);
+Attrib *decode_attrib(Buffer *);
 
 /* Encode attributes to buffer */
-void encode_attrib(Buffer *b, Attrib *a);
+void encode_attrib(Buffer *, Attrib *);
 
 /* Convert from SSH2_FX_ status to text error message */
-const char *fx2txt(int status);
+const char *fx2txt(int);
 
diff --git a/sftp-glob.h b/sftp-glob.h
index 4206af4..37bd5d2 100644
--- a/sftp-glob.h
+++ b/sftp-glob.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: sftp-glob.h,v 1.3 2001/04/15 08:43:46 markus Exp $ */
+/* $OpenBSD: sftp-glob.h,v 1.4 2001/06/26 06:33:01 itojun Exp $ */
 
 /*
  * Copyright (c) 2001 Damien Miller.  All rights reserved.
@@ -27,6 +27,5 @@
 /* Remote sftp filename globbing */
 
 int
-remote_glob(int fd_in, int fd_out, const char *pattern, int flags,
-    int (*errfunc)(const char *, int), glob_t *pglob);
+remote_glob(int, int, const char *, int, int (*)(const char *, int), glob_t *);
 
diff --git a/sftp-int.h b/sftp-int.h
index b47f862..bbb138a 100644
--- a/sftp-int.h
+++ b/sftp-int.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: sftp-int.h,v 1.2 2001/04/12 23:17:54 mouring Exp $ */
+/* $OpenBSD: sftp-int.h,v 1.3 2001/06/26 06:33:02 itojun Exp $ */
 
 /*
  * Copyright (c) 2001 Damien Miller.  All rights reserved.
@@ -24,4 +24,4 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-void interactive_loop(int fd_in, int fd_out, char *file1, char *file2);
+void interactive_loop(int, int, char *, char *);
diff --git a/ssh-dss.h b/ssh-dss.h
index 0e6a20a..fe7e320 100644
--- a/ssh-dss.h
+++ b/ssh-dss.h
@@ -1,4 +1,4 @@
-/*	$OpenBSD: ssh-dss.h,v 1.3 2001/01/29 01:58:18 niklas Exp $	*/
+/*	$OpenBSD: ssh-dss.h,v 1.4 2001/06/26 06:33:02 itojun Exp $	*/
 
 /*
  * Copyright (c) 2000 Markus Friedl.  All rights reserved.
@@ -26,16 +26,8 @@
 #ifndef DSA_H
 #define DSA_H
 
-int
-ssh_dss_sign(
-    Key *key,
-    u_char **sigp, int *lenp,
-    u_char *data, int datalen);
+int	ssh_dss_sign(Key *, u_char **, int *, u_char *, int);
 
-int
-ssh_dss_verify(
-    Key *key,
-    u_char *signature, int signaturelen,
-    u_char *data, int datalen);
+int	ssh_dss_verify(Key *, u_char *, int, u_char *, int);
 
 #endif
diff --git a/ssh-rsa.h b/ssh-rsa.h
index af2b2fe..1e94c8b 100644
--- a/ssh-rsa.h
+++ b/ssh-rsa.h
@@ -1,4 +1,4 @@
-/*	$OpenBSD: ssh-rsa.h,v 1.3 2001/01/29 01:58:18 niklas Exp $	*/
+/*	$OpenBSD: ssh-rsa.h,v 1.4 2001/06/26 06:33:03 itojun Exp $	*/
 
 /*
  * Copyright (c) 2000 Markus Friedl.  All rights reserved.
@@ -26,16 +26,8 @@
 #ifndef SSH_RSA_H
 #define SSH_RSA_H
 
-int
-ssh_rsa_sign(
-    Key *key,
-    u_char **sigp, int *lenp,
-    u_char *data, int datalen);
+int	ssh_rsa_sign(Key *, u_char **, int *, u_char *, int);
 
-int
-ssh_rsa_verify(
-    Key *key,
-    u_char *signature, int signaturelen,
-    u_char *data, int datalen);
+int	ssh_rsa_verify(Key *, u_char *, int, u_char *, int);
 
 #endif
diff --git a/sshconnect.h b/sshconnect.h
index 1aa892f..c15ed4b 100644
--- a/sshconnect.h
+++ b/sshconnect.h
@@ -1,4 +1,4 @@
-/*	$OpenBSD: sshconnect.h,v 1.10 2001/06/23 02:34:32 markus Exp $	*/
+/*	$OpenBSD: sshconnect.h,v 1.11 2001/06/26 06:33:03 itojun Exp $	*/
 
 /*
  * Copyright (c) 2000 Markus Friedl.  All rights reserved.
@@ -27,27 +27,20 @@
 #define SSHCONNECT_H
 
 int
-ssh_connect(const char *host, struct sockaddr_storage * hostaddr,
-    u_short port, int connection_attempts,
-    int anonymous, struct passwd *pw,
-    const char *proxy_command);
+ssh_connect(const char *, struct sockaddr_storage *, u_short, int,
+    int, struct passwd *, const char *);
 
 void
-ssh_login(Key **keys, int nkeys, const char *orighost,
-    struct sockaddr *hostaddr, struct passwd *pw);
+ssh_login(Key **, int, const char *, struct sockaddr *, struct passwd *);
 
-int	verify_host_key(char *host, struct sockaddr *hostaddr, Key *host_key);
+int	verify_host_key(char *, struct sockaddr *, Key *);
 
-void	ssh_kex(char *host, struct sockaddr *hostaddr);
-void	ssh_kex2(char *host, struct sockaddr *hostaddr);
+void	ssh_kex(char *, struct sockaddr *);
+void	ssh_kex2(char *, struct sockaddr *);
 
-void
-ssh_userauth1(const char *local_user, const char *server_user, char *host,
-    Key **keys, int nkeys);
-void
-ssh_userauth2(const char *local_user, const char *server_user, char *host,
-    Key **keys, int nkeys);
+void	ssh_userauth1(const char *, const char *, char *, Key **, int);
+void	ssh_userauth2(const char *, const char *, char *, Key **, int);
 
-void	ssh_put_password(char *password);
+void	ssh_put_password(char *);
 
 #endif
diff --git a/sshlogin.h b/sshlogin.h
index f0d500e..05840c2 100644
--- a/sshlogin.h
+++ b/sshlogin.h
@@ -1,4 +1,4 @@
-/*	$OpenBSD: sshlogin.h,v 1.1 2001/03/04 01:46:30 djm Exp $	*/
+/*	$OpenBSD: sshlogin.h,v 1.2 2001/06/26 06:33:04 itojun Exp $	*/
 
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -20,30 +20,29 @@
  * The host from which the user logged in is stored in buf.
  */
 u_long
-get_last_login_time(uid_t uid, const char *logname,
-    char *buf, u_int bufsize);
+get_last_login_time(uid_t, const char *, char *, u_int);
 
 /*
  * Records that the user has logged in.  This does many things normally done
  * by login(1).
  */
 void
-record_login(pid_t pid, const char *ttyname, const char *user, uid_t uid,
-    const char *host, struct sockaddr *addr);
+record_login(pid_t, const char *, const char *, uid_t, const char *,
+		struct sockaddr *);
 
 #ifdef LOGIN_NEEDS_UTMPX
 /*
  * Record just the utmp info for /bin/login.
  */
 void
-record_utmp_only(pid_t pid, const char *ttyname, const char *user,
-		 const char *host, struct sockaddr * addr);
+record_utmp_only(pid_t, const char *, const char *, const char *, 
+		struct sockaddr *);
 #endif
 
 /*
  * Records that the user has logged out.  This does many thigs normally done
  * by login(1) or init.
  */
-void    record_logout(pid_t pid, const char *ttyname);
+void    record_logout(pid_t, const char *);
 
 #endif
diff --git a/sshpty.h b/sshpty.h
index d7aac0f..d962924 100644
--- a/sshpty.h
+++ b/sshpty.h
@@ -12,7 +12,7 @@
  * called by a name other than "ssh" or "Secure Shell".
  */
 
-/* RCSID("$OpenBSD: sshpty.h,v 1.1 2001/03/04 01:46:30 djm Exp $"); */
+/* RCSID("$OpenBSD: sshpty.h,v 1.2 2001/06/26 06:33:04 itojun Exp $"); */
 
 #ifndef SSHPTY_H
 #define SSHPTY_H
@@ -23,25 +23,23 @@
  * descriptors for the pty and tty sides and the name of the tty side are
  * returned (the buffer must be able to hold at least 64 characters).
  */
-int     pty_allocate(int *ptyfd, int *ttyfd, char *ttyname, int ttynamelen);
+int     pty_allocate(int *, int *, char *, int);
 
 /*
  * Releases the tty.  Its ownership is returned to root, and permissions to
  * 0666.
  */
-void    pty_release(const char *ttyname);
+void    pty_release(const char *);
 
 /*
  * Makes the tty the processes controlling tty and sets it to sane modes.
  * This may need to reopen the tty to get rid of possible eavesdroppers.
  */
-void    pty_make_controlling_tty(int *ttyfd, const char *ttyname);
+void    pty_make_controlling_tty(int *, const char *);
 
 /* Changes the window size associated with the pty. */
-void
-pty_change_window_size(int ptyfd, int row, int col,
-    int xpixel, int ypixel);
+void	pty_change_window_size(int, int, int, int, int);
 
-void	pty_setowner(struct passwd *pw, const char *ttyname);
+void	pty_setowner(struct passwd *, const char *);
 
 #endif				/* SSHPTY_H */
diff --git a/tildexpand.h b/tildexpand.h
index 88734f4..a30f0db 100644
--- a/tildexpand.h
+++ b/tildexpand.h
@@ -1,4 +1,4 @@
-/*	$OpenBSD: tildexpand.h,v 1.2 2001/01/29 01:58:19 niklas Exp $	*/
+/*	$OpenBSD: tildexpand.h,v 1.3 2001/06/26 06:33:06 itojun Exp $	*/
 
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -16,4 +16,4 @@
  * Expands tildes in the file name.  Returns data allocated by xmalloc.
  * Warning: this calls getpw*.
  */
-char   *tilde_expand_filename(const char *filename, uid_t my_uid);
+char   *tilde_expand_filename(const char *, uid_t);
diff --git a/uidswap.h b/uidswap.h
index 228e5a5..9aea883 100644
--- a/uidswap.h
+++ b/uidswap.h
@@ -1,4 +1,4 @@
-/*	$OpenBSD: uidswap.h,v 1.7 2001/04/06 21:00:17 markus Exp $	*/
+/*	$OpenBSD: uidswap.h,v 1.8 2001/06/26 06:33:06 itojun Exp $	*/
 
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -19,7 +19,7 @@
  * Temporarily changes to the given uid.  If the effective user id is not
  * root, this does nothing.  This call cannot be nested.
  */
-void    temporarily_use_uid(struct passwd *pw);
+void    temporarily_use_uid(struct passwd *);
 
 /*
  * Restores the original effective user id after temporarily_use_uid().
@@ -31,6 +31,6 @@
  * Permanently sets all uids to the given uid.  This cannot be called while
  * temporarily_use_uid is effective.  This must also clear any saved uids.
  */
-void    permanently_set_uid(struct passwd *pw);
+void    permanently_set_uid(struct passwd *);
 
 #endif				/* UIDSWAP_H */
diff --git a/uuencode.h b/uuencode.h
index 1a2d63f..fd8f3db 100644
--- a/uuencode.h
+++ b/uuencode.h
@@ -1,4 +1,4 @@
-/*	$OpenBSD: uuencode.h,v 1.6 2001/06/25 08:25:41 markus Exp $	*/
+/*	$OpenBSD: uuencode.h,v 1.7 2001/06/26 06:33:06 itojun Exp $	*/
 
 /*
  * Copyright (c) 2000 Markus Friedl.  All rights reserved.
@@ -26,7 +26,7 @@
 
 #ifndef UUENCODE_H
 #define UUENCODE_H
-int	uuencode(u_char *src, u_int srclength, char *target, size_t targsize);
-int	uudecode(const char *src, u_char *target, size_t targsize);
-void	dump_base64(FILE *fp, u_char *data, int len);
+int	uuencode(u_char *, u_int, char *, size_t);
+int	uudecode(const char *, u_char *, size_t);
+void	dump_base64(FILE *, u_char *, int);
 #endif
diff --git a/xmalloc.h b/xmalloc.h
index 59a598e..d04f102 100644
--- a/xmalloc.h
+++ b/xmalloc.h
@@ -14,21 +14,21 @@
  * called by a name other than "ssh" or "Secure Shell".
  */
 
-/* RCSID("$OpenBSD: xmalloc.h,v 1.5 2000/09/07 20:27:56 deraadt Exp $"); */
+/* RCSID("$OpenBSD: xmalloc.h,v 1.6 2001/06/26 06:33:07 itojun Exp $"); */
 
 #ifndef XMALLOC_H
 #define XMALLOC_H
 
 /* Like malloc, but calls fatal() if out of memory. */
-void   *xmalloc(size_t size);
+void   *xmalloc(size_t);
 
 /* Like realloc, but calls fatal() if out of memory. */
-void   *xrealloc(void *ptr, size_t new_size);
+void   *xrealloc(void *, size_t);
 
 /* Frees memory allocated using xmalloc or xrealloc. */
-void    xfree(void *ptr);
+void    xfree(void *);
 
 /* Allocates memory using xmalloc, and copies the string into that memory. */
-char   *xstrdup(const char *str);
+char   *xstrdup(const char *);
 
 #endif				/* XMALLOC_H */
