Initial version of donated sources by Avertec, 3.4p5.
[tas-yagle.git] / distrib / sources / yagle / xyagle / XYA_cgvfig.c
1 /*------------------------------------------------------------\
2 | |
3 | Tool : XYAG |
4 | |
5 | File : Cgv.c |
6 | |
7 | Authors : Jacomme Ludovic |
8 | Lester Anthony |
9 | |
10 \------------------------------------------------------------*/
11
12 #include <stdio.h>
13 #include <stdlib.h>
14 #include <signal.h>
15 #include <string.h>
16 #include <setjmp.h>
17
18 #include MUT_H
19 #include SLB_H
20 #include BEH_H
21 #include BEF_H
22 #include BHL_H
23 #include BVL_H
24 #include MLO_H
25 #include LOG_H
26 #include CGV_H
27 #include XSB_H
28 #include XYA_H
29
30 #include "XYA_cgvfig.h"
31 #include "XYA_error.h"
32 #include "XME_beh.h"
33
34 cgvfig_list *XyagFigureCgv = (cgvfig_list *) NULL;
35
36 /*------------------------------------------------------------\
37 | For parser exit handler |
38 \------------------------------------------------------------*/
39
40 static sigjmp_buf XyagJumpBuffer;
41 static void (*OldExitHandler) () = NULL;
42
43 /*------------------------------------------------------------\
44 | XyagExitHandler |
45 \------------------------------------------------------------*/
46
47 void
48 XyagExitHandler()
49 {
50 // XyagFlushErrorMessage();
51 signal(SIGTERM, OldExitHandler);
52 siglongjmp(XyagJumpBuffer, 1);
53 }
54
55 /*------------------------------------------------------------\
56 | XyagActiveExitHandler |
57 \------------------------------------------------------------*/
58
59 void
60 XyagActiveExitHandler()
61 {
62 OldExitHandler = signal(SIGTERM, XyagExitHandler);
63 }
64
65 /*------------------------------------------------------------\
66 | XyagResetExitHandler |
67 \------------------------------------------------------------*/
68
69 void
70 XyagResetExitHandler()
71 {
72 signal(SIGTERM, OldExitHandler);
73 }
74
75 /*------------------------------------------------------------\
76 | Xyaggetcgvfig |
77 \------------------------------------------------------------*/
78
79 cgvfig_list *
80 Xyaggetcgvfig(char *Name, int Mode, char *filename)
81 {
82 cgvfig_list *FigureCgv;
83
84 #ifndef __ALL__WARNING__
85 filename = NULL;
86 #endif
87 // for (FigureCgv = HEAD_CGVFIG; FigureCgv; FigureCgv = rmvcgvfig(FigureCgv));
88
89 XyagInitFileErr();
90 XyagPasqua();
91 XyagActiveExitHandler();
92
93 if (sigsetjmp(XyagJumpBuffer, 1) == 0) {
94 XyagSetJmpEnv (&XyagJumpBuffer);
95 FigureCgv = getcgvfig(Name, Mode, NULL);
96 // buildcgvfig(FigureCgv);
97 XyagGetWarningMess() ;
98 XyagFirePasqua() ;
99 XyagResetExitHandler();
100 return (FigureCgv);
101 }
102 printf("error\n");
103 XyagGetWarningMess();
104 XyagFirePasqua();
105 delcgvfig(Name);
106 return NULL;
107 }
108
109 /*------------------------------------------------------------\
110 | Xyaggetbefig |
111 \------------------------------------------------------------*/
112
113 befig_list *
114 Xyaggetbefig(FileName)
115 char *FileName;
116 {
117 befig_list *FigureBeh;
118
119 if (XyagEditBehBefig != NULL) {
120 XyagEditBehBefig = beh_delbefig(XyagEditBehBefig, XyagEditBehBefig, 'Y');
121 printf("remove BEH\n");
122 }
123
124 if (findbefig(FileName)==NULL) return NULL;
125
126 XyagPasqua();
127 XyagActiveExitHandler();
128
129 if (sigsetjmp(XyagJumpBuffer, 1) == 0) {
130 XyagSetJmpEnv (&XyagJumpBuffer);
131 FigureBeh = loadbefig(NULL, FileName, BVL_TRACE | BVL_KEEPAUX);
132 XyagFirePasqua() ;
133 XyagResetExitHandler();
134 return FigureBeh;
135 }
136
137 XyagFirePasqua();
138 return NULL;
139 }