I bet you have never tried to deploy this in the real world in an environment with a useful number of heterogeneous OS installations running at different OS rev levels.
In my experience this simply doesn't scale. Especially if it gets used in somebody's shell RC files. Your approach still "special cases" linux distributions, and is still limited to detecting libc versions. There are a lot of other places this can be be useful, and requiring separate tests for what is generally determinable by using the OS name and version (distribution name for linux) has been a far faster and simpler way to go in my experience. H -- > Harlan Stenn wrote: > > > If the releases are all that similar, why not use: > > > > i686-GnuLinux-* > > > > as your test, and provide the "popular" distributions in the 3rd field? > > This is a little more reasonable, since it allows to check for Linux with > a single test. But the fundamental problem remains: your proposal still makes > it hard to fork a new distribution. > > > for specifying > > what OS partition to mount for automounters, just to name one example. > > An autoconf test should do it: Test for /afs, /auto and similar. > > > Different OS versions often have different libc versions (for example), so > > while it may be easy to run a SunOS5 binary on later versions of the OS, it > > may not be possible to run a SunOS9 binary on earlier versions of the OS. > > This too is best made with an autoconf test. Find attached an autoconf > test for glibc >= 2.1. You can adapt it to test for any glibc version. > > Bruno > > > ======================================================================= > # glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40) > dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. > dnl This file is free software, distributed under the terms of the GNU > dnl General Public License. As a special exception to the GNU General > dnl Public License, this file may be distributed as part of a program > dnl that contains a configuration script generated by Autoconf, under > dnl the same distribution terms as the rest of that program. > > # Test for the GNU C Library, version 2.1 or newer. > # From Bruno Haible. > > AC_DEFUN([jm_GLIBC21], > [ > AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, > ac_cv_gnu_library_2_1, > [AC_EGREP_CPP([Lucky GNU user], > [ > #include <features.h> > #ifdef __GNU_LIBRARY__ > #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) > Lucky GNU user > #endif > #endif > ], > ac_cv_gnu_library_2_1=yes, > ac_cv_gnu_library_2_1=no) > ] > ) > AC_SUBST(GLIBC21) > GLIBC21="$ac_cv_gnu_library_2_1" > ] > ) >