diff --git a/clientloop.c b/clientloop.c
index dbac409..7644ff3 100644
--- a/clientloop.c
+++ b/clientloop.c
@@ -59,7 +59,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: clientloop.c,v 1.98 2002/03/21 16:58:13 markus Exp $");
+RCSID("$OpenBSD: clientloop.c,v 1.99 2002/03/21 23:07:37 markus Exp $");
 
 #include "ssh.h"
 #include "ssh1.h"
@@ -472,39 +472,33 @@
 }
 
 static void
-process_cmdline(Buffer *bin, Buffer *bout, Buffer *berr)
+process_cmdline(void)
 {
 	void (*handler)(int);
 	char *s, *cmd;
 	u_short fwd_port, fwd_host_port;
 	char buf[1024], sfwd_port[6], sfwd_host_port[6];
 	int local = 0;
-	int n;
 
 	leave_raw_mode();
  	handler = signal(SIGINT, SIG_IGN);
-	s = read_passphrase("\r\nssh> ", RP_ECHO);
+	cmd = s = read_passphrase("\r\nssh> ", RP_ECHO);
 	if (s == NULL)
 		goto out;
-	cmd = s;
-
 	while (*s && isspace(*s))
 		s++;
-
 	if (*s == 0)
 		goto out;
-
 	if (strlen(s) < 2 || s[0] != '-' || !(s[1] == 'L' || s[1] == 'R')) {
-		log("Invalid command");
+		log("Invalid command.");
 		goto out;
 	}
 	if (s[1] == 'L')
 		local = 1;
 	if (!local && !compat20) {
-		log("Not supported for SSH protocol version 1");
+		log("Not supported for SSH protocol version 1.");
 		goto out;
 	}
-
 	s += 2;
 	while (*s && isspace(*s))
 		s++;
@@ -513,25 +507,24 @@
 	    sfwd_port, buf, sfwd_host_port) != 3 &&
 	    sscanf(s, "%5[0-9]/%255[^/]/%5[0-9]",
 	    sfwd_port, buf, sfwd_host_port) != 3) {
-		log("Bad forwarding specification");
+		log("Bad forwarding specification.");
 		goto out;
 	}
 	if ((fwd_port = a2port(sfwd_port)) == 0 ||
 	    (fwd_host_port = a2port(sfwd_host_port)) == 0) {
-		log("Bad forwarding port(s)");
+		log("Bad forwarding port(s).");
 		goto out;
 	}
 	if (local) {
-		n = channel_setup_local_fwd_listener(fwd_port, buf,
-		    fwd_host_port, options.gateway_ports);
-		if (n <= 0) {
-			log("Port forwarding failed");
+		if (channel_setup_local_fwd_listener(fwd_port, buf,
+		    fwd_host_port, options.gateway_ports) < 0) {
+			log("Port forwarding failed.");
 			goto out;
 		}
 	} else
 		channel_request_remote_forwarding(fwd_port, buf,
 		    fwd_host_port);
-	log("Forwarding port");
+	log("Forwarding port.");
 out:
 	signal(SIGINT, handler);
 	enter_raw_mode();
@@ -664,7 +657,7 @@
 				continue;
 
 			case 'C':
-				process_cmdline(bin, bout, berr);
+				process_cmdline();
 				continue;
 
 			default:
