Changeset 499 in Sophya for trunk/SophyaProg/Tests
- Timestamp:
- Oct 22, 1999, 8:06:48 PM (26 years ago)
- Location:
- trunk/SophyaProg/Tests
- Files:
-
- 1 added
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaProg/Tests/piapp.cc
r224 r499 1 1 #include <stdlib.h> 2 2 #include <stdio.h> 3 #ifdef OSF14 #include <dlfcn.h>5 #else6 #define C_NO_SHLIBS7 #endif8 3 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" 12 8 13 9 #include "timing.h" 14 #include " piinit.h"10 #include "outilsinit.h" 15 11 16 #include "pistdimgapp.h"17 12 18 13 … … 23 18 { 24 19 int ofa; 25 int fg sig, fgred;20 int fgfpe, fgsegv, fgred, fgexec; 26 21 27 PeidaIn teractiveInitiator piinit;22 PeidaInit(); 28 23 29 24 InitTim(); … … 35 30 { 36 31 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"); 38 38 exit(0); 39 39 } … … 41 41 42 42 ofa = 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; } 43 fgred = fgfpe = fgsegv = true; 44 fgexec = false; 45 string exfc; 46 // Pour fabriquer le help 47 bool fgtexh = false; 48 int ka; 49 for(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 } 48 64 65 if (fgexec) printf(">>>>> Starting piapp , Executing %s \n", exfc.c_str()); 66 else printf(">>>>> Starting piapp <<<<< \n"); 67 printf("Version: piapp=%g PI=%g PEIDA=%g \n", (double)PIAPP_VERSIONNUMBER, 68 (double)PI_VERSIONNUMBER, (float)PeidaVersion()); 49 69 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); 70 PIStdImgApp * app = new PIStdImgApp(narg, arg); 71 72 // Gestion de redirection stdout/err et Signaux 73 if (fgred) app->RedirectStdOutErr(true); 74 else app->RedirectStdOutErr(false); 75 app->CatchSignals(fgfpe, fgsegv); 76 77 // S'il y a un fichier de commande a executer 78 if (fgexec) app->CmdInterpreter()->Interpret(exfc); 79 80 // S'il y a besoin de faire le fichier Help 81 if (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 } 54 88 55 89 int rc = 0; … … 59 93 app->SetReady(); 60 94 if (fgred) app->RedirectStdOutErr(true); 61 TRY{95 try { 62 96 app->Run(); 63 } CATCH(merr) {97 } catch ( PException exc ) { 64 98 char ans[32],rep; 65 99 app->Stop(); … … 68 102 cout << endl; 69 103 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; 73 107 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(); } 76 117 } ENDTRY; 77 118 } 78 119 79 120 app->RedirectStdOutErr(false); 121 // On de-charge le module erospiamodule 80 122 delete app; 123 81 124 printf("piapp : Exiting .... Rc= %d \n", rc); 82 125 exit(rc);
Note:
See TracChangeset
for help on using the changeset viewer.