Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 30 Jun 2002 05:10:04 -0700 (PDT)
From:      W Gerald Hicks <gehicks@gehicks.dyndns.org>
To:        freebsd-bugs@FreeBSD.org
Subject:   Re: kern/40017: [patch] allows config(8) to specify config metadata  directory
Message-ID:  <200206301210.g5UCA4x5035631@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/40017; it has been noted by GNATS.

From: W Gerald Hicks <gehicks@gehicks.dyndns.org>
To: freebsd-gnats-submit@FreeBSD.org, gehicks@gehicks.dyndns.org
Cc:  
Subject: Re: kern/40017: [patch] allows config(8) to specify config metadata 
 directory
Date: Sun, 30 Jun 2002 12:09:04 +0000

 This is a multi-part message in MIME format.
 --------------1E1DA5F85B1983B10AF22F07
 Content-Type: text/plain; charset=us-ascii
 Content-Transfer-Encoding: 7bit
 
 Ouch.
 
 I fouled up the previous patch.  We need to resolve the configuration
 directory to keep from breaking /usr/src 'kernel' target. D'oh!
 
 Replace the patch for config:main.c with this one
 
 Cheers,
 
 Jerry Hicks
 gehicks@gehicks.dyndns.org
 --------------1E1DA5F85B1983B10AF22F07
 Content-Type: text/plain; charset=us-ascii;
  name="config:main.c.patch"
 Content-Transfer-Encoding: 7bit
 Content-Disposition: inline;
  filename="config:main.c.patch"
 
 Index: src/usr.sbin/config/main.c
 ===================================================================
 RCS file: /home/ncvs/src/usr.sbin/config/main.c,v
 retrieving revision 1.55
 diff -u -r1.55 main.c
 --- src/usr.sbin/config/main.c	25 Feb 2002 21:59:57 -0000	1.55
 +++ src/usr.sbin/config/main.c	30 Jun 2002 07:46:02 -0000
 @@ -68,16 +68,21 @@
  #endif
  
  #define	CDIR	"../compile/"
 +#define CONFDIR "../../conf/"
  
  char *	PREFIX;
  char 	destdir[MAXPATHLEN];
 +char *	srcdiropt;
  char 	srcdir[MAXPATHLEN];
 +char *	confdiropt;
 +char	confdir[MAXPATHLEN];
  
  int	debugging;
  int	profiling;
  
  static void configfile(void);
  static void get_srcdir(void);
 +static void get_confdir(void);
  static void usage(void);
  static void cleanheaders(char *);
  
 @@ -99,14 +104,20 @@
  	char *p;
  	char xxx[MAXPATHLEN];
  
 -	while ((ch = getopt(argc, argv, "d:gp")) != -1)
 +	while ((ch = getopt(argc, argv, "c:d:s:gp")) != -1)
  		switch (ch) {
 +		case 'c':
 +			confdiropt = strdup(optarg);
 +			break;
  		case 'd':
  			if (*destdir == '\0')
  				strlcpy(destdir, optarg, sizeof(destdir));
  			else
  				errx(2, "directory already set");
  			break;
 +		case 's':
 +			srcdiropt = strdup(optarg);
 +			break;
  		case 'g':
  			debugging++;
  			break;
 @@ -136,6 +147,12 @@
  		strlcat(destdir, PREFIX, sizeof(destdir));
  	}
  
 +	get_confdir();
 +	len = strlen(confdir);
 +	if(len && confdir[len - 1] != '/')
 +		strlcat(confdir, "/", sizeof(confdir));
 +	printf("XXXXX %s XXXXX\n", confdir);
 +
  	p = path((char *)NULL);
  	if (stat(p, &buf)) {
  		if (mkdir(p, 0777))
 @@ -183,9 +200,26 @@
  static void
  get_srcdir(void)
  {
 -
 -	if (realpath("../..", srcdir) == NULL)
 +	if(srcdiropt) {
 +		if(realpath(srcdiropt, srcdir) == NULL)
 +			errx(2, "Unable to find root of source tree");
 +	} else if (realpath("../..", srcdir) == NULL)
  		errx(2, "Unable to find root of source tree");
 +}
 +
 +/*
 + * get_confdir
 + *	determine the conf metadata directory and
 + *	save that in confdir
 + */
 +static void
 +get_confdir(void)
 +{
 +	if(confdiropt) {
 +		if(realpath(confdiropt, confdir) == NULL)
 +			errx(2, "Unable to find configuration directory");
 +	} else if (realpath(CONFDIR, confdir) == NULL)
 +			errx(2, "Unable to find configuration directory");
  }
  
  static void
 
 --------------1E1DA5F85B1983B10AF22F07--
 

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200206301210.g5UCA4x5035631>