1706f2543Smrg/*
2706f2543Smrg *
3706f2543Smrg * Copyright (c) 1997  Metro Link Incorporated
4706f2543Smrg *
5706f2543Smrg * Permission is hereby granted, free of charge, to any person obtaining a
6706f2543Smrg * copy of this software and associated documentation files (the "Software"),
7706f2543Smrg * to deal in the Software without restriction, including without limitation
8706f2543Smrg * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9706f2543Smrg * and/or sell copies of the Software, and to permit persons to whom the
10706f2543Smrg * Software is furnished to do so, subject to the following conditions:
11706f2543Smrg *
12706f2543Smrg * The above copyright notice and this permission notice shall be included in
13706f2543Smrg * all copies or substantial portions of the Software.
14706f2543Smrg *
15706f2543Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16706f2543Smrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17706f2543Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
18706f2543Smrg * THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
19706f2543Smrg * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
20706f2543Smrg * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21706f2543Smrg * SOFTWARE.
22706f2543Smrg *
23706f2543Smrg * Except as contained in this notice, the name of the Metro Link shall not be
24706f2543Smrg * used in advertising or otherwise to promote the sale, use or other dealings
25706f2543Smrg * in this Software without prior written authorization from Metro Link.
26706f2543Smrg *
27706f2543Smrg */
28706f2543Smrg/*
29706f2543Smrg * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
30706f2543Smrg *
31706f2543Smrg * Permission is hereby granted, free of charge, to any person obtaining a
32706f2543Smrg * copy of this software and associated documentation files (the "Software"),
33706f2543Smrg * to deal in the Software without restriction, including without limitation
34706f2543Smrg * the rights to use, copy, modify, merge, publish, distribute, sublicense,
35706f2543Smrg * and/or sell copies of the Software, and to permit persons to whom the
36706f2543Smrg * Software is furnished to do so, subject to the following conditions:
37706f2543Smrg *
38706f2543Smrg * The above copyright notice and this permission notice shall be included in
39706f2543Smrg * all copies or substantial portions of the Software.
40706f2543Smrg *
41706f2543Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
42706f2543Smrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
43706f2543Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
44706f2543Smrg * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
45706f2543Smrg * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
46706f2543Smrg * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
47706f2543Smrg * OTHER DEALINGS IN THE SOFTWARE.
48706f2543Smrg *
49706f2543Smrg * Except as contained in this notice, the name of the copyright holder(s)
50706f2543Smrg * and author(s) shall not be used in advertising or otherwise to promote
51706f2543Smrg * the sale, use or other dealings in this Software without prior written
52706f2543Smrg * authorization from the copyright holder(s) and author(s).
53706f2543Smrg */
54706f2543Smrg
55706f2543Smrg
56706f2543Smrg/*
57706f2543Smrg * This file contains the external interfaces for the XFree86 configuration
58706f2543Smrg * file parser.
59706f2543Smrg */
60706f2543Smrg#ifdef HAVE_XORG_CONFIG_H
61706f2543Smrg#include <xorg-config.h>
62706f2543Smrg#endif
63706f2543Smrg
64706f2543Smrg#ifndef _xf86Parser_h_
65706f2543Smrg#define _xf86Parser_h_
66706f2543Smrg
67706f2543Smrg#include <X11/Xdefs.h>
68706f2543Smrg#include "xf86Optrec.h"
69706f2543Smrg#include "list.h"
70706f2543Smrg
71706f2543Smrg#define HAVE_PARSER_DECLS
72706f2543Smrg
73706f2543Smrgtypedef struct
74706f2543Smrg{
75706f2543Smrg	char *file_logfile;
76706f2543Smrg	char *file_modulepath;
77706f2543Smrg	char *file_fontpath;
78706f2543Smrg	char *file_comment;
79706f2543Smrg	char *file_xkbdir;
80706f2543Smrg}
81706f2543SmrgXF86ConfFilesRec, *XF86ConfFilesPtr;
82706f2543Smrg
83706f2543Smrg/* Values for load_type */
84706f2543Smrg#define XF86_LOAD_MODULE	0
85706f2543Smrg#define XF86_LOAD_DRIVER	1
86706f2543Smrg#define XF86_DISABLE_MODULE	2
87706f2543Smrg
88706f2543Smrgtypedef struct
89706f2543Smrg{
90706f2543Smrg	GenericListRec list;
91706f2543Smrg	int load_type;
92706f2543Smrg	char *load_name;
93706f2543Smrg	XF86OptionPtr load_opt;
94706f2543Smrg	char *load_comment;
95706f2543Smrg        int ignore;
96706f2543Smrg}
97706f2543SmrgXF86LoadRec, *XF86LoadPtr;
98706f2543Smrg
99706f2543Smrgtypedef struct
100706f2543Smrg{
101706f2543Smrg	XF86LoadPtr mod_load_lst;
102706f2543Smrg    XF86LoadPtr mod_disable_lst;
103706f2543Smrg	char *mod_comment;
104706f2543Smrg}
105706f2543SmrgXF86ConfModuleRec, *XF86ConfModulePtr;
106706f2543Smrg
107706f2543Smrg#define CONF_IMPLICIT_KEYBOARD	"Implicit Core Keyboard"
108706f2543Smrg
109706f2543Smrg#define CONF_IMPLICIT_POINTER	"Implicit Core Pointer"
110706f2543Smrg
111706f2543Smrg#define XF86CONF_PHSYNC    0x0001
112706f2543Smrg#define XF86CONF_NHSYNC    0x0002
113706f2543Smrg#define XF86CONF_PVSYNC    0x0004
114706f2543Smrg#define XF86CONF_NVSYNC    0x0008
115706f2543Smrg#define XF86CONF_INTERLACE 0x0010
116706f2543Smrg#define XF86CONF_DBLSCAN   0x0020
117706f2543Smrg#define XF86CONF_CSYNC     0x0040
118706f2543Smrg#define XF86CONF_PCSYNC    0x0080
119706f2543Smrg#define XF86CONF_NCSYNC    0x0100
120706f2543Smrg#define XF86CONF_HSKEW     0x0200	/* hskew provided */
121706f2543Smrg#define XF86CONF_BCAST     0x0400
122706f2543Smrg#define XF86CONF_VSCAN     0x1000
123706f2543Smrg
124706f2543Smrgtypedef struct
125706f2543Smrg{
126706f2543Smrg	GenericListRec list;
127706f2543Smrg	char *ml_identifier;
128706f2543Smrg	int ml_clock;
129706f2543Smrg	int ml_hdisplay;
130706f2543Smrg	int ml_hsyncstart;
131706f2543Smrg	int ml_hsyncend;
132706f2543Smrg	int ml_htotal;
133706f2543Smrg	int ml_vdisplay;
134706f2543Smrg	int ml_vsyncstart;
135706f2543Smrg	int ml_vsyncend;
136706f2543Smrg	int ml_vtotal;
137706f2543Smrg	int ml_vscan;
138706f2543Smrg	int ml_flags;
139706f2543Smrg	int ml_hskew;
140706f2543Smrg	char *ml_comment;
141706f2543Smrg}
142706f2543SmrgXF86ConfModeLineRec, *XF86ConfModeLinePtr;
143706f2543Smrg
144706f2543Smrgtypedef struct
145706f2543Smrg{
146706f2543Smrg	GenericListRec list;
147706f2543Smrg	char *vp_identifier;
148706f2543Smrg	XF86OptionPtr vp_option_lst;
149706f2543Smrg	char *vp_comment;
150706f2543Smrg}
151706f2543SmrgXF86ConfVideoPortRec, *XF86ConfVideoPortPtr;
152706f2543Smrg
153706f2543Smrgtypedef struct
154706f2543Smrg{
155706f2543Smrg	GenericListRec list;
156706f2543Smrg	char *va_identifier;
157706f2543Smrg	char *va_vendor;
158706f2543Smrg	char *va_board;
159706f2543Smrg	char *va_busid;
160706f2543Smrg	char *va_driver;
161706f2543Smrg	XF86OptionPtr va_option_lst;
162706f2543Smrg	XF86ConfVideoPortPtr va_port_lst;
163706f2543Smrg	char *va_fwdref;
164706f2543Smrg	char *va_comment;
165706f2543Smrg}
166706f2543SmrgXF86ConfVideoAdaptorRec, *XF86ConfVideoAdaptorPtr;
167706f2543Smrg
168706f2543Smrg#define CONF_MAX_HSYNC 8
169706f2543Smrg#define CONF_MAX_VREFRESH 8
170706f2543Smrg
171706f2543Smrgtypedef struct
172706f2543Smrg{
173706f2543Smrg	float hi, lo;
174706f2543Smrg}
175706f2543Smrgparser_range;
176706f2543Smrg
177706f2543Smrgtypedef struct
178706f2543Smrg{
179706f2543Smrg	int red, green, blue;
180706f2543Smrg}
181706f2543Smrgparser_rgb;
182706f2543Smrg
183706f2543Smrgtypedef struct
184706f2543Smrg{
185706f2543Smrg	GenericListRec list;
186706f2543Smrg	char *modes_identifier;
187706f2543Smrg	XF86ConfModeLinePtr mon_modeline_lst;
188706f2543Smrg	char *modes_comment;
189706f2543Smrg}
190706f2543SmrgXF86ConfModesRec, *XF86ConfModesPtr;
191706f2543Smrg
192706f2543Smrgtypedef struct
193706f2543Smrg{
194706f2543Smrg	GenericListRec list;
195706f2543Smrg	char *ml_modes_str;
196706f2543Smrg	XF86ConfModesPtr ml_modes;
197706f2543Smrg}
198706f2543SmrgXF86ConfModesLinkRec, *XF86ConfModesLinkPtr;
199706f2543Smrg
200706f2543Smrgtypedef struct
201706f2543Smrg{
202706f2543Smrg	GenericListRec list;
203706f2543Smrg	char *mon_identifier;
204706f2543Smrg	char *mon_vendor;
205706f2543Smrg	char *mon_modelname;
206706f2543Smrg	int mon_width;				/* in mm */
207706f2543Smrg	int mon_height;				/* in mm */
208706f2543Smrg	XF86ConfModeLinePtr mon_modeline_lst;
209706f2543Smrg	int mon_n_hsync;
210706f2543Smrg	parser_range mon_hsync[CONF_MAX_HSYNC];
211706f2543Smrg	int mon_n_vrefresh;
212706f2543Smrg	parser_range mon_vrefresh[CONF_MAX_VREFRESH];
213706f2543Smrg	float mon_gamma_red;
214706f2543Smrg	float mon_gamma_green;
215706f2543Smrg	float mon_gamma_blue;
216706f2543Smrg	XF86OptionPtr mon_option_lst;
217706f2543Smrg	XF86ConfModesLinkPtr mon_modes_sect_lst;
218706f2543Smrg	char *mon_comment;
219706f2543Smrg}
220706f2543SmrgXF86ConfMonitorRec, *XF86ConfMonitorPtr;
221706f2543Smrg
222706f2543Smrg#define CONF_MAXDACSPEEDS 4
223706f2543Smrg#define CONF_MAXCLOCKS    128
224706f2543Smrg
225706f2543Smrgtypedef struct
226706f2543Smrg{
227706f2543Smrg	GenericListRec list;
228706f2543Smrg	char *dev_identifier;
229706f2543Smrg	char *dev_vendor;
230706f2543Smrg	char *dev_board;
231706f2543Smrg	char *dev_chipset;
232706f2543Smrg	char *dev_busid;
233706f2543Smrg	char *dev_card;
234706f2543Smrg	char *dev_driver;
235706f2543Smrg	char *dev_ramdac;
236706f2543Smrg	int dev_dacSpeeds[CONF_MAXDACSPEEDS];
237706f2543Smrg	int dev_videoram;
238706f2543Smrg	int dev_textclockfreq;
239706f2543Smrg	unsigned long dev_bios_base;
240706f2543Smrg	unsigned long dev_mem_base;
241706f2543Smrg	unsigned long dev_io_base;
242706f2543Smrg	char *dev_clockchip;
243706f2543Smrg	int dev_clocks;
244706f2543Smrg	int dev_clock[CONF_MAXCLOCKS];
245706f2543Smrg	int dev_chipid;
246706f2543Smrg	int dev_chiprev;
247706f2543Smrg	int dev_irq;
248706f2543Smrg	int dev_screen;
249706f2543Smrg	XF86OptionPtr dev_option_lst;
250706f2543Smrg	char *dev_comment;
251706f2543Smrg}
252706f2543SmrgXF86ConfDeviceRec, *XF86ConfDevicePtr;
253706f2543Smrg
254706f2543Smrgtypedef struct
255706f2543Smrg{
256706f2543Smrg	GenericListRec list;
257706f2543Smrg	char *mode_name;
258706f2543Smrg}
259706f2543SmrgXF86ModeRec, *XF86ModePtr;
260706f2543Smrg
261706f2543Smrgtypedef struct
262706f2543Smrg{
263706f2543Smrg	GenericListRec list;
264706f2543Smrg	int disp_frameX0;
265706f2543Smrg	int disp_frameY0;
266706f2543Smrg	int disp_virtualX;
267706f2543Smrg	int disp_virtualY;
268706f2543Smrg	int disp_depth;
269706f2543Smrg	int disp_bpp;
270706f2543Smrg	char *disp_visual;
271706f2543Smrg	parser_rgb disp_weight;
272706f2543Smrg	parser_rgb disp_black;
273706f2543Smrg	parser_rgb disp_white;
274706f2543Smrg	XF86ModePtr disp_mode_lst;
275706f2543Smrg	XF86OptionPtr disp_option_lst;
276706f2543Smrg	char *disp_comment;
277706f2543Smrg}
278706f2543SmrgXF86ConfDisplayRec, *XF86ConfDisplayPtr;
279706f2543Smrg
280706f2543Smrgtypedef struct
281706f2543Smrg{
282706f2543Smrg	XF86OptionPtr flg_option_lst;
283706f2543Smrg	char *flg_comment;
284706f2543Smrg}
285706f2543SmrgXF86ConfFlagsRec, *XF86ConfFlagsPtr;
286706f2543Smrg
287706f2543Smrgtypedef struct
288706f2543Smrg{
289706f2543Smrg	GenericListRec list;
290706f2543Smrg	char *al_adaptor_str;
291706f2543Smrg	XF86ConfVideoAdaptorPtr al_adaptor;
292706f2543Smrg}
293706f2543SmrgXF86ConfAdaptorLinkRec, *XF86ConfAdaptorLinkPtr;
294706f2543Smrg
295706f2543Smrgtypedef struct
296706f2543Smrg{
297706f2543Smrg	GenericListRec list;
298706f2543Smrg	char *scrn_identifier;
299706f2543Smrg	char *scrn_obso_driver;
300706f2543Smrg	int scrn_defaultdepth;
301706f2543Smrg	int scrn_defaultbpp;
302706f2543Smrg	int scrn_defaultfbbpp;
303706f2543Smrg	char *scrn_monitor_str;
304706f2543Smrg	XF86ConfMonitorPtr scrn_monitor;
305706f2543Smrg	char *scrn_device_str;
306706f2543Smrg	XF86ConfDevicePtr scrn_device;
307706f2543Smrg	XF86ConfAdaptorLinkPtr scrn_adaptor_lst;
308706f2543Smrg	XF86ConfDisplayPtr scrn_display_lst;
309706f2543Smrg	XF86OptionPtr scrn_option_lst;
310706f2543Smrg	char *scrn_comment;
311706f2543Smrg	int scrn_virtualX, scrn_virtualY;
312706f2543Smrg}
313706f2543SmrgXF86ConfScreenRec, *XF86ConfScreenPtr;
314706f2543Smrg
315706f2543Smrgtypedef struct
316706f2543Smrg{
317706f2543Smrg	GenericListRec list;
318706f2543Smrg	char *inp_identifier;
319706f2543Smrg	char *inp_driver;
320706f2543Smrg	XF86OptionPtr inp_option_lst;
321706f2543Smrg	char *inp_comment;
322706f2543Smrg}
323706f2543SmrgXF86ConfInputRec, *XF86ConfInputPtr;
324706f2543Smrg
325706f2543Smrgtypedef struct
326706f2543Smrg{
327706f2543Smrg	GenericListRec list;
328706f2543Smrg	XF86ConfInputPtr iref_inputdev;
329706f2543Smrg	char *iref_inputdev_str;
330706f2543Smrg	XF86OptionPtr iref_option_lst;
331706f2543Smrg}
332706f2543SmrgXF86ConfInputrefRec, *XF86ConfInputrefPtr;
333706f2543Smrg
334706f2543Smrgtypedef struct
335706f2543Smrg{
336706f2543Smrg	Bool set;
337706f2543Smrg	Bool val;
338706f2543Smrg}
339706f2543Smrgxf86TriState;
340706f2543Smrg
341706f2543Smrgtypedef struct
342706f2543Smrg{
343706f2543Smrg	struct list entry;
344706f2543Smrg	char **values;
345706f2543Smrg}
346706f2543Smrgxf86MatchGroup;
347706f2543Smrg
348706f2543Smrgtypedef struct
349706f2543Smrg{
350706f2543Smrg	GenericListRec list;
351706f2543Smrg	char *identifier;
352706f2543Smrg	char *driver;
353706f2543Smrg	struct list match_product;
354706f2543Smrg	struct list match_vendor;
355706f2543Smrg	struct list match_device;
356706f2543Smrg	struct list match_os;
357706f2543Smrg	struct list match_pnpid;
358706f2543Smrg	struct list match_usbid;
359706f2543Smrg	struct list match_driver;
360706f2543Smrg	struct list match_tag;
361706f2543Smrg	xf86TriState is_keyboard;
362706f2543Smrg	xf86TriState is_pointer;
363706f2543Smrg	xf86TriState is_joystick;
364706f2543Smrg	xf86TriState is_tablet;
365706f2543Smrg	xf86TriState is_touchpad;
366706f2543Smrg	xf86TriState is_touchscreen;
367706f2543Smrg	XF86OptionPtr option_lst;
368706f2543Smrg	char *comment;
369706f2543Smrg}
370706f2543SmrgXF86ConfInputClassRec, *XF86ConfInputClassPtr;
371706f2543Smrg
372706f2543Smrg/* Values for adj_where */
373706f2543Smrg#define CONF_ADJ_OBSOLETE	-1
374706f2543Smrg#define CONF_ADJ_ABSOLUTE	0
375706f2543Smrg#define CONF_ADJ_RIGHTOF	1
376706f2543Smrg#define CONF_ADJ_LEFTOF		2
377706f2543Smrg#define CONF_ADJ_ABOVE		3
378706f2543Smrg#define CONF_ADJ_BELOW		4
379706f2543Smrg#define CONF_ADJ_RELATIVE	5
380706f2543Smrg
381706f2543Smrgtypedef struct
382706f2543Smrg{
383706f2543Smrg	GenericListRec list;
384706f2543Smrg	int adj_scrnum;
385706f2543Smrg	XF86ConfScreenPtr adj_screen;
386706f2543Smrg	char *adj_screen_str;
387706f2543Smrg	XF86ConfScreenPtr adj_top;
388706f2543Smrg	char *adj_top_str;
389706f2543Smrg	XF86ConfScreenPtr adj_bottom;
390706f2543Smrg	char *adj_bottom_str;
391706f2543Smrg	XF86ConfScreenPtr adj_left;
392706f2543Smrg	char *adj_left_str;
393706f2543Smrg	XF86ConfScreenPtr adj_right;
394706f2543Smrg	char *adj_right_str;
395706f2543Smrg	int adj_where;
396706f2543Smrg	int adj_x;
397706f2543Smrg	int adj_y;
398706f2543Smrg	char *adj_refscreen;
399706f2543Smrg}
400706f2543SmrgXF86ConfAdjacencyRec, *XF86ConfAdjacencyPtr;
401706f2543Smrg
402706f2543Smrgtypedef struct
403706f2543Smrg{
404706f2543Smrg	GenericListRec list;
405706f2543Smrg	char *inactive_device_str;
406706f2543Smrg	XF86ConfDevicePtr inactive_device;
407706f2543Smrg}
408706f2543SmrgXF86ConfInactiveRec, *XF86ConfInactivePtr;
409706f2543Smrg
410706f2543Smrgtypedef struct
411706f2543Smrg{
412706f2543Smrg	GenericListRec list;
413706f2543Smrg	char *lay_identifier;
414706f2543Smrg	XF86ConfAdjacencyPtr lay_adjacency_lst;
415706f2543Smrg	XF86ConfInactivePtr lay_inactive_lst;
416706f2543Smrg	XF86ConfInputrefPtr lay_input_lst;
417706f2543Smrg	XF86OptionPtr lay_option_lst;
418706f2543Smrg	char *lay_comment;
419706f2543Smrg}
420706f2543SmrgXF86ConfLayoutRec, *XF86ConfLayoutPtr;
421706f2543Smrg
422706f2543Smrgtypedef struct
423706f2543Smrg{
424706f2543Smrg	GenericListRec list;
425706f2543Smrg	char *vs_name;
426706f2543Smrg	char *vs_identifier;
427706f2543Smrg	XF86OptionPtr vs_option_lst;
428706f2543Smrg	char *vs_comment;
429706f2543Smrg}
430706f2543SmrgXF86ConfVendSubRec, *XF86ConfVendSubPtr;
431706f2543Smrg
432706f2543Smrgtypedef struct
433706f2543Smrg{
434706f2543Smrg	GenericListRec list;
435706f2543Smrg	char *vnd_identifier;
436706f2543Smrg	XF86OptionPtr vnd_option_lst;
437706f2543Smrg	XF86ConfVendSubPtr vnd_sub_lst;
438706f2543Smrg	char *vnd_comment;
439706f2543Smrg}
440706f2543SmrgXF86ConfVendorRec, *XF86ConfVendorPtr;
441706f2543Smrg
442706f2543Smrgtypedef struct
443706f2543Smrg{
444706f2543Smrg	char *dri_group_name;
445706f2543Smrg	int dri_group;
446706f2543Smrg	int dri_mode;
447706f2543Smrg	char *dri_comment;
448706f2543Smrg}
449706f2543SmrgXF86ConfDRIRec, *XF86ConfDRIPtr;
450706f2543Smrg
451706f2543Smrgtypedef struct
452706f2543Smrg{
453706f2543Smrg	XF86OptionPtr ext_option_lst;
454706f2543Smrg	char *extensions_comment;
455706f2543Smrg}
456706f2543SmrgXF86ConfExtensionsRec, *XF86ConfExtensionsPtr;
457706f2543Smrg
458706f2543Smrgtypedef struct
459706f2543Smrg{
460706f2543Smrg	XF86ConfFilesPtr conf_files;
461706f2543Smrg	XF86ConfModulePtr conf_modules;
462706f2543Smrg	XF86ConfFlagsPtr conf_flags;
463706f2543Smrg	XF86ConfVideoAdaptorPtr conf_videoadaptor_lst;
464706f2543Smrg	XF86ConfModesPtr conf_modes_lst;
465706f2543Smrg	XF86ConfMonitorPtr conf_monitor_lst;
466706f2543Smrg	XF86ConfDevicePtr conf_device_lst;
467706f2543Smrg	XF86ConfScreenPtr conf_screen_lst;
468706f2543Smrg	XF86ConfInputPtr conf_input_lst;
469706f2543Smrg	XF86ConfInputClassPtr conf_inputclass_lst;
470706f2543Smrg	XF86ConfLayoutPtr conf_layout_lst;
471706f2543Smrg	XF86ConfVendorPtr conf_vendor_lst;
472706f2543Smrg	XF86ConfDRIPtr conf_dri;
473706f2543Smrg	XF86ConfExtensionsPtr conf_extensions;
474706f2543Smrg	char *conf_comment;
475706f2543Smrg}
476706f2543SmrgXF86ConfigRec, *XF86ConfigPtr;
477706f2543Smrg
478706f2543Smrgtypedef struct
479706f2543Smrg{
480706f2543Smrg	int token;			/* id of the token */
481706f2543Smrg	char *name;			/* pointer to the LOWERCASED name */
482706f2543Smrg}
483706f2543Smrgxf86ConfigSymTabRec, *xf86ConfigSymTabPtr;
484706f2543Smrg
485706f2543Smrg/*
486706f2543Smrg * prototypes for public functions
487706f2543Smrg */
488706f2543Smrgextern void xf86initConfigFiles(void);
489706f2543Smrgextern const char *xf86openConfigFile(const char *path, const char *cmdline,
490706f2543Smrg				      const char *projroot);
491706f2543Smrgextern const char *xf86openConfigDirFiles(const char *path, const char *cmdline,
492706f2543Smrg					  const char *projroot);
493706f2543Smrgextern void xf86setBuiltinConfig(const char *config[]);
494706f2543Smrgextern XF86ConfigPtr xf86readConfigFile(void);
495706f2543Smrgextern void xf86closeConfigFile(void);
496706f2543Smrgextern void xf86freeConfig(XF86ConfigPtr p);
497706f2543Smrgextern int xf86writeConfigFile(const char *, XF86ConfigPtr);
498706f2543Smrgextern _X_EXPORT XF86ConfDevicePtr xf86findDevice(const char *ident, XF86ConfDevicePtr p);
499706f2543Smrgextern _X_EXPORT XF86ConfDevicePtr xf86findDeviceByDriver(const char *driver, XF86ConfDevicePtr p);
500706f2543Smrgextern _X_EXPORT XF86ConfLayoutPtr xf86findLayout(const char *name, XF86ConfLayoutPtr list);
501706f2543Smrgextern _X_EXPORT XF86ConfMonitorPtr xf86findMonitor(const char *ident, XF86ConfMonitorPtr p);
502706f2543Smrgextern _X_EXPORT XF86ConfModesPtr xf86findModes(const char *ident, XF86ConfModesPtr p);
503706f2543Smrgextern _X_EXPORT XF86ConfModeLinePtr xf86findModeLine(const char *ident, XF86ConfModeLinePtr p);
504706f2543Smrgextern _X_EXPORT XF86ConfScreenPtr xf86findScreen(const char *ident, XF86ConfScreenPtr p);
505706f2543Smrgextern _X_EXPORT XF86ConfInputPtr xf86findInput(const char *ident, XF86ConfInputPtr p);
506706f2543Smrgextern _X_EXPORT XF86ConfInputPtr xf86findInputByDriver(const char *driver, XF86ConfInputPtr p);
507706f2543Smrgextern _X_EXPORT XF86ConfVideoAdaptorPtr xf86findVideoAdaptor(const char *ident,
508706f2543Smrg						XF86ConfVideoAdaptorPtr p);
509706f2543Smrgextern int xf86layoutAddInputDevices(XF86ConfigPtr config, XF86ConfLayoutPtr layout);
510706f2543Smrg
511706f2543Smrgextern _X_EXPORT GenericListPtr xf86addListItem(GenericListPtr head, GenericListPtr c_new);
512706f2543Smrgextern _X_EXPORT int xf86itemNotSublist(GenericListPtr list_1, GenericListPtr list_2);
513706f2543Smrg
514706f2543Smrgextern _X_EXPORT int xf86pathIsAbsolute(const char *path);
515706f2543Smrgextern _X_EXPORT int xf86pathIsSafe(const char *path);
516706f2543Smrgextern _X_EXPORT char *xf86addComment(char *cur, char *add);
517706f2543Smrgextern _X_EXPORT Bool xf86getBoolValue(Bool *val, const char *str);
518706f2543Smrg
519706f2543Smrg#endif /* _xf86Parser_h_ */
520