Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Readd this dead code to the tarball since removing it cleanly is harder
[simgrid.git] / examples / gras_stub_generator
index 63828eb..2791ff5 100755 (executable)
@@ -9,12 +9,13 @@
 # under the terms of the license (GNU LGPL) which comes with this package.
   
 use strict;
-use warnings;
-
+eval qq{
+  use warnings;
+}; # warnings not defined in 5.00503/sun4-solaris
 
 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"
 }
@@ -45,9 +46,11 @@ $warn
 
 #include <stdlib.h>
 #include <stdio.h>
-#include <msg.h>
+#include "msg/msg.h"
 #include <gras.h>
 
+char *gras_log=NULL;
+    
 EOF
  ;
 foreach (keys %process) { print OUT "int $_(int argc,char *argv[]);\n";        }
@@ -57,12 +60,22 @@ print OUT "\n$warn\n";
 
 foreach (keys %process) {
     print OUT<<EOF
-int launch_$_(int argc, char *argv[]) {
-  if (gras_process_init()) exit(1);
-  $_(argc,argv);
-  if (gras_process_finalize()) exit(1);
-
-  return 0;
+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[myargc++] = gras_log;
+  }
+  retcode = $_(myargc,myargv);
+  if (myargv != argv)
+    free(myargv);
+  return retcode;
 }
 
 EOF
@@ -72,16 +85,37 @@ print OUT "\n$warn\n";
 
 print OUT <<EOF
 int main (int argc,char *argv[]) {
+  int i,j;
+
+  /* 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="))) {
+      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];
+      } 
+      argv[j-1] = NULL;
+      argc--;
+      i--; /* compensate effect of next loop incrementation */
+    }
+  }
 
   if (argc != 3) {
-    fprintf(stderr, "Usage: %s platform_file application_description.txt\\n",argv[0]);
+    fprintf(stderr, "Usage: %s platform_file application_description.txt [--gras-log=...]\\n",argv[0]);
     exit(1);
   }
 
-  /*  Simulation setting */
+  /*  Simulation setup */
   MSG_global_init();
   MSG_set_verbosity(MSG_SILENT);
-  MSG_set_channel_number(MAX_CHANNEL);
+  MSG_set_channel_number(10); // GRAS_MAX_CHANNEL hardcoded since Alvin killed its definition
   MSG_create_environment(argv[1]);
 
   /*  Application deployment */
@@ -97,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
@@ -115,11 +153,6 @@ $warn
 #include <signal.h>
 #include <gras.h>
 
-/* signal handler for SIGPIPE from NWS */
-void SocketFailure(int sig);
-/* minimum needed from diagnostic.h for initialization, so that we don''t have to ship this file */
-typedef enum {DIAGLOG, DIAGINFO, DIAGWARN, DIAGERROR, DIAGFATAL, DIAGDEBUG} DiagLevels;
-void DirectDiagnostics(DiagLevels level, FILE *whereTo);
 /* user code */
 int $pname(int argc, char *argv[]);
 
@@ -128,19 +161,8 @@ $warn
 int main(int argc, char *argv[]){
   int errcode;
 
-  DirectDiagnostics(DIAGDEBUG, stdout);
-  DirectDiagnostics(DIAGINFO, stdout);
-  DirectDiagnostics(DIAGLOG, stdout);
-  DirectDiagnostics(DIAGWARN, stderr);
-  DirectDiagnostics(DIAGERROR, stderr);
-  DirectDiagnostics(DIAGFATAL, stderr);
-
-  signal(SIGPIPE, SocketFailure);
-
-  gras_process_init();
   errcode=$pname(argc,argv);
-  gras_process_finalize();
-
   return errcode;
 }