tags 198840 + patch
thanks

On Thu, 26 Jun 2003, Guus Sliepen wrote:
> On Thu, Jun 26, 2003 at 04:27:45AM +0200, Marc Lehmann wrote:
> > 1. rsh ignores it's name:
> > 
> >    ln -s /usr/bin/rsh ahostname
> >    ./ahostname
> >    ahostname: No host specified!
> > 
> >    this is a major showstopper for many people around me.
> 
> Hm, I never knew rsh did that, and I don't know if I want to implement
> that functionality.

Attached is a patch that should implement this functionality.

> What about replacing the symbolic link with a simple shell script?
> 
> #!/bin/sh
> exec rsh $* ahostname

That would probably be something like:

exec rsh `basename $0` ${1+"$@"}

-- 
-- arthur de jong - [EMAIL PROTECTED] - west consulting b.v. --
Index: rsh.c
===================================================================
--- rsh.c	(revision 71)
+++ rsh.c	(working copy)
@@ -136,15 +136,32 @@
 				return 1;
 		}
 	}
-	
-	if(optind == argc) {
-		fprintf(stderr, "%s: No host specified!\n", argv0);
-		usage();
-		return 1;
+
+	/* figure out basename of executable */
+	host = strrchr(argv0, '/');
+	if (host == NULL) {
+		host = argv0;
 	}
+	else {
+		host++;
+	}
+
+	/* if we were called with something else from rsh use the name as host */
+	if ( strcmp(host, "rsh") == 0 || strcmp(host, "rsh-redone-rsh") == 0 ) {
+		host = NULL;
+	}
+
+	/* get host from the command line */
+	if (host == NULL)
+	{
+		if(optind == argc) {
+			fprintf(stderr, "%s: No host specified!\n", argv0);
+			usage();
+			return 1;
+		}
+		host = argv[optind++];
+	}
 	
-	host = argv[optind++];
-	
 	if((p = strchr(host, '@'))) {
 		user = host;
 		*p = '\0';

Reply via email to