Hello Karl, > > Autoconf 2.66 added '+' to the set of allowed characters in --enable-* > > Why?
There were three reasons behind my proposal on bug-autoconf on 2010-03-13: 1) For --enable/--disable: So that programs can use --enable-c++, which is easier for the user to remember than either --enable-cxx or --enable-cpp. 2) For many libraries, --with options are used to specify the location of the library on the file system. This is done by GCC (see <http://gcc.gnu.org/install/configure.html>, which specifies e.g. --with-libart-prefix=PFX --disable-libarttest but also by packages which use the gnulib 'havelib' module. There are several libraries installed on a typical system that contain plus signs: libg++ libFLAC++ libgpgme++ libncurses++ Why should a user not be able to type --with-libg++-prefix=PFX ? 3) --with options are also used to designate programs, and there are programs that contain plus signs in their name. Some packages have options --enable-bison-regeneration --enable-flex-regeneration but without the proposal they were unable to have --enable-flex++-regeneration Yes, there is a program /usr/bin/flex++. Btw, there is also a GNU package called "GNU Common C++". In summary, it is not rare to have package names and library names that contain plus signs. > (That ++ causes endless hassle everywhere.) In my experience, '+' characters cause no more hassles than '-' and '.'. Neither of these characters are globbing characters in the shell. All three characters have a special meaning in regular expressions - but '-' and '.' were already supported in --enable and --with options, and known to not causes hassles. > I'd say the opposite: allowing lots of "random" characters makes it > harder for users to know/guess/remember option names. Aside from > technical issues with quoting and the like. I agree that characters which interfere with shell globbing (like '?', '*', ' ') or quoting should be avoided. But a '+' character is not more dangerous than a '.' or '-' character. Regarding what the users have to guess or remember: - For --enable-c++ you suggest to replace '+' with 'plus'. - Among the GCC installation options at <http://gcc.gnu.org/install/configure.html> there is an option --enable-build-with-cxx. So they decided that replacing '+' with 'x' was the most natural. - The GNU Common C++ project is to be found under 'commoncpp' on www.gnu.org and ftp.gnu.org. And there is a symlink commonc++ -> commoncpp, apparently because users would have to guess the transliteration from '+' to 'p'. Isn't this an indication that *not* allowing the '+' character makes it hard for the user to guess? And that allowing the '+' character will make it *easier* for the users? If I can't convince you, then I would propose to be silent about this question in the GNU standards for the moment, and revisit the issue in five years. In five years, we'll be able to tell whether allowing a configure option '--enable-c++' in programs will have caused "hassle everywhere". Bruno