-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 According to Ralf Wildenhues on 3/30/2006 11:54 PM: > > FWIW, I wonder whether using expr at all for general names is a good > idea, as the documented bug on Tru64 that turns everything into a number > that looks like one (after other operations): > $ expr 'X000123.c' : 'X\(.*\)\.c' > 123
AS_BASENAME attempts the platform's basename before falling back to expr; it only filters out missing basename or instances of basename that mishandle /. If Tru64 has a working basename, then the expr bug will not hit us when doing AS_BASENAME[(foo/01)]; but that does not prevent the above suffix stripping bug unless we improve AS_BASENAME to take an optional suffix argument. Do we have anyone that can verify whether Tru64 will always have a working basename? Should we beef up _AS_EXPR_PREPARE to also refuse to use expr if it mishandles numeric string pattern matches? Also, I noticed that where basename is missing, AS_BASENAME mishandles /// (it was outputting . instead of /), patched thusly: 2006-03-31 Eric Blake <[EMAIL PROTECTED]> * lib/m4sugar/m4sh.m4 (AS_BASENAME_EXPR): Correctly handle ///. - -- Life is short - so eat dessert first! Eric Blake [EMAIL PROTECTED] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2.1 (Cygwin) Comment: Public key at home.comcast.net/~ericblake/eblake.gpg Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFELUMs84KuGfSFAYARAtS3AJ9Hf1TfOamkIHRDtCceM7rdHYnnyQCgn0r8 QC8kwyUNL7cBmDZitKrDln8= =zguC -----END PGP SIGNATURE-----
Index: lib/m4sugar/m4sh.m4 =================================================================== RCS file: /sources/autoconf/autoconf/lib/m4sugar/m4sh.m4,v retrieving revision 1.165 diff -u -p -r1.165 m4sh.m4 --- lib/m4sugar/m4sh.m4 27 Mar 2006 17:42:18 -0000 1.165 +++ lib/m4sugar/m4sh.m4 31 Mar 2006 14:54:30 -0000 @@ -706,8 +706,7 @@ m4_defun([AS_BASENAME_EXPR], [AS_REQUIRE([_AS_EXPR_PREPARE])dnl $as_expr X/[]$1 : '.*/\([[^/][^/]*]\)/*$' \| \ X[]$1 : 'X\(//\)$' \| \ - X[]$1 : 'X\(/\)$' \| \ - . : '\(.\)']) + X[]$1 : 'X\(/\)' \| .]) m4_defun([AS_BASENAME_SED], [echo X/[]$1 |