Parse File at compile time, but not embedded

Alex Parrill via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Jun 6 14:31:32 PDT 2016


On Monday, 6 June 2016 at 17:31:52 UTC, Pie? wrote:
> Is it possible to parse a file at compile time without 
> embedding it into the binary?
>
> I have a sort of "configuration" file that defines how to 
> create some objects. I'd like to be able to read how to create 
> them but not have that config file stick around in the binary.
>
> e.g., (simple contrived example follows)
>
> Config.txt
>    x, my1
>    y, my1
>    z, my2
>
>
> class my1 { }
> class my2 { }
>
> void parseConfig(A)
> {
>     ....
> }
>
> void main()
> {
>    parseConfig('Config.txt') // Effectively creates a mixin 
> that mixes in auto x = new my1; auto y = new my1; auto z = new 
> my2;
> }
>
>
> If parseConfig uses import('Config.txt') then config.txt will 
> end up in the binary which I do not want. It would be easier to 
> be able to use import and strip it out later if possible. 
> Config.txt may contain secure information, which is why is 
> doesn't belong in the binary.

Most compilers, I believe, will not embed a string if it is not 
used anywhere at runtime. DMD might not though, I'm not sure.

But reading sensitive data at compile-time strikes me as 
dangerous, depending on your use case. If you are reading 
sensitive information at compile time, you are presumably going 
to include that information in your binary (otherwise why would 
you read it?), and your binary is not secure.


More information about the Digitalmars-d-learn mailing list