Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix perl syntax
[simgrid.git] / examples / gras_stub_generator
index d908888..2791ff5 100755 (executable)
@@ -15,7 +15,7 @@ eval qq{
 
 sub usage {
     my ($msg)=@_;
-    fail ($msg? "gras_stub_generator: $msg\n":"").
+    die ($msg? "gras_stub_generator: $msg\n":"").
         "gras_stub_generator: USAGE\n".
         "  gras_stub_generator project_name deployment_file\n"
 }
@@ -46,7 +46,7 @@ $warn
 
 #include <stdlib.h>
 #include <stdio.h>
-#include <msg.h>
+#include "msg/msg.h"
 #include <gras.h>
 
 char *gras_log=NULL;
@@ -62,18 +62,20 @@ foreach (keys %process) {
     print OUT<<EOF
 int launch_$_(int argc, char **argv) {
   char **myargv=argv;
+  int myargc=argc;
   int i;
+  int retcode;
     
   if (gras_log) {
     myargv=malloc((argc+1) * sizeof(char**));
     for (i=0; i<argc; i++)
       myargv[i] = argv[i];
-    myargv[argc++] = gras_log;
+    myargv[myargc++] = gras_log;
   }
-  $_(argc,argv);
+  retcode = $_(myargc,myargv);
   if (myargv != argv)
     free(myargv);
-  return 0;
+  return retcode;
 }
 
 EOF
@@ -85,10 +87,17 @@ print OUT <<EOF
 int main (int argc,char *argv[]) {
   int i,j;
 
-  /** Save the gras-log argument */
+  /* Save the gras-log argument of real command line to pass it to all processes */
   for (i=1; i<argc; i++) {
     if (!strncmp(argv[i],"--gras-log=",strlen("--gras-log="))) {
-      gras_log = argv[i];
+      if (gras_log) {
+        char *tmp=malloc(strlen(gras_log)+strlen(argv[i])+2);
+        sprintf(tmp,"%s %s",gras_log, argv[i]);
+        free(gras_log);
+        gras_log=tmp;
+      } else {
+         gras_log = strdup(argv[i]);
+      }
       for (j=i+1; j<argc; j++) {
        argv[j-1] = argv[j];
       } 
@@ -106,7 +115,7 @@ int main (int argc,char *argv[]) {
   /*  Simulation setup */
   MSG_global_init();
   MSG_set_verbosity(MSG_SILENT);
-  MSG_set_channel_number(GRAS_MAX_CHANNEL);
+  MSG_set_channel_number(10); // GRAS_MAX_CHANNEL hardcoded since Alvin killed its definition
   MSG_create_environment(argv[1]);
 
   /*  Application deployment */
@@ -122,6 +131,10 @@ print OUT <<EOF
   /*  Run the simulation */
   MSG_main();
 
+  /* cleanup the place */
+  MSG_clean();
+  if (gras_log)
+    free(gras_log);
   return 0;
 }
 $warn