File: parser.h

package info (click to toggle)
dosemu-freedos 1%3A0.0.b9r5a-3
  • links: PTS
  • area: contrib
  • in suites: etch-m68k
  • size: 19,768 kB
  • ctags: 23,285
  • sloc: ansic: 143,966; asm: 20,397; makefile: 3,868; perl: 1,106; yacc: 690; sh: 553; pascal: 297; xml: 150; cpp: 67
file content (135 lines) | stat: -rw-r--r-- 4,156 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/*
   DISKCOPY.EXE, floppy diskette duplicator similar to MSDOS Diskcopy.
   Copyright (C) 1998, Matthew Stanford.
   Copyright (C) 1999, 2000, 2001 Imre Leber.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have recieved a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.


   If you have any questions, comments, suggestions, or fixes please
   email me at: imre.leber@worldonline.be

 */

#ifndef PARSER_H_
#define PARSER_H_

typedef int TOKEN;

/* Parser input structure. */

struct LValueArray
  {
    TOKEN token;
    void (*func) (TOKEN rvalue);
  };

struct HeaderArray
  {
    int amount;
    TOKEN header;
    struct LValueArray *lvalues;
  };

/* Parser output structure. */

struct IniParserStruct
  {

    /* MEMORY */
    int UseEMS;			/* Use of EMS  granted.               */
    int UseXMS;			/* Use of XMS  granted.               */
    int UseSWAP;		/* Use of SWAP granted.               */

    /* OPTIONS */
    int audible;		/* Give an audible warning.           */
    int verify;			/* Verify writes.                     */
    int informative;		/* Give information on memory use.    */
    int overwrite;		/* Overwrite destination.             */
    int autoexit;		/* Always automatically exit.         */
    int askdisk;		/* Ask disk.                          */
    int asktdisk;		/* Ask target disk.                   */
    int mode;			/* Mode that diskcopy is in.          */
    int speed;			/* Copy speed: fast or full.          */
    int serialnumber;		/* Wether to update the serial number */

    /* GENERATION */
    int MakeDAT;		/* Wether or not to keep a compiled 
				   DAT file.                          */
  };

/* Tokens. */
#define TknNONE         -1	/* Invalid input.         */
#define TknDONE          0	/* End of buffer reached. */

#define TknSPACE         1	/* white space  */
#define TknASSIGN        2	/* =            */
#define TknYES           3	/* yes          */
#define TknNO            4	/* no           */
#define TknALWAYS        5	/* always       */
#define TknNEVER         6	/* never        */


#define TknMEMORYHEADER  7	/* [- MEMORY -] */
#define TknDISK          8	/* DISK/SWAP    */
#define TknEMS           9	/* EMS          */
#define TknXMS          10	/* XMS          */

#define TknOPTIONHEADER 11	/* [- OPTIONS -] */
#define TknAUDIBLE      12	/* audible       */
#define TknVERIFY       13	/* verify        */
#define TknINFORMATIVE  14	/* informative   */
#define TknOVERWRITE    15	/* overwrite     */
#define TknAUTOEXIT     16	/* autoexit      */
#define TknMODE         17	/* mode          */
#define TknASKDISK      18	/* ask disk      */
#define TknASKTARGET    19	/* ask target    */
#define TknSERIALNUMBER 20	/* serial number */
#define TknUPDATE       21	/* update        */
#define TknLEAVE        22	/* leave         */

#define TknRECOVERY     23	/* recovery      */
#define TknNORMAL       24	/* normal        */

#define TknRETURN       25	/* Return        */

#define TknGENERATEHEADER 26	/* [- GENERATE -] */
#define TknUSEDATFILE     27	/* usedatfile */

#define TknFAST      28
#define TknFULL      29
#define TknSPEED     30

#define TknOPENBLOCK  31
#define TknCLOSEBLOCK 32

#define PARSERSUCCESS       1

#define YES    1
#define NO     0

#define ALWAYS 1
#define NEVER  0

#define RECOVERY 1
#define NORMAL   0

#define UPDATE 1
#define LEAVE  0

int ParseIniFile (char *filename);
struct IniParserStruct *GetParsedData (void);

#endif