[sr-dev] git:master: cfg: extended preprocessor directives

Daniel-Constantin Mierla miconda at gmail.com
Sat Apr 24 00:18:08 CEST 2010


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



More information about the sr-dev mailing list