[sr-dev] git:master: cfg: extended preprocessor directives
Daniel-Constantin Mierla
miconda at gmail.com
Sat Apr 24 00:25:03 CEST 2010
some lines starting with '#' where auto-stripped from git commit, so again:
>>
cfg: extended preprocessor directives
- you can define values for IDs
#!define MYINT 123
#!define MYSTR "xyz"
- defined IDs are replaced at startup, during config parsing, e.g.,:
$var(x) = 100 + MYINT;
- is interpreted as:
$var(x) = 100 + 123;
- you can have multi-line defined IDs
#!define IDLOOP $var(i) = 0; \
while($var(i)<5) { \
xlog("++++ $var(i)\n"); \
$var(i) = $var(i) + 1; \
}
- then in routing block
route {
...
IDLOOP
...
}
- new preprocessor directive
#!subst "/regexp/subst/"
- perform substitutions inside the strings of config (note that define is
replacing only IDs - alphanumeric tokens not enclosed in quotes)
- #!subst offers an easy way to search and replace inside strings before
cfg parsing. E.g.,:
#!subst "/DBPASSWD/xyz/"
modparam("acc", "db_url", "mysql://user:DBPASSWD@localhost/db")
- will do the substitution of db password in db_url parameter value
- number of allowed defines set to 256
- credits to Andrei for quick hints on ID defines
- notes:
- multilines defines are reduced to single line, so line counter
should be fine
- column counter goes inside the define value, but you have to omit
the \ and CR for the accurate inside-define position
On 4/24/10 12:18 AM, Daniel-Constantin Mierla wrote:
> Module: sip-router
> Branch: master
> Commit: 20cddb28e968d8e0f79a7910d3cc83fa6f40887f
> URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=20cddb28e968d8e0f79a7910d3cc83fa6f40887f
>
> Author: Daniel-Constantin Mierla<miconda at gmail.com>
> Committer: Daniel-Constantin Mierla<miconda at gmail.com>
> Date: Fri Apr 23 23:58:43 2010 +0200
>
> cfg: extended preprocessor directives
>
> - you can define values for IDs
> - defined IDs are replaced at startup, during config parsing, e.g.,:
> $var(x) = 100 + MYINT;
> - is interpreted as:
> $var(x) = 100 + 123;
> - you can have multi-line defined IDs
> while($var(i)<5) { \
> xlog("++++ $var(i)\n"); \
> $var(i) = $var(i) + 1; \
> }
> - then in routing block
> route {
> ...
> IDLOOP
> ...
> }
> - new preprocessor directive
> - perform substitutions inside the strings of config (not that define is
> replacing only IDs - alphanumeric tokens not enclosed in quotes)
> - #!subst offers an easy way to search and replace inside strings before
> cfg parsing. E.g.,:
> modparam("acc", "db_url", "mysql://user:DBPASSWD@localhost/db")
> - will do the substitution of db password in db_url parameter value
> - number of allowed defines set to 256
> - credits to Andrei for quick hints on ID defines
> - notes:
> - multilines defines are reduced to single line, so line counter
> should be fine
> - column counter goes inside the define value, but you have to omit
> the \ and CR for the accurate inside-define position
>
> ---
>
> cfg.lex | 137 +++++++++++++++++++++++++++++++++++++++++++++++++++++----------
> cfg.y | 8 ++++
> ppcfg.c | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++++
> ppcfg.h | 30 ++++++++++++++
> 4 files changed, 270 insertions(+), 21 deletions(-)
>
> Diff: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commitdiff;h=20cddb28e968d8e0f79a7910d3cc83fa6f40887f
>
> _______________________________________________
> sr-dev mailing list
> sr-dev at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>
--
Daniel-Constantin Mierla
* http://www.asipto.com/
* http://twitter.com/miconda
* http://www.linkedin.com/in/danielconstantinmierla
More information about the sr-dev
mailing list