Remove UXPDS support
[oweals/cde.git] / cde / programs / dthelp / parser / pass2 / htag2 / global.h
1 /*
2  * CDE - Common Desktop Environment
3  *
4  * Copyright (c) 1993-2012, The Open Group. All rights reserved.
5  *
6  * These libraries and programs are free software; you can
7  * redistribute them and/or modify them under the terms of the GNU
8  * Lesser General Public License as published by the Free Software
9  * Foundation; either version 2 of the License, or (at your option)
10  * any later version.
11  *
12  * These libraries and programs are distributed in the hope that
13  * they will be useful, but WITHOUT ANY WARRANTY; without even the
14  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15  * PURPOSE. See the GNU Lesser General Public License for more
16  * details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with these libraries and programs; if not, write
20  * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21  * Floor, Boston, MA 02110-1301 USA
22  */
23 /* $TOG: global.h /main/4 1998/04/06 13:19:19 mgreess $ */
24 /* Copyright (c) 1988, 1989 Hewlett-Packard Co. */
25 /* Global definitions for HP Tag/TeX translator */
26 /*   When changing this file, check "grphpar.h" for conflicts */
27
28 #if defined(DEFINE)
29 #define EXTERN
30 #define INIT(a) = a
31 #else
32 #define EXTERN extern
33 #define INIT(a)
34 #endif
35
36 #include <stdlib.h>
37 #include <string.h>
38 #include <time.h>
39 #if defined(MSDOS)
40 #include <io.h>
41 #include <process.h>
42 #include <direct.h>
43 #endif
44 #include <ctype.h>
45
46 #if defined(hpux) || defined(_AIX) || defined(sun) || defined(USL) || defined(linux) || defined(CSRG_BASED)
47 #include <unistd.h>
48 #include <locale.h>
49 #include <fcntl.h>
50 #endif
51
52 #ifndef MB_MAX_LEN
53 #define MB_MAX_LEN 4
54 #endif
55
56 #ifndef WCOREDUMP
57 #define WCOREDUMP(_X) ((int)(_X)&0200)
58 #endif
59
60 /*????????????????????????????????????????????????????*/
61 EXTERN LOGICAL stoponerror INIT(TRUE) ;
62
63 EXTERN char dirsep INIT('/') ;
64 EXTERN char *indir INIT(NULL) ;
65 EXTERN char *nodirbase ;
66 EXTERN char *install INIT(NULL) ;
67
68 typedef struct search SEARCH ;
69 struct search {
70   char *directory ;
71   SEARCH *next ;
72   } ;
73 EXTERN SEARCH *path INIT(NULL) ;
74 EXTERN SEARCH **endpath INIT(&path) ;
75
76 /*====================================================*/
77 #define xxx 1
78
79 /* Must be in same order as values in optkey, adjust NUMOPTIONS if changed*/
80 #define ONERROR      1
81
82 #define NUMOPTIONS 1
83
84 EXTERN int optval INIT(M_NULLVAL) ;
85
86 EXTERN char *optkey[NUMOPTIONS]
87 #if defined(DEFINE)
88   = {
89       "onerror",
90       }
91 #endif
92   ;
93
94 #define MIN(a,b) (((a)<(b))?(a):(b))
95 #define RS       '\036'
96 #define LINEMAX  (BUFSIZ * 8)
97
98 EXTERN LOGICAL haveIndex INIT(FALSE);
99
100 #define TMPDIR  "/tmp"
101 #define VERSION "Version"
102
103 #define SDLNAMESIZ sizeof("SDL-RESERVED")
104 EXTERN char  sdlReservedName[] INIT("SDL-RESERVED");
105
106 #define DOTSDLSIZ sizeof(".sdl")
107 EXTERN char  dotSDL[]          INIT(".sdl");
108 #define DOTERRSIZ sizeof(".err")
109 EXTERN char  dotERR[]          INIT(".err");
110 #define DOTIDXSIZ sizeof(".idx")
111 EXTERN char  dotIDX[]          INIT(".idx");
112 #define DOTSNBSIZ sizeof(".snb")
113 EXTERN char  dotSNB[]          INIT(".snb");
114 #define DOTTSSSIZ sizeof(".tss")
115 EXTERN char  dotTSS[]          INIT(".tss");
116
117 /* set to TRUE if the user asks for compression */
118 EXTERN LOGICAL compressFlag    INIT(FALSE);
119 /* set to TRUE if the user asks for optimization */
120 EXTERN LOGICAL optimizeFlag    INIT(FALSE);
121 /* set to TRUE if the user asks for <toss> to be necessary and sufficient */
122 EXTERN LOGICAL minimalTossFlag INIT(FALSE);
123 /* set to TRUE if the user asks for decompression */
124 EXTERN LOGICAL decompressFlag  INIT(FALSE);
125
126 /* we change outFile from vstructFile to tempFile upon first virpage */
127 EXTERN LOGICAL firstVirpage    INIT(TRUE);
128 EXTERN long int vstructSize    INIT(0);
129
130 /* the base name of this program - used in error messages */
131 EXTERN char *progName          INIT(NULL);
132
133 /*
134  * Names for all the input, output and intermediate files we'll need.
135 */
136 char *inFileName;
137 char *outFileName;
138 char *errFileName;
139 char *idxFileName;
140 char *snbFileName;
141 char *sortedIdxFileName;
142 char *tossFileName;
143 char *vstructFileName;
144 char *tempFileName;
145 char *compFileName;
146 char *compZFileName;
147
148 FILE *inFile;
149 FILE *outFile;
150
151 typedef struct _loidsRec *LoidsPtr;
152 typedef struct _loidsRec {
153     char     *type;
154     char     *rid;
155     char     *rssi;
156     char     *rlevel;
157     long int  offset;
158     LoidsPtr  next;
159 } LoidsRec;
160
161 EXTERN LoidsRec loids; /* first node is a dummy to make the logic easier */
162 EXTERN LoidsPtr pLoidsEnd INIT(&loids);
163
164 EXTERN int startOfLOIDS     INIT(0);
165 EXTERN int startOfIndex     INIT(0);
166 EXTERN int startOfLOPhrases INIT(0);
167 EXTERN int startOfTOSS      INIT(0);
168 EXTERN int endOfLOIDS       INIT(0);
169 EXTERN int endOfIndex       INIT(0);
170 EXTERN int endOfLOPhrases   INIT(0);
171 EXTERN int endOfTOSS        INIT(0);
172
173 typedef enum _element_types {
174   e_sdldoc,
175   e_vstruct,
176   e_virpage,
177   e_snb,
178   e_block,
179   e_form,
180   e_fstyle,
181   e_frowvec,
182   e_fdata,
183   e_p,
184   e_cp,
185   e_head,
186   e_subhead,
187   e_anchor,
188   e_link,
189   e_snref,
190   e_refitem,
191   e_alttext,
192   e_rev,
193   e_key,
194   e_sphrase,
195   e_if,
196   e_cond,
197   e_then,
198   e_else,
199   e_spc,
200   e_graphic,
201   e_text,
202   e_audio,
203   e_video,
204   e_animate,
205   e_script,
206   e_crossdoc,
207   e_man_page,
208   e_textfile,
209   e_sys_cmd,
210   e_callback,
211   e_switch,
212   e_rel_docs,
213   e_rel_file,
214   e_notes,
215   e_loids,
216   e_id,
217   e_index,
218   e_entry,
219   e_lophrases,
220   e_phrase,
221   e_toss,
222   e_keystyle,
223   e_headstyle,
224   e_formstyle,
225   e_frmtstyle,
226   e_grphstyle,
227   e_cdata
228 } ElementTypes;
229
230 typedef struct _element *ElementPtr;
231
232 typedef struct _sdldoc {
233   ElementPtr pVstruct;
234   ElementPtr pHead;
235   ElementPtr pSnb;
236   ElementPtr pVirpage;
237   M_WCHAR *pub_id;
238   M_WCHAR *doc_id;
239   M_WCHAR *timestmp;
240   M_WCHAR *first_page;
241   M_WCHAR *product;
242   M_WCHAR *prodpn;
243   M_WCHAR *prodver;
244   M_WCHAR *license;
245   M_WCHAR *language;
246   M_WCHAR *charset;
247   M_WCHAR *author;
248   M_WCHAR *version;
249   M_WCHAR *sdldtd;
250   M_WCHAR *srcdtd;
251 } Sdldoc_el;
252
253 typedef struct _vstruct {
254   ElementPtr pLoids;
255   ElementPtr pToss;
256   ElementPtr pLophrases;
257   ElementPtr pIndex;
258   ElementPtr pRel_docs;
259   ElementPtr pRel_file;
260   ElementPtr pNotes;
261   M_WCHAR *version;
262   M_WCHAR *doc_id;
263 } Vstruct_el;
264
265 typedef struct _virpage {
266   ElementPtr pHead;
267   ElementPtr pSnb;
268   ElementPtr pBlockOrForm;
269   M_WCHAR *id;
270   M_WCHAR *level;
271   M_WCHAR *version;
272   M_WCHAR *language;
273   M_WCHAR *charset;
274   M_WCHAR *doc_id;
275   M_WCHAR *ssi;
276 } Virpage_el;
277
278 typedef struct _snb {
279   ElementPtr pHead;
280   ElementPtr pSystemNotations;
281   M_WCHAR *version;
282 } Snb_el;
283
284 typedef struct _block {
285   ElementPtr pHead;
286   ElementPtr pCpOrP;
287   M_WCHAR *id;
288   M_WCHAR *level;
289   M_WCHAR *version;
290   M_WCHAR *class;
291   M_WCHAR *language;
292   M_WCHAR *charset;
293   M_WCHAR *length;
294   M_WCHAR *app;
295   M_WCHAR *timing;
296   M_WCHAR *ssi;
297 } Block_el;
298
299 typedef struct _form {
300   ElementPtr pHead;
301   ElementPtr pFdata;
302   ElementPtr pFstyle;
303   M_WCHAR *id;
304   M_WCHAR *level;
305   M_WCHAR *version;
306   M_WCHAR *class;
307   M_WCHAR *language;
308   M_WCHAR *charset;
309   M_WCHAR *length;
310   M_WCHAR *app;
311   M_WCHAR *ssi;
312 } Form_el;
313
314 typedef struct _fstyle {
315   ElementPtr pFrowvec;
316   M_WCHAR *ncols;
317 } Fstyle_el;
318
319 typedef struct _frowvec {
320   M_WCHAR *hdr;
321   M_WCHAR *cells;
322 } Frowvec_el;
323
324 typedef struct _fdata {
325   ElementPtr pBlockOrForm;
326 } Fdata_el;
327
328 typedef struct _p {
329   ElementPtr pHead;
330   ElementPtr pAtomicOrPCDATA;
331   M_WCHAR *id;
332   M_WCHAR *version;
333   M_WCHAR *type;
334   M_WCHAR *ssi;
335 } P_el;
336
337 typedef struct _cp {
338   ElementPtr pCDATA;
339   M_WCHAR *id;
340   M_WCHAR *version;
341   M_WCHAR *type;
342   M_WCHAR *ssi;
343 } Cp_el;
344
345 typedef struct _head {
346   ElementPtr pAtomicOrPCDATA;
347   ElementPtr pSubhead;
348   M_WCHAR *id;
349   M_WCHAR *version;
350   M_WCHAR *class;
351   M_WCHAR *language;
352   M_WCHAR *charset;
353   M_WCHAR *type;
354   M_WCHAR *abbrev;
355   M_WCHAR *ssi;
356 } Head_el;
357
358 typedef struct _subhead {
359   ElementPtr pAtomicOrPCDATA;
360   M_WCHAR *id;
361   M_WCHAR *version;
362   M_WCHAR *class;
363   M_WCHAR *language;
364   M_WCHAR *charset;
365   M_WCHAR *type;
366   M_WCHAR *abbrev;
367   M_WCHAR *ssi;
368 } Subhead_el;
369
370 typedef struct _anchor {
371   M_WCHAR *id;
372 } Anchor_el;
373
374 typedef struct _link {
375   ElementPtr pAtomicOrPCDATA;
376   M_WCHAR *rid;
377   M_WCHAR *button;
378   M_WCHAR *linkinfo;
379   M_WCHAR *descript;
380   M_WCHAR *window;
381   M_WCHAR *traversal;
382 } Link_el;
383
384 typedef struct _snref {
385   ElementPtr pRefitem;
386   ElementPtr     pAlttext;
387   M_WCHAR *id;
388 } Snref_el;
389
390 typedef struct _refitem {
391   ElementPtr pHead;
392   ElementPtr pReferencedItem;
393   M_WCHAR *rid;
394   M_WCHAR *class;
395   M_WCHAR *button;
396   M_WCHAR *ssi;
397 } Refitem_el;
398
399 typedef struct _alttext {
400   ElementPtr pCDATA;
401 } Alttext_el;
402
403 typedef struct _rev {
404   ElementPtr pAtomicOrPCDATA;
405 } Rev_el;
406
407 typedef struct _key {
408   ElementPtr pAtomicOrPCDATA;
409   M_WCHAR *charset;
410   M_WCHAR *class;
411   M_WCHAR *ssi;
412 } Key_el;
413
414 typedef struct _sphrase {
415   ElementPtr pSpcOrPCDATA;
416   M_WCHAR *class;
417   M_WCHAR *ssi;
418 } Sphrase_el;
419
420 typedef struct _if {
421   ElementPtr pCond;
422   ElementPtr pThen;
423   ElementPtr pElse;
424 } If_el;
425
426 typedef struct _cond {
427   ElementPtr pCDATA;
428   M_WCHAR *interp;
429 } Cond_el;
430
431 typedef struct _then {
432   ElementPtr pAtomicOrPCDATA;
433 } Then_el;
434
435 typedef struct _else {
436   ElementPtr pAtomicOrPCDATA;
437 } Else_el;
438
439 typedef struct _spc {
440   M_WCHAR *name;
441 } Spc_el;
442
443 typedef struct _graphic {
444   M_WCHAR *id;
445   M_WCHAR *format;
446   M_WCHAR *method;
447   M_WCHAR *xid;
448 } Graphic_el;
449
450 typedef struct _text {
451   ElementPtr pCpOrP;
452   M_WCHAR *id;
453   M_WCHAR *language;
454   M_WCHAR *charset;
455 } Text_el;
456
457 typedef struct _audio {
458   M_WCHAR *id;
459   M_WCHAR *format;
460   M_WCHAR *method;
461   M_WCHAR *xid;
462 } Audio_el;
463
464 typedef struct _video {
465   M_WCHAR *id;
466   M_WCHAR *format;
467   M_WCHAR *method;
468   M_WCHAR *xid;
469 } Video_el;
470
471 typedef struct _animate {
472   M_WCHAR *id;
473   M_WCHAR *format;
474   M_WCHAR *method;
475   M_WCHAR *xid;
476 } Animate_el;
477
478 typedef struct _script {
479   ElementPtr pCDATA;
480   M_WCHAR *id;
481   M_WCHAR *interp;
482 } Script_el;
483
484 typedef struct _crossdoc {
485   M_WCHAR *id;
486   M_WCHAR *xid;
487 } Crossdoc_el;
488
489 typedef struct _man_page {
490   M_WCHAR *id;
491   M_WCHAR *xid;
492 } Man_page_el;
493
494 typedef struct _textfile {
495   M_WCHAR *id;
496   M_WCHAR *xid;
497   M_WCHAR *offset;
498   M_WCHAR *format;
499 } Textfile_el;
500
501 typedef struct _sys_cmd {
502   M_WCHAR *id;
503   M_WCHAR *command;
504 } Sys_cmd_el;
505
506 typedef struct _callback {
507   M_WCHAR *id;
508   M_WCHAR *data;
509 } Callback_el;
510
511 typedef struct _switch {
512   ElementPtr pCDATA;
513   M_WCHAR *id;
514   M_WCHAR *interp;
515   M_WCHAR *branches;
516 } Switch_el;
517
518 typedef struct _rel_docs {
519   void *no_attrs;
520 } Rel_docs_el;
521
522 typedef struct _rel_file {
523   void *no_attrs;
524 } Rel_file_el;
525
526 typedef struct _notes {
527   void *no_attrs;
528 } Notes_el;
529
530 typedef struct _loids {
531   ElementPtr pId;
532 } Loids_el;
533
534 typedef struct _id {
535   M_WCHAR *type;
536   M_WCHAR *rid;
537   M_WCHAR *rssi;
538   M_WCHAR *rlevel;
539   M_WCHAR *offset;
540 } Id_el;
541
542 typedef struct _index {
543   ElementPtr pEntry;
544   M_WCHAR *head;
545 } Index_el;
546
547 typedef struct _entry {
548   ElementPtr pSimpleOrPCDATA;
549   ElementPtr pEntry;
550   M_WCHAR *id;
551   M_WCHAR *main;
552   M_WCHAR *locs;
553   M_WCHAR *syns;
554   M_WCHAR *sort;
555 } Entry_el;
556
557 typedef struct _lophrases {
558   ElementPtr pPhrase;
559 } Lophrases_el;
560
561 typedef struct _phrase {
562   M_WCHAR *text;
563 } Phrase_el;
564
565 typedef struct _toss {
566   ElementPtr pKeyStyle;
567   ElementPtr pHeadStyle;
568   ElementPtr pFormStyle;
569   ElementPtr pFrmtStyle;
570   ElementPtr pGrphStyle;
571 } Toss_el;
572
573 typedef struct _keystyle {
574   LOGICAL  beenUsed;
575   M_WCHAR *class;
576   M_WCHAR *ssi;
577   M_WCHAR *rlevel;
578   M_WCHAR *phrase;
579   M_WCHAR *srch_wt;
580   M_WCHAR *enter;
581   M_WCHAR *exit;
582   M_WCHAR *pointsz;
583   M_WCHAR *set_width;
584   M_WCHAR *color;
585   M_WCHAR *xlfd;
586   M_WCHAR *xlfdi;
587   M_WCHAR *xlfdb;
588   M_WCHAR *xlfdib;
589   M_WCHAR *typenam;
590   M_WCHAR *typenami;
591   M_WCHAR *typenamb;
592   M_WCHAR *typenamib;
593   M_WCHAR *style;
594   M_WCHAR *spacing;
595   M_WCHAR *weight;
596   M_WCHAR *slant;
597   M_WCHAR *special;
598 } Keystyle_el;
599
600 typedef struct _headstyle {
601   LOGICAL  beenUsed;
602   M_WCHAR *class;
603   M_WCHAR *ssi;
604   M_WCHAR *rlevel;
605   M_WCHAR *phrase;
606   M_WCHAR *srch_wt;
607   M_WCHAR *orient;
608   M_WCHAR *vorient;
609   M_WCHAR *placement;
610   M_WCHAR *headw;
611   M_WCHAR *stack;
612   M_WCHAR *flow;
613   M_WCHAR *pointsz;
614   M_WCHAR *set_width;
615   M_WCHAR *color;
616   M_WCHAR *xlfd;
617   M_WCHAR *xlfdi;
618   M_WCHAR *xlfdb;
619   M_WCHAR *xlfdib;
620   M_WCHAR *typenam;
621   M_WCHAR *typenami;
622   M_WCHAR *typenamb;
623   M_WCHAR *typenamib;
624   M_WCHAR *style;
625   M_WCHAR *spacing;
626   M_WCHAR *weight;
627   M_WCHAR *slant;
628   M_WCHAR *special;
629   M_WCHAR *l_margin;
630   M_WCHAR *r_margin;
631   M_WCHAR *t_margin;
632   M_WCHAR *b_margin;
633   M_WCHAR *border;
634   M_WCHAR *vjust;
635   M_WCHAR *justify;
636 } Headstyle_el;
637
638 typedef struct _formstyle {
639   LOGICAL  beenUsed;
640   M_WCHAR *class;
641   M_WCHAR *ssi;
642   M_WCHAR *rlevel;
643   M_WCHAR *phrase;
644   M_WCHAR *srch_wt;
645   M_WCHAR *colw;
646   M_WCHAR *colj;
647   M_WCHAR *pointsz;
648   M_WCHAR *set_width;
649   M_WCHAR *color;
650   M_WCHAR *xlfd;
651   M_WCHAR *xlfdi;
652   M_WCHAR *xlfdb;
653   M_WCHAR *xlfdib;
654   M_WCHAR *typenam;
655   M_WCHAR *typenami;
656   M_WCHAR *typenamb;
657   M_WCHAR *typenamib;
658   M_WCHAR *style;
659   M_WCHAR *spacing;
660   M_WCHAR *weight;
661   M_WCHAR *slant;
662   M_WCHAR *special;
663   M_WCHAR *l_margin;
664   M_WCHAR *r_margin;
665   M_WCHAR *t_margin;
666   M_WCHAR *b_margin;
667   M_WCHAR *border;
668   M_WCHAR *vjust;
669 } Formstyle_el;
670
671 typedef struct _frmtstyle {
672   LOGICAL  beenUsed;
673   M_WCHAR *class;
674   M_WCHAR *ssi;
675   M_WCHAR *rlevel;
676   M_WCHAR *phrase;
677   M_WCHAR *f_margin;
678   M_WCHAR *srch_wt;
679   M_WCHAR *pointsz;
680   M_WCHAR *set_width;
681   M_WCHAR *color;
682   M_WCHAR *xlfd;
683   M_WCHAR *xlfdi;
684   M_WCHAR *xlfdb;
685   M_WCHAR *xlfdib;
686   M_WCHAR *typenam;
687   M_WCHAR *typenami;
688   M_WCHAR *typenamb;
689   M_WCHAR *typenamib;
690   M_WCHAR *style;
691   M_WCHAR *spacing;
692   M_WCHAR *weight;
693   M_WCHAR *slant;
694   M_WCHAR *special;
695   M_WCHAR *l_margin;
696   M_WCHAR *r_margin;
697   M_WCHAR *t_margin;
698   M_WCHAR *b_margin;
699   M_WCHAR *border;
700   M_WCHAR *vjust;
701   M_WCHAR *justify;
702 } Frmtstyle_el;
703
704 typedef struct _grphstyle {
705   LOGICAL  beenUsed;
706   M_WCHAR *class;
707   M_WCHAR *ssi;
708   M_WCHAR *rlevel;
709   M_WCHAR *phrase;
710   M_WCHAR *l_margin;
711   M_WCHAR *r_margin;
712   M_WCHAR *t_margin;
713   M_WCHAR *b_margin;
714   M_WCHAR *border;
715   M_WCHAR *vjust;
716   M_WCHAR *justify;
717 } Grphstyle_el;
718
719 typedef struct _cdata {
720   M_WCHAR *buffer;
721   int      buffPos;
722   int      buffSize;
723 } CDATA_el;
724
725 typedef struct _element {
726   ElementTypes  type;
727   ElementPtr    pNext;
728   LOGICAL       beenEmitted;
729   LOGICAL       tossChecked;
730   M_WCHAR      *inheritedLevel;
731   M_WCHAR      *inheritedClass;
732   union {
733     Sdldoc_el    u_sdldoc;
734     Vstruct_el   u_vstruct;
735     Virpage_el   u_virpage;
736     Snb_el       u_snb;
737     Block_el     u_block;
738     Form_el      u_form;
739     Fstyle_el    u_fstyle;
740     Frowvec_el   u_frowvec;
741     Fdata_el     u_fdata;
742     P_el         u_p;
743     Cp_el        u_cp;
744     Head_el      u_head;
745     Subhead_el   u_subhead;
746     Anchor_el    u_anchor;
747     Link_el      u_link;
748     Snref_el     u_snref;
749     Refitem_el   u_refitem;
750     Alttext_el   u_alttext;
751     Rev_el       u_rev;
752     Key_el       u_key;
753     Sphrase_el   u_sphrase;
754     If_el        u_if;
755     Cond_el      u_cond;
756     Then_el      u_then;
757     Else_el      u_else;
758     Spc_el       u_spc;
759     Graphic_el   u_graphic;
760     Text_el      u_text;
761     Audio_el     u_audio;
762     Video_el     u_video;
763     Animate_el   u_animate;
764     Script_el    u_script;
765     Crossdoc_el  u_crossdoc;
766     Man_page_el  u_man_page;
767     Textfile_el  u_textfile;
768     Sys_cmd_el   u_sys_cmd;
769     Callback_el  u_callback;
770     Switch_el    u_switch;
771     Rel_docs_el  u_rel_docs;
772     Rel_file_el  u_rel_file;
773     Notes_el     u_notes;
774     Loids_el     u_loids;
775     Id_el        u_id;
776     Index_el     u_index;
777     Entry_el     u_entry;
778     Lophrases_el u_lophrases;
779     Phrase_el    u_phrase;
780     Toss_el      u_toss;
781     Keystyle_el  u_keystyle;
782     Headstyle_el u_headstyle;
783     Formstyle_el u_formstyle;
784     Frmtstyle_el u_frmtstyle;
785     Grphstyle_el u_grphstyle;
786     CDATA_el     u_cdata;
787   } u;
788 } Element;
789
790 EXTERN ElementPtr  pCurrentElement INIT(NULL);
791
792 /* variables for counting entry, phrase and style elements */
793 EXTERN ElementPtr  pElementChain   INIT(NULL);
794 EXTERN int         nElements;
795
796 /* save the toss for later emission */
797 EXTERN ElementPtr pTossChain  INIT(NULL);
798 EXTERN int        nStyles;
799
800 EXTERN int        saveSysECnt INIT(-1);
801
802 /* Function prototypes */
803 #include "fproto.h"