Date: Sun, 27 Oct 2002 16:34:51 -0800 From: Juli Mallett <jmallett@FreeBSD.org> To: Garrett Wollman <wollman@FreeBSD.org> Cc: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/bin/expr expr.1 expr.y src/include unistd.h src/lib/libc/gen Makefile.inc check_utility_compat.3 check_utility_compat.c Message-ID: <20021027163451.A69160@FreeBSD.org> In-Reply-To: <20021027162523.A68817@FreeBSD.org>; from jmallett@FreeBSD.org on Sun, Oct 27, 2002 at 04:25:23PM -0800 References: <200210280015.g9S0Fhfp042683@repoman.freebsd.org> <20021027162523.A68817@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
* De: Juli Mallett <jmallett@FreeBSD.org> [ Data: 2002-10-27 ]
[ Subjecte: Re: cvs commit: src/bin/expr expr.1 expr.y src/include unistd.h src/lib/libc/gen Makefile.inc check_utility_compat.3 check_utility_compat.c ]
> * De: Garrett Wollman <wollman@FreeBSD.org> [ Data: 2002-10-27 ]
> [ Subjecte: cvs commit: src/bin/expr expr.1 expr.y src/include unistd.h src/lib/libc/gen Makefile.inc check_utility_compat.3 check_utility_compat.c ]
> > wollman 2002/10/27 16:15:43 PST
> >
> > Modified files:
> > bin/expr expr.1 expr.y
> > include unistd.h
> > lib/libc/gen Makefile.inc
> > Added files:
> > lib/libc/gen check_utility_compat.3
> > check_utility_compat.c
> > Log:
> > Create a small library function, check_utility_compat(3), to determine
> > whether a named utility should behave in FreeBSD 4.x-compatible mode
> > or in a standard mode (default standard). The configuration is done
> > malloc(3)-style, with either an environment variable or a symlink.
> >
> > Update expr(1) to use this new interface.
>
> in libc!? I dunno, isn't that a bit frivilous? Our libc is big enough
> without freebsd-base-system-only-and-even-few-there stuff in it... What
> about libutil or something?
After further thought though, a generic "check_interface_version" or
such, which would do such as...
int
check_interface_version(const char *interface, char **version)
{
char *env;
char *setting;
int error;
error = 0;
asprintf(&env, "%s_INTERFACE_VERSION", interface);
if (env == NULL) {
/* XXX check some symlink */
error = 1;
goto out;
}
setting = getenv(env);
if (setting == NULL) {
error = 1;
goto out;
}
out:
free(env);
*version = setting;
return (error);
}
And allow me to check_interface_version("xargs", &iv);
And do if (strcasecmp(iv, "GNU") == 0) { enable_dodgy_args = 1; }
Or some such.
I think "FreeBSD 4 compatability" is too specific to check for, in and
of itself.
--
Juli Mallett <jmallett@FreeBSD.org> | FreeBSD: The Power To Serve
Will break world for fulltime employment. | finger jmallett@FreeBSD.org
http://people.FreeBSD.org/~jmallett/ | Support my FreeBSD hacking!
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021027163451.A69160>
