Changeset 499 in Sophya for trunk/SophyaProg/Tests


Ignore:
Timestamp:
Oct 22, 1999, 8:06:48 PM (26 years ago)
Author:
ansari
Message:

modifs piapp et ajout tobjio.cc Reza 22/10/99

Location:
trunk/SophyaProg/Tests
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaProg/Tests/piapp.cc

    r224 r499  
    11#include <stdlib.h>
    22#include <stdio.h>
    3 #ifdef OSF1
    4 #include <dlfcn.h>
    5 #else
    6 #define C_NO_SHLIBS
    7 #endif
    83
    9 #include <string>
    10 #include "psighand.h"
    11 #include "dynccd.h"
     4#include "pistdimgapp.h"
     5#include "piacmd.h"
     6#include "piversion.h"
     7#include "piaversion.h"
    128
    139#include "timing.h"
    14 #include "piinit.h"
     10#include "outilsinit.h"
    1511
    16 #include "pistdimgapp.h"
    1712
    1813
     
    2318{
    2419int ofa;
    25 int fgsig, fgred;
     20int fgfpe, fgsegv, fgred, fgexec;
    2621
    27 PeidaInteractiveInitiator piinit;
     22PeidaInit();
    2823   
    2924InitTim();
     
    3530    {
    3631    puts("\n piapp: Programme d'analyse interactive ");
    37     puts("Usage: piapp [-nored] [-nosig]");
     32    puts("Usage: piapp [-nored] [-nosig] [-nosigfpe] [-nosigsegv] [-help2tex] [-exec file [args]]");
     33    puts("  -nored : NoRedirect StdOut/StdErr");
     34    puts("  -nosig : Don't catch SigFPE, SigSEGV");
     35    puts("  -nosigfpe -nosigsegv: Don't catch SigFPE / SigSEGV");
     36    puts("  -help2tex: Create a LaTeX help file (piahelp.tex)");
     37    puts("  -exec file [args] : Execute command file \n");
    3838    exit(0);
    3939    }
     
    4141
    4242ofa = 1;
    43 fgred = fgsig = true;
    44 if (  (narg > 1) && (strcmp(arg[1],"-nored") == 0) )  { fgred=false;  ofa = 2; }
    45 if (  (narg > 1) && (strcmp(arg[1],"-nosig") == 0) )  { fgsig=false;  ofa = 2; }
    46 if (  (narg > 2) && (strcmp(arg[2],"-nored") == 0) )  { fgred=false;  ofa = 3; }
    47 if (  (narg > 2) && (strcmp(arg[2],"-nosig") == 0) )  { fgsig=false;  ofa = 3; }
     43fgred = fgfpe = fgsegv = true;
     44fgexec = false;
     45string exfc;
     46// Pour fabriquer le help
     47bool fgtexh = false;
     48int ka;
     49for(ka=1; ka<narg; ka++) {
     50  if (strcmp(arg[ka],"-nored") == 0)   fgred=false;
     51  else if (strcmp(arg[ka],"-nosig") == 0)   fgfpe=fgsegv=false;
     52  else if (strcmp(arg[ka],"-nosigfpe") == 0)   fgfpe=false;
     53  else if (strcmp(arg[ka],"-nosigsegv") == 0)   fgsegv=false;
     54  else if (strcmp(arg[ka],"-help2tex") == 0) { fgtexh=true; fgred=false; }
     55  else if (strcmp(arg[ka],"-exec") == 0) {
     56    if (ka < narg-1) {
     57      fgexec = true;
     58      exfc = "exec";
     59      for(int kaa=ka+1; kaa<narg; kaa++)  { exfc += ' ';  exfc +=  arg[kaa]; }
     60      }
     61    break;
     62    }
     63  }
    4864
     65if (fgexec) printf(">>>>> Starting piapp , Executing %s \n", exfc.c_str());
     66else printf(">>>>> Starting piapp <<<<< \n");
     67printf("Version: piapp=%g  PI=%g  PEIDA=%g \n", (double)PIAPP_VERSIONNUMBER,
     68              (double)PI_VERSIONNUMBER, (float)PeidaVersion());
    4969
    50 PIStdImgApp * app = new PIStdImgApp(narg-ofa, arg+ofa);
    51 if (!fgred) app->RedirectStdOutErr(false);
    52 else app->RedirectStdOutErr(true);
    53 if (fgsig)  app->CatchSignals(true);
     70PIStdImgApp * app = new PIStdImgApp(narg, arg);
     71
     72// Gestion de redirection stdout/err et Signaux
     73if (fgred) app->RedirectStdOutErr(true);
     74else app->RedirectStdOutErr(false);
     75app->CatchSignals(fgfpe, fgsegv);
     76
     77// S'il y a un fichier de commande a executer
     78if (fgexec) app->CmdInterpreter()->Interpret(exfc);
     79
     80// S'il y a besoin de faire le fichier Help
     81if (fgtexh) {
     82  string thf = "piahelp.tex";
     83  app->CmdInterpreter()->HelptoLaTex(thf);
     84  printf("piapp : Help file piahelp.tex created --> exit(0) \n");
     85  delete app;
     86  exit(0);
     87}
    5488
    5589int rc = 0;
     
    5993  app->SetReady();
    6094  if (fgred) app->RedirectStdOutErr(true);
    61   TRY {
     95  try {
    6296  app->Run();
    63   }  CATCH(merr) {
     97  }  catch ( PException exc ) {
    6498     char ans[32],rep;
    6599     app->Stop();
     
    68102     cout << endl;
    69103     cerr << endl;
    70      printf("PIStdImg/main() Exception catched ! = %ld (%s) \n", (long)merr, PeidaExc(merr));
    71      printf(" exit <CR> , continue c<CR> , close-windows, continue k<cr> ? ");  gets(ans);
    72      rc = merr;
     104     cerr << "PIStdImg/main() Exception catched ! " << exc.Msg() << endl;
     105     cerr << " continue <CR> , Stop program S<CR> ? " << endl;  gets(ans);
     106     rc = 9;
    73107     rep = toupper(ans[0]); 
    74      if ((rep != 'C')||(rep != 'K'))  cont = false;
    75      else { cont = true; if (rep == 'K') app->CloseAllWindows(); }
     108     if (rep == 'S')  {
     109       printf(" !!!! Stopping piapp !!!! \n");
     110       cont = false;
     111       }
     112     else {
     113       printf(" *** piapp - Continuing event loop *** \n");
     114       cont = true;
     115       }
     116//     else { cont = true; if (rep == 'K') app->CloseAllWindows(); }
    76117  } ENDTRY;
    77118}
    78119
    79120app->RedirectStdOutErr(false); 
     121// On de-charge le module erospiamodule
    80122delete app;
     123
    81124printf("piapp : Exiting .... Rc= %d \n", rc);
    82125exit(rc);
Note: See TracChangeset for help on using the changeset viewer.