plugger.py
changeset 57 3b53f9a509d9
parent 51 c31c55601556
child 62 ddf0cdd71558
--- 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)