Hi,

i'm using autoconf 2.14a (taken from cvs repository). it appears that
it behaves incompatibly with v2.13 WRT option value passing.

i'm using standard "sh" from Solaris 7 and AIX 4.2.1 to run configure
(with the same results). "bash" behaves differently WRT passing
backslashes, but configure should be run correctly in standard "sh"
anyway.

here is an example:

===============================

1) using autoconf 2.14a:

$ ls -l
total 4
-rw-r--r--   1 vvv      noc            0 Jun 29 11:32 Makefile.in
-rw-r--r--   1 vvv      noc           15 Jun 29 11:25 config.h.in
-rw-r--r--   1 vvv      noc          166 Jun 29 11:30 configure.in
$ cat config.h.in
#undef FEATURE
$ cat configure.in
AC_INIT(Makefile.in)
AC_ARG_ENABLE(feature, [  --enable-feature='STRING'],
  AC_DEFINE_UNQUOTED(FEATURE,"$enableval"))
AC_CONFIG_HEADER(config.h)
AC_OUTPUT(Makefile)
$ autoconf --version
autoconf (GNU autoconf) 2.14a
Written by David J. MacKenzie.

Copyright (C) 1992, 93, 94, 96, 99, 2000 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ autoconf
$ ./configure --enable-feature='abc\\\\nqwe'
creating ./config.status
creating Makefile
creating config.h
$ cat config.h
/* config.h.  Generated automatically by configure.  */
#define FEATURE "abc\nqwe"
$ ./configure --enable-feature='abc\\nqwe'
creating ./config.status
creating Makefile
creating config.h
$ cat config.h
/* config.h.  Generated automatically by configure.  */
#define FEATURE "abc
$ 

2) using autoconf 2.13:

$ ls -l
total 4
-rw-r--r--   1 vvv      noc            0 Jun 29 11:32 Makefile.in
-rw-r--r--   1 vvv      noc           15 Jun 29 11:25 config.h.in
-rw-r--r--   1 vvv      noc          166 Jun 29 11:30 configure.in
$  autoconf --version
Autoconf version 2.13
$ autoconf
$ ./configure --enable-feature='abc\\\\nqwe'
creating cache ./config.cache
updating cache ./config.cache
creating ./config.status
creating Makefile
creating config.h
$ cat config.h
/* config.h.  Generated automatically by configure.  */
#define FEATURE "abc\\nqwe"
$ ./configure --enable-feature='abc\\nqwe'
loading cache ./config.cache
creating ./config.status
creating Makefile
creating config.h
$ cat config.h
/* config.h.  Generated automatically by configure.  */
#define FEATURE "abc\nqwe"
$ 

===============================

As can be seen,

* when i pass an option --enable-feature='abc\\nqwe', i get:
#define FEATURE "abc\nqwe" for autoconf 2.13
broken result for autoconf 2.14a

* when i pass an option --enable-feature='abc\\\\nqwe', i get:
#define FEATURE "abc\\nqwe" for autoconf 2.13
#define FEATURE "abc\nqwe" for autoconf 2.13

This different behavior leads to various problems. :-(
Also, in both cases passing --enable-feature='abc\nqwe' leads to an error:

$ ./configure  --enable-feature='abc\nqwe'
configure: error: feature
qwe: invalid feature name

(in case of bash, this works fine).

Could you please

* make the behavior of autoconf 2.14a WRT passing backslashed chars in
  strings compatible with 2.13? (in particular, fix a bug with passing
  --enable-feature='abc\\nqwe' mentioned above)

* maybe allow one just to pass --enable-feature='abc\nqwe' and make it
  work like in bash.

Best,
v.

Reply via email to