--- a/plugger.py Tue Sep 25 10:30:51 2007 +0200
+++ b/plugger.py Mon Oct 01 21:44:40 2007 +0200
@@ -800,13 +800,13 @@
# Generate main
locstrs = map(lambda x:"_".join(map(str,x)), [loc for loc,Cfiles,DoCalls in LocationCFilesAndCFLAGS if loc and DoCalls])
plc_main = runtime.code("plc_common_main") % {
- "calls_prototypes":"".join(
- ["void __init_%(s)s();\nvoid __cleanup_%(s)s();\nvoid __retrive_%(s)s();\nvoid __publish_%(s)s();"%
+ "calls_prototypes":"\n".join(
+ ["int __init_%(s)s(int argc,char **argv);\nvoid __cleanup_%(s)s();\nvoid __retrive_%(s)s();\nvoid __publish_%(s)s();"%
{'s':locstr} for locstr in locstrs]),
- "retrive_calls":"".join([" __retrive_%(s)s();"%{'s':locstr} for locstr in locstrs]),
- "publish_calls":"".join([" __publish_%(s)s();"%{'s':locstr} for locstr in locstrs]),
- "init_calls":"".join([" __init_%(s)s();"%{'s':locstr} for locstr in locstrs]),
- "cleanup_calls":"".join([" __cleanup_%(s)s();"%{'s':locstr} for locstr in locstrs])}
+ "retrive_calls":" \n".join(["__retrive_%(s)s();"%{'s':locstr} for locstr in locstrs]),
+ "publish_calls":" \n".join(["__publish_%(s)s();"%{'s':locstr} for locstr in locstrs]),
+ "init_calls":" \n".join(["init_level++; if(res = __init_%(s)s(argc,argv)) return res;"%{'s':locstr} for locstr in locstrs]),
+ "cleanup_calls":" \n".join(["if(init_level-- > 0) __cleanup_%(s)s();"%{'s':locstr} for locstr in locstrs])}
target_name = self.BeremizRoot.TargetType.content["name"]
plc_main += runtime.code("plc_%s_main"%target_name)