Hi Eric, * Eric Blake wrote on Sun, Apr 09, 2006 at 03:17:36PM CEST: > > > Erm, instead of the > > :; $1 > > > > could we just have > > m4_default([$1], [:]) > > > > please? This avoids the size overhead incurred for the non-pathological > > case. > > Except that with your idea, with AT_CHECK([ ]) (note the space), the > m4_default > sees it as non-empty but shell syntax disagrees.
So? In my eyes ` ' simply isn't a valid test. We don't have to make everything work here. I thought you were just trying to prevent inadvertent failures, and not just failures due to all kinds of user silliness. > I went the course of minimally invasive patch, by always ensuring > valid syntax (assuming, of course, that the shell snippet handed to > AT_CHECK is also valid outside of a subshell), rather than trying to > play m4 games to guess when syntax is valid. Of course, how we handle > something like AT_CHECK([;]) is up in the air, since by itself, ";" is > not valid as a script outside of a subshell, nor would it be valid > with either of our proposals. Easy: we don't handle it. I know this whole discussion has a color-of-bike-shed touch, but: the macro you are changing lies in the hottest path of both autom4te and shell execution: it's expanded 1500 times in the Autoconf test suite; let's avoid unnecessary stuff in there if we can; even more so, when the concerns we have are completely theoretical. I have a real argument against `:;': it clutters the trace output of ./testsuite -x by adding a line + : where, each time, I will wonder whether some variable default-initialization may have happened as side-effect. Cheers, Ralf
