xf86Parser.h revision 4642e01f
1/* 2 * 3 * Copyright (c) 1997 Metro Link Incorporated 4 * 5 * Permission is hereby granted, free of charge, to any person obtaining a 6 * copy of this software and associated documentation files (the "Software"), 7 * to deal in the Software without restriction, including without limitation 8 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 9 * and/or sell copies of the Software, and to permit persons to whom the 10 * Software is furnished to do so, subject to the following conditions: 11 * 12 * The above copyright notice and this permission notice shall be included in 13 * all copies or substantial portions of the Software. 14 * 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18 * THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 19 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF 20 * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 * SOFTWARE. 22 * 23 * Except as contained in this notice, the name of the Metro Link shall not be 24 * used in advertising or otherwise to promote the sale, use or other dealings 25 * in this Software without prior written authorization from Metro Link. 26 * 27 */ 28/* 29 * Copyright (c) 1997-2003 by The XFree86 Project, Inc. 30 * 31 * Permission is hereby granted, free of charge, to any person obtaining a 32 * copy of this software and associated documentation files (the "Software"), 33 * to deal in the Software without restriction, including without limitation 34 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 35 * and/or sell copies of the Software, and to permit persons to whom the 36 * Software is furnished to do so, subject to the following conditions: 37 * 38 * The above copyright notice and this permission notice shall be included in 39 * all copies or substantial portions of the Software. 40 * 41 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 42 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 43 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 44 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 45 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 46 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 47 * OTHER DEALINGS IN THE SOFTWARE. 48 * 49 * Except as contained in this notice, the name of the copyright holder(s) 50 * and author(s) shall not be used in advertising or otherwise to promote 51 * the sale, use or other dealings in this Software without prior written 52 * authorization from the copyright holder(s) and author(s). 53 */ 54 55 56/* 57 * This file contains the external interfaces for the XFree86 configuration 58 * file parser. 59 */ 60#ifdef HAVE_XORG_CONFIG_H 61#include <xorg-config.h> 62#endif 63 64#ifndef _xf86Parser_h_ 65#define _xf86Parser_h_ 66 67#include "xf86Optrec.h" 68 69#define HAVE_PARSER_DECLS 70 71typedef struct 72{ 73 char *file_logfile; 74 char *file_modulepath; 75 char *file_inputdevs; 76 char *file_fontpath; 77 char *file_comment; 78 char *file_xkbdir; 79} 80XF86ConfFilesRec, *XF86ConfFilesPtr; 81 82/* Values for load_type */ 83#define XF86_LOAD_MODULE 0 84#define XF86_LOAD_DRIVER 1 85#define XF86_DISABLE_MODULE 2 86 87typedef struct 88{ 89 GenericListRec list; 90 int load_type; 91 char *load_name; 92 XF86OptionPtr load_opt; 93 char *load_comment; 94 int ignore; 95} 96XF86LoadRec, *XF86LoadPtr; 97 98typedef struct 99{ 100 XF86LoadPtr mod_load_lst; 101 XF86LoadPtr mod_disable_lst; 102 char *mod_comment; 103} 104XF86ConfModuleRec, *XF86ConfModulePtr; 105 106#define CONF_IMPLICIT_KEYBOARD "Implicit Core Keyboard" 107 108#define CONF_IMPLICIT_POINTER "Implicit Core Pointer" 109 110#define XF86CONF_PHSYNC 0x0001 111#define XF86CONF_NHSYNC 0x0002 112#define XF86CONF_PVSYNC 0x0004 113#define XF86CONF_NVSYNC 0x0008 114#define XF86CONF_INTERLACE 0x0010 115#define XF86CONF_DBLSCAN 0x0020 116#define XF86CONF_CSYNC 0x0040 117#define XF86CONF_PCSYNC 0x0080 118#define XF86CONF_NCSYNC 0x0100 119#define XF86CONF_HSKEW 0x0200 /* hskew provided */ 120#define XF86CONF_BCAST 0x0400 121#define XF86CONF_CUSTOM 0x0800 /* timing numbers customized by editor */ 122#define XF86CONF_VSCAN 0x1000 123 124typedef struct 125{ 126 GenericListRec list; 127 char *ml_identifier; 128 int ml_clock; 129 int ml_hdisplay; 130 int ml_hsyncstart; 131 int ml_hsyncend; 132 int ml_htotal; 133 int ml_vdisplay; 134 int ml_vsyncstart; 135 int ml_vsyncend; 136 int ml_vtotal; 137 int ml_vscan; 138 int ml_flags; 139 int ml_hskew; 140 char *ml_comment; 141} 142XF86ConfModeLineRec, *XF86ConfModeLinePtr; 143 144typedef struct 145{ 146 GenericListRec list; 147 char *vp_identifier; 148 XF86OptionPtr vp_option_lst; 149 char *vp_comment; 150} 151XF86ConfVideoPortRec, *XF86ConfVideoPortPtr; 152 153typedef struct 154{ 155 GenericListRec list; 156 char *va_identifier; 157 char *va_vendor; 158 char *va_board; 159 char *va_busid; 160 char *va_driver; 161 XF86OptionPtr va_option_lst; 162 XF86ConfVideoPortPtr va_port_lst; 163 char *va_fwdref; 164 char *va_comment; 165} 166XF86ConfVideoAdaptorRec, *XF86ConfVideoAdaptorPtr; 167 168#define CONF_MAX_HSYNC 8 169#define CONF_MAX_VREFRESH 8 170 171typedef struct 172{ 173 float hi, lo; 174} 175parser_range; 176 177typedef struct 178{ 179 int red, green, blue; 180} 181parser_rgb; 182 183typedef struct 184{ 185 GenericListRec list; 186 char *modes_identifier; 187 XF86ConfModeLinePtr mon_modeline_lst; 188 char *modes_comment; 189} 190XF86ConfModesRec, *XF86ConfModesPtr; 191 192typedef struct 193{ 194 GenericListRec list; 195 char *ml_modes_str; 196 XF86ConfModesPtr ml_modes; 197} 198XF86ConfModesLinkRec, *XF86ConfModesLinkPtr; 199 200typedef struct 201{ 202 GenericListRec list; 203 char *mon_identifier; 204 char *mon_vendor; 205 char *mon_modelname; 206 int mon_width; /* in mm */ 207 int mon_height; /* in mm */ 208 XF86ConfModeLinePtr mon_modeline_lst; 209 int mon_n_hsync; 210 parser_range mon_hsync[CONF_MAX_HSYNC]; 211 int mon_n_vrefresh; 212 parser_range mon_vrefresh[CONF_MAX_VREFRESH]; 213 float mon_gamma_red; 214 float mon_gamma_green; 215 float mon_gamma_blue; 216 XF86OptionPtr mon_option_lst; 217 XF86ConfModesLinkPtr mon_modes_sect_lst; 218 char *mon_comment; 219} 220XF86ConfMonitorRec, *XF86ConfMonitorPtr; 221 222#define CONF_MAXDACSPEEDS 4 223#define CONF_MAXCLOCKS 128 224 225typedef struct 226{ 227 GenericListRec list; 228 char *dev_identifier; 229 char *dev_vendor; 230 char *dev_board; 231 char *dev_chipset; 232 char *dev_busid; 233 char *dev_card; 234 char *dev_driver; 235 char *dev_ramdac; 236 int dev_dacSpeeds[CONF_MAXDACSPEEDS]; 237 int dev_videoram; 238 int dev_textclockfreq; 239 unsigned long dev_bios_base; 240 unsigned long dev_mem_base; 241 unsigned long dev_io_base; 242 char *dev_clockchip; 243 int dev_clocks; 244 int dev_clock[CONF_MAXCLOCKS]; 245 int dev_chipid; 246 int dev_chiprev; 247 int dev_irq; 248 int dev_screen; 249 XF86OptionPtr dev_option_lst; 250 char *dev_comment; 251} 252XF86ConfDeviceRec, *XF86ConfDevicePtr; 253 254typedef struct 255{ 256 GenericListRec list; 257 char *mode_name; 258} 259XF86ModeRec, *XF86ModePtr; 260 261typedef struct 262{ 263 GenericListRec list; 264 int disp_frameX0; 265 int disp_frameY0; 266 int disp_virtualX; 267 int disp_virtualY; 268 int disp_depth; 269 int disp_bpp; 270 char *disp_visual; 271 parser_rgb disp_weight; 272 parser_rgb disp_black; 273 parser_rgb disp_white; 274 XF86ModePtr disp_mode_lst; 275 XF86OptionPtr disp_option_lst; 276 char *disp_comment; 277} 278XF86ConfDisplayRec, *XF86ConfDisplayPtr; 279 280typedef struct 281{ 282 XF86OptionPtr flg_option_lst; 283 char *flg_comment; 284} 285XF86ConfFlagsRec, *XF86ConfFlagsPtr; 286 287typedef struct 288{ 289 GenericListRec list; 290 char *al_adaptor_str; 291 XF86ConfVideoAdaptorPtr al_adaptor; 292} 293XF86ConfAdaptorLinkRec, *XF86ConfAdaptorLinkPtr; 294 295typedef struct 296{ 297 GenericListRec list; 298 char *scrn_identifier; 299 char *scrn_obso_driver; 300 int scrn_defaultdepth; 301 int scrn_defaultbpp; 302 int scrn_defaultfbbpp; 303 char *scrn_monitor_str; 304 XF86ConfMonitorPtr scrn_monitor; 305 char *scrn_device_str; 306 XF86ConfDevicePtr scrn_device; 307 XF86ConfAdaptorLinkPtr scrn_adaptor_lst; 308 XF86ConfDisplayPtr scrn_display_lst; 309 XF86OptionPtr scrn_option_lst; 310 char *scrn_comment; 311 int scrn_virtualX, scrn_virtualY; 312} 313XF86ConfScreenRec, *XF86ConfScreenPtr; 314 315typedef struct 316{ 317 GenericListRec list; 318 char *inp_identifier; 319 char *inp_driver; 320 XF86OptionPtr inp_option_lst; 321 char *inp_comment; 322} 323XF86ConfInputRec, *XF86ConfInputPtr; 324 325typedef struct 326{ 327 GenericListRec list; 328 XF86ConfInputPtr iref_inputdev; 329 char *iref_inputdev_str; 330 XF86OptionPtr iref_option_lst; 331} 332XF86ConfInputrefRec, *XF86ConfInputrefPtr; 333 334/* Values for adj_where */ 335#define CONF_ADJ_OBSOLETE -1 336#define CONF_ADJ_ABSOLUTE 0 337#define CONF_ADJ_RIGHTOF 1 338#define CONF_ADJ_LEFTOF 2 339#define CONF_ADJ_ABOVE 3 340#define CONF_ADJ_BELOW 4 341#define CONF_ADJ_RELATIVE 5 342 343typedef struct 344{ 345 GenericListRec list; 346 int adj_scrnum; 347 XF86ConfScreenPtr adj_screen; 348 char *adj_screen_str; 349 XF86ConfScreenPtr adj_top; 350 char *adj_top_str; 351 XF86ConfScreenPtr adj_bottom; 352 char *adj_bottom_str; 353 XF86ConfScreenPtr adj_left; 354 char *adj_left_str; 355 XF86ConfScreenPtr adj_right; 356 char *adj_right_str; 357 int adj_where; 358 int adj_x; 359 int adj_y; 360 char *adj_refscreen; 361} 362XF86ConfAdjacencyRec, *XF86ConfAdjacencyPtr; 363 364typedef struct 365{ 366 GenericListRec list; 367 char *inactive_device_str; 368 XF86ConfDevicePtr inactive_device; 369} 370XF86ConfInactiveRec, *XF86ConfInactivePtr; 371 372typedef struct 373{ 374 GenericListRec list; 375 char *lay_identifier; 376 XF86ConfAdjacencyPtr lay_adjacency_lst; 377 XF86ConfInactivePtr lay_inactive_lst; 378 XF86ConfInputrefPtr lay_input_lst; 379 XF86OptionPtr lay_option_lst; 380 char *lay_comment; 381} 382XF86ConfLayoutRec, *XF86ConfLayoutPtr; 383 384typedef struct 385{ 386 GenericListRec list; 387 char *vs_name; 388 char *vs_identifier; 389 XF86OptionPtr vs_option_lst; 390 char *vs_comment; 391} 392XF86ConfVendSubRec, *XF86ConfVendSubPtr; 393 394typedef struct 395{ 396 GenericListRec list; 397 char *vnd_identifier; 398 XF86OptionPtr vnd_option_lst; 399 XF86ConfVendSubPtr vnd_sub_lst; 400 char *vnd_comment; 401} 402XF86ConfVendorRec, *XF86ConfVendorPtr; 403 404typedef struct 405{ 406 GenericListRec list; 407 int buf_count; 408 int buf_size; 409 char *buf_flags; 410 char *buf_comment; 411} 412XF86ConfBuffersRec, *XF86ConfBuffersPtr; 413 414typedef struct 415{ 416 char *dri_group_name; 417 int dri_group; 418 int dri_mode; 419 XF86ConfBuffersPtr dri_buffers_lst; 420 char *dri_comment; 421} 422XF86ConfDRIRec, *XF86ConfDRIPtr; 423 424typedef struct 425{ 426 XF86OptionPtr ext_option_lst; 427 char *extensions_comment; 428} 429XF86ConfExtensionsRec, *XF86ConfExtensionsPtr; 430 431typedef struct 432{ 433 XF86ConfFilesPtr conf_files; 434 XF86ConfModulePtr conf_modules; 435 XF86ConfFlagsPtr conf_flags; 436 XF86ConfVideoAdaptorPtr conf_videoadaptor_lst; 437 XF86ConfModesPtr conf_modes_lst; 438 XF86ConfMonitorPtr conf_monitor_lst; 439 XF86ConfDevicePtr conf_device_lst; 440 XF86ConfScreenPtr conf_screen_lst; 441 XF86ConfInputPtr conf_input_lst; 442 XF86ConfLayoutPtr conf_layout_lst; 443 XF86ConfVendorPtr conf_vendor_lst; 444 XF86ConfDRIPtr conf_dri; 445 XF86ConfExtensionsPtr conf_extensions; 446 char *conf_comment; 447} 448XF86ConfigRec, *XF86ConfigPtr; 449 450typedef struct 451{ 452 int token; /* id of the token */ 453 char *name; /* pointer to the LOWERCASED name */ 454} 455xf86ConfigSymTabRec, *xf86ConfigSymTabPtr; 456 457/* 458 * prototypes for public functions 459 */ 460extern const char *xf86openConfigFile (const char *, const char *, 461 const char *); 462extern void xf86setBuiltinConfig(const char *config[]); 463extern XF86ConfigPtr xf86readConfigFile (void); 464extern void xf86closeConfigFile (void); 465extern void xf86freeConfig (XF86ConfigPtr p); 466extern int xf86writeConfigFile (const char *, XF86ConfigPtr); 467XF86ConfDevicePtr xf86findDevice(const char *ident, XF86ConfDevicePtr p); 468XF86ConfLayoutPtr xf86findLayout(const char *name, XF86ConfLayoutPtr list); 469XF86ConfMonitorPtr xf86findMonitor(const char *ident, XF86ConfMonitorPtr p); 470XF86ConfModesPtr xf86findModes(const char *ident, XF86ConfModesPtr p); 471XF86ConfModeLinePtr xf86findModeLine(const char *ident, XF86ConfModeLinePtr p); 472XF86ConfScreenPtr xf86findScreen(const char *ident, XF86ConfScreenPtr p); 473XF86ConfInputPtr xf86findInput(const char *ident, XF86ConfInputPtr p); 474XF86ConfInputPtr xf86findInputByDriver(const char *driver, XF86ConfInputPtr p); 475XF86ConfVideoAdaptorPtr xf86findVideoAdaptor(const char *ident, 476 XF86ConfVideoAdaptorPtr p); 477 478GenericListPtr xf86addListItem(GenericListPtr head, GenericListPtr c_new); 479int xf86itemNotSublist(GenericListPtr list_1, GenericListPtr list_2); 480 481int xf86pathIsAbsolute(const char *path); 482int xf86pathIsSafe(const char *path); 483char *xf86addComment(char *cur, char *add); 484 485#endif /* _xf86Parser_h_ */ 486