bin/112920: [PATCH]: wrong realpath(1) behaviour

Ighighi ighighi at gmail.com
Sat Aug 18 23:00:20 PDT 2007


The following reply was made to PR bin/112920; it has been noted by GNATS.

From: Ighighi <ighighi at gmail.com>
To: bug-followup at freebsd.org
Cc:  
Subject: Re: bin/112920: [PATCH]: wrong realpath(1) behaviour
Date: Sun, 19 Aug 2007 01:58:38 -0400

 This is a multi-part message in MIME format.
 --------------020007070406020003010508
 Content-Type: text/plain; charset=ISO-8859-1; format=flowed
 Content-Transfer-Encoding: 7bit
 
 The patch that should have been attached in the previous post.
 
 --------------020007070406020003010508
 Content-Type: text/x-patch;
  name="realpath.patch"
 Content-Transfer-Encoding: 7bit
 Content-Disposition: inline;
  filename="realpath.patch"
 
 #
 # (c) 2007 by Ighighi
 #
 # This patch adds support for multiple arguments to realpath(1) and
 # makes it use getopt(3). It also corrects the following problem:
 # http://www.freebsd.org/cgi/query-pr.cgi?pr=112920
 #
 
 --- src/bin/realpath/realpath.c.orig	Tue Apr  6 16:06:50 2004
 +++ src/bin/realpath/realpath.c	Thu May 24 18:28:49 2007
 @@ -44,13 +44,26 @@
  {
  	char buf[PATH_MAX];
  	char *p;
 +	int ch;
  
 -	if (argc == 2) {
 -		if ((p = realpath(argv[1], buf)) == NULL)
 -			err(1, "%s", buf);
 -	} else
 +	while ((ch = getopt(argc, argv, "")) != -1)
 +		switch(ch) {
 +		case '?':
 +		default:
 +			usage();
 +		}
 +	argc -= optind;
 +	argv += optind;
 +
 +	if (argc < 1)
  		usage();
 -	(void)printf("%s\n", p);
 +
 +	do {
 +		if ((p = realpath(*argv, buf)) == NULL)
 +			err(1, "%s", *argv);
 +		else
 +			(void)printf("%s\n", p);
 +	} while (*++argv != NULL);
  	exit(0);
  }
  
 @@ -58,6 +71,6 @@
  usage(void)
  {
  
 -	(void)fprintf(stderr, "usage: realpath path\n");
 +	(void)fprintf(stderr, "usage: realpath path [...]\n");
    	exit(1);
  }
 --- src/bin/realpath/realpath.1.orig	Sun Jan 16 12:41:58 2005
 +++ src/bin/realpath/realpath.1	Thu May 24 03:20:11 2007
 @@ -42,6 +42,7 @@
  .Sh SYNOPSIS
  .Nm
  .Ar path
 +.Op Ar ...
  .Sh DESCRIPTION
  The
  .Nm
 
 --------------020007070406020003010508--


More information about the freebsd-bugs mailing list