Experimental Physics and Industrial Control System
|
Andrew.
Thanks for the explanation - this makes sense. Not knowing about
the issue I had just used the old msi version.
One more question: I suppose 'dbLoadRecords()' does use macLib
so that
dbLoadRecords("file_with_<$(xxx,undefined)>.db", "xxx=value")
should work. Correct?
Thanks again
-- Till
Andrew Johnson wrote:
Hi Till,
On Thursday 22 October 2009 18:41:05 Till Straumann wrote:
I'm not a macLib MSI expert but just used
the MSI tool to do db expansions. One thing
I used to do a lot is use MSI for 'partial'
expansions where I leave some macros unexpanded.
This is still supported (as long as you're feeding the resulting files back
into macLib), although you need a new version of msi and you will still get a
warning message from it.
I noticed that with 3.14.10 the behavior
of macExpandString() changed drastically
which breaks things for me.
The change occurred when I added support for scoped macros in 3.14.10, but I
obviously forgot to list them in the release notes. However, read on...
Under 3.14.8.2
echo 'unexpanded=${XXX}' | msi
produces
unexpanded=${XXX}
on stdout and msi terminates without error.
Under 3.14.10 however, the same pipeline
produces
on stdout: unexpanded=$(XXX,undefined)
and
on stderr: input: unexpanded=${XXX}
which is in line 1 of file stdin
and terminates with an error.
A new version of msi was released on 2008-11-10, so using msi release 1-5
(with R3.14.11, but 3.14.10 is identical) I get this:
tux% echo 'unexpanded=${XXX}' | msi
unexpanded=$(XXX,undefined)
Warning: unexpanded macros in ouput
tux% echo $status
0
The Warning: line comes out on stderr and the main text on stdout just as
before; the new version does not terminate with an error status however. You
can add a -V flag to msi to get a more verbose warning message on stderr.
However, when it subsequently expands them again the macLib code will
completely ignore the ",undefined" part of the modified macro names, so you
can still feed the msi output straight into dbLoadRecords without any
problems.
Couldn't find anything in the release notes documenting
this rather drastic change.
Mea culpa, but it's not as drastic as you think as long as you upgrade msi and
aren't using some other code to expand the output files.
How can I convince macLib/MSI that I want undefined
macros to be copied verbatim?
You can't disable the addition of the ",undefined" flag in the current
version, or prevent the braces from being replaced by parentheses.
Scoped macros now allow you to define other macro values within the scope of
the one being expanded. If we define these:
X = $(Y_$(n))
Y_1 = A
Y_2 = B
then expanding $(X,n=1) temporarily defines n=1 so will return "A" and
$(X,n=2) will return "B", but in both cases the macro $(n) will never be
visible outside of the scope of the expansion of $(X). You can even
temporarily redefine other macros, so that expanding $(X,n=1,Y_1=C) $(X,n=1)
returns "C A". Demo:
tux% msi -M 'X=$(Y_$(n)),Y_1=A,Y_2=B'
$(X,n=1)
A
$(X,n=2)
B
$(X,n=1,Y_1=C) $(X,n=1)
C A
Default values have been available since R3.14.6, using the syntax $(X=def)
which will return "def" is X is not defined.
HTH,
- Andrew
- Replies:
- Re: macLib/msi changes with 3.14.10 Andrew Johnson
- References:
- macLib/msi changes with 3.14.10 Till Straumann
- Re: macLib/msi changes with 3.14.10 Andrew Johnson
- Navigate by Date:
- Prev:
Re: devLibOSD.c for Linux Elder Matias
- Next:
can't initialize record field with string haquin
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
<2009>
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Re: macLib/msi changes with 3.14.10 Andrew Johnson
- Next:
Re: macLib/msi changes with 3.14.10 Andrew Johnson
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
<2009>
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
|
ANJ, 31 Jan 2014 |
·
Home
·
News
·
About
·
Base
·
Modules
·
Extensions
·
Distributions
·
Download
·
·
Search
·
EPICS V4
·
IRMIS
·
Talk
·
Bugs
·
Documents
·
Links
·
Licensing
·
|