XF86ConfModesPtr xf86parseModesSection (void) { int has_ident = FALSE; int token; parsePrologue (XF86ConfModesPtr, XF86ConfModesRec) while ((token = xf86getToken (ModesTab)) != ENDSECTION) { switch (token) { case COMMENT: ptr->modes_comment = xf86addComment(ptr->modes_comment, val.str); break; case IDENTIFIER: if (xf86getSubToken (&(ptr->modes_comment)) != STRING) Error (QUOTE_MSG, "Identifier"); if (has_ident == TRUE) Error (MULTIPLE_MSG, "Identifier"); ptr->modes_identifier = xf86configStrdup(val.str); has_ident = TRUE; break; case MODE: HANDLE_LIST (mon_modeline_lst, xf86parseVerboseMode, XF86ConfModeLinePtr); break; case MODELINE: HANDLE_LIST (mon_modeline_lst, xf86parseModeLine, XF86ConfModeLinePtr); break; case OPTION: ptr->modes_option_lst = xf86parseOption(ptr->modes_option_lst); break; default: xf86parseError (INVALID_KEYWORD_MSG, xf86tokenString ()); CLEANUP (ptr); return NULL; } } if (!has_ident) Error (NO_IDENT_MSG, NULL); #ifdef DEBUG printf ("Modes section parsed\n"); #endif return ptr; }
static GList * nautilus_python_object_get_columns (NautilusColumnProvider *provider) { NautilusPythonObject *object = (NautilusPythonObject*)provider; GList *ret = NULL; PyObject *py_ret = NULL; PyGILState_STATE state = pyg_gil_state_ensure(); \ debug_enter(); CHECK_OBJECT(object); CHECK_METHOD_NAME(object->instance); py_ret = PyObject_CallMethod(object->instance, METHOD_PREFIX METHOD_NAME, NULL); HANDLE_RETVAL(py_ret); HANDLE_LIST(py_ret, NautilusColumn, "Nautilus.Column"); beach: if (py_ret != NULL) Py_XDECREF(py_ret); pyg_gil_state_release(state); return ret; }
static GList * nautilus_python_object_get_property_pages (NautilusPropertyPageProvider *provider, GList *files) { NautilusPythonObject *object = (NautilusPythonObject*)provider; PyObject *py_files, *py_ret = NULL; GList *ret = NULL; PyGILState_STATE state = pyg_gil_state_ensure(); debug_enter(); CHECK_OBJECT(object); CHECK_METHOD_NAME(object->instance); CONVERT_LIST(py_files, files); py_ret = PyObject_CallMethod(object->instance, METHOD_PREFIX METHOD_NAME, "(N)", py_files); HANDLE_RETVAL(py_ret); HANDLE_LIST(py_ret, NautilusPropertyPage, "Nautilus.PropertyPage"); beach: Py_XDECREF(py_ret); pyg_gil_state_release(state); return ret; }
XF86ConfVendorPtr xf86parseVendorSection (void) { int has_ident = FALSE; int token; parsePrologue (XF86ConfVendorPtr, XF86ConfVendorRec) while ((token = xf86getToken (VendorTab)) != ENDSECTION) { switch (token) { case COMMENT: ptr->vnd_comment = xf86addComment(ptr->vnd_comment, val.str); break; case IDENTIFIER: if (xf86getSubToken (&(ptr->vnd_comment)) != STRING) Error (QUOTE_MSG, "Identifier"); if (has_ident == TRUE) Error (MULTIPLE_MSG, "Identifier"); ptr->vnd_identifier = val.str; has_ident = TRUE; break; case OPTION: ptr->vnd_option_lst = xf86parseOption(ptr->vnd_option_lst); break; case SUBSECTION: if (xf86getSubToken (&(ptr->vnd_comment)) != STRING) Error (QUOTE_MSG, "SubSection"); { HANDLE_LIST (vnd_sub_lst, xf86parseVendorSubSection, XF86ConfVendSubPtr); } break; case EOF_TOKEN: Error (UNEXPECTED_EOF_MSG, NULL); break; default: Error (INVALID_KEYWORD_MSG, xf86tokenString ()); break; } } if (!has_ident) Error (NO_IDENT_MSG, NULL); #ifdef DEBUG printf ("Vendor section parsed\n"); #endif return ptr; }
XF86ConfDRIPtr xf86parseDRISection (void) { int token; parsePrologue (XF86ConfDRIPtr, XF86ConfDRIRec); /* Zero is a valid value for this. */ ptr->dri_group = -1; while ((token = xf86getToken (DRITab)) != ENDSECTION) { switch (token) { case GROUP: if ((token = xf86getSubToken (&(ptr->dri_comment))) == STRING) ptr->dri_group_name = val.str; else if (token == NUMBER) ptr->dri_group = val.num; else Error (GROUP_MSG, NULL); break; case MODE: if (xf86getSubToken (&(ptr->dri_comment)) != NUMBER) Error (NUMBER_MSG, "Mode"); if (val.numType != PARSE_OCTAL) Error (MUST_BE_OCTAL_MSG, val.num); ptr->dri_mode = val.num; break; case BUFFERS: HANDLE_LIST (dri_buffers_lst, xf86parseBuffers, XF86ConfBuffersPtr); break; case EOF_TOKEN: Error (UNEXPECTED_EOF_MSG, NULL); break; case COMMENT: ptr->dri_comment = xf86addComment(ptr->dri_comment, val.str); break; default: Error (INVALID_KEYWORD_MSG, xf86tokenString ()); break; } } #ifdef DEBUG ErrorF("DRI section parsed\n"); #endif return ptr; }
static GList * nemo_python_object_get_file_items (NemoMenuProvider *provider, GtkWidget *window, GList *files) { NemoPythonObject *object = (NemoPythonObject*)provider; GList *ret = NULL; PyObject *py_ret = NULL, *py_files; PyGILState_STATE state = pyg_gil_state_ensure(); debug_enter(); CHECK_OBJECT(object); if (PyObject_HasAttrString(object->instance, "get_file_items_full")) { CONVERT_LIST(py_files, files); py_ret = PyObject_CallMethod(object->instance, METHOD_PREFIX "get_file_items_full", "(NNN)", pygobject_new((GObject *)provider), pygobject_new((GObject *)window), py_files); } else if (PyObject_HasAttrString(object->instance, "get_file_items")) { CONVERT_LIST(py_files, files); py_ret = PyObject_CallMethod(object->instance, METHOD_PREFIX METHOD_NAME, "(NN)", pygobject_new((GObject *)window), py_files); } else { goto beach; } HANDLE_RETVAL(py_ret); HANDLE_LIST(py_ret, NemoMenuItem, "Nemo.MenuItem"); beach: free_pygobject_data_list(files); Py_XDECREF(py_ret); pyg_gil_state_release(state); return ret; }
static GList * caja_python_object_get_background_items (CajaMenuProvider *provider, GtkWidget *window, CajaFileInfo *file) { CajaPythonObject *object = (CajaPythonObject*)provider; GList *ret = NULL; PyObject *py_ret = NULL; PyGILState_STATE state = pyg_gil_state_ensure(); debug_enter(); CHECK_OBJECT(object); if (PyObject_HasAttrString(object->instance, "get_background_items_full")) { py_ret = PyObject_CallMethod(object->instance, METHOD_PREFIX "get_background_items_full", "(NNN)", pygobject_new((GObject *)provider), pygobject_new((GObject *)window), pygobject_new((GObject *)file)); } else if (PyObject_HasAttrString(object->instance, "get_background_items")) { py_ret = PyObject_CallMethod(object->instance, METHOD_PREFIX METHOD_NAME, "(NN)", pygobject_new((GObject *)window), pygobject_new((GObject *)file)); } else { goto beach; } HANDLE_RETVAL(py_ret); HANDLE_LIST(py_ret, CajaMenuItem, "Caja.MenuItem"); beach: free_pygobject_data(file, NULL); Py_XDECREF(py_ret); pyg_gil_state_release(state); return ret; }
XF86ConfigPtr xf86parseConfigFile (XF86ConfigPtr ptr) { int token; if (!ptr) { if ((ptr = xf86confcalloc (1, sizeof (XF86ConfigRec))) == NULL) { return NULL; } memset (ptr, 0, sizeof (XF86ConfigRec)); } while ((token = xf86getToken (TopLevelTab)) != EOF_TOKEN) { switch (token) { case COMMENT: ptr->conf_comment = xf86addComment(ptr->conf_comment, val.str); break; case SECTION: if (xf86getSubToken (&(ptr->conf_comment)) != STRING) { xf86parseError (QUOTE_MSG, "Section"); CLEANUP (ptr); return (NULL); } xf86setSection (val.str); if (xf86nameCompare (val.str, "files") == 0) { xf86conffree(val.str); val.str = NULL; HANDLE_LIST (conf_files_lst, xf86parseFilesSection, XF86ConfFilesPtr); } else if (xf86nameCompare (val.str, "serverflags") == 0) { xf86conffree(val.str); val.str = NULL; HANDLE_LIST (conf_flags_lst, xf86parseFlagsSection, XF86ConfFlagsPtr); } else if (xf86nameCompare (val.str, "keyboard") == 0) { xf86conffree(val.str); val.str = NULL; HANDLE_LIST (conf_input_lst, xf86parseKeyboardSection, XF86ConfInputPtr); } else if (xf86nameCompare (val.str, "pointer") == 0) { xf86conffree(val.str); val.str = NULL; HANDLE_LIST (conf_input_lst, xf86parsePointerSection, XF86ConfInputPtr); } else if (xf86nameCompare (val.str, "videoadaptor") == 0) { xf86conffree(val.str); val.str = NULL; HANDLE_LIST (conf_videoadaptor_lst, xf86parseVideoAdaptorSection, XF86ConfVideoAdaptorPtr); } else if (xf86nameCompare (val.str, "device") == 0) { xf86conffree(val.str); val.str = NULL; HANDLE_LIST (conf_device_lst, xf86parseDeviceSection, XF86ConfDevicePtr); } else if (xf86nameCompare (val.str, "monitor") == 0) { xf86conffree(val.str); val.str = NULL; HANDLE_LIST (conf_monitor_lst, xf86parseMonitorSection, XF86ConfMonitorPtr); } else if (xf86nameCompare (val.str, "modes") == 0) { xf86conffree(val.str); val.str = NULL; HANDLE_LIST (conf_modes_lst, xf86parseModesSection, XF86ConfModesPtr); } else if (xf86nameCompare (val.str, "screen") == 0) { xf86conffree(val.str); val.str = NULL; HANDLE_LIST (conf_screen_lst, xf86parseScreenSection, XF86ConfScreenPtr); } else if (xf86nameCompare(val.str, "inputdevice") == 0) { xf86conffree(val.str); val.str = NULL; HANDLE_LIST (conf_input_lst, xf86parseInputSection, XF86ConfInputPtr); } else if (xf86nameCompare (val.str, "module") == 0) { xf86conffree(val.str); val.str = NULL; HANDLE_LIST (conf_modules_lst, xf86parseModuleSection, XF86ConfModulePtr); } else if (xf86nameCompare (val.str, "serverlayout") == 0) { xf86conffree(val.str); val.str = NULL; HANDLE_LIST (conf_layout_lst, xf86parseLayoutSection, XF86ConfLayoutPtr); } else if (xf86nameCompare (val.str, "vendor") == 0) { xf86conffree(val.str); val.str = NULL; HANDLE_LIST (conf_vendor_lst, xf86parseVendorSection, XF86ConfVendorPtr); } else if (xf86nameCompare (val.str, "dri") == 0) { xf86conffree(val.str); val.str = NULL; HANDLE_LIST (conf_dri_lst, xf86parseDRISection, XF86ConfDRIPtr); } else { Error (INVALID_SECTION_MSG, xf86tokenString ()); xf86conffree(val.str); val.str = NULL; } break; default: Error (INVALID_KEYWORD_MSG, xf86tokenString ()); xf86conffree(val.str); val.str = NULL; } } return ptr; }
XF86ConfScreenPtr xf86parseScreenSection(void) { int has_ident = FALSE; int has_driver = FALSE; int token; parsePrologue(XF86ConfScreenPtr, XF86ConfScreenRec) while ((token = xf86getToken(ScreenTab)) != ENDSECTION) { switch (token) { case COMMENT: ptr->scrn_comment = xf86addComment(ptr->scrn_comment, xf86_lex_val.str); break; case IDENTIFIER: if (xf86getSubToken(&(ptr->scrn_comment)) != STRING) Error(QUOTE_MSG, "Identifier"); ptr->scrn_identifier = xf86_lex_val.str; if (has_ident || has_driver) Error(ONLY_ONE_MSG, "Identifier or Driver"); has_ident = TRUE; break; case MATCHSEAT: if (xf86getSubToken(&(ptr->scrn_comment)) != STRING) Error(QUOTE_MSG, "MatchSeat"); ptr->match_seat = xf86_lex_val.str; break; case OBSDRIVER: if (xf86getSubToken(&(ptr->scrn_comment)) != STRING) Error(QUOTE_MSG, "Driver"); ptr->scrn_obso_driver = xf86_lex_val.str; if (has_ident || has_driver) Error(ONLY_ONE_MSG, "Identifier or Driver"); has_driver = TRUE; break; case DEFAULTDEPTH: if (xf86getSubToken(&(ptr->scrn_comment)) != NUMBER) Error(NUMBER_MSG, "DefaultDepth"); ptr->scrn_defaultdepth = xf86_lex_val.num; break; case DEFAULTBPP: if (xf86getSubToken(&(ptr->scrn_comment)) != NUMBER) Error(NUMBER_MSG, "DefaultBPP"); ptr->scrn_defaultbpp = xf86_lex_val.num; break; case DEFAULTFBBPP: if (xf86getSubToken(&(ptr->scrn_comment)) != NUMBER) Error(NUMBER_MSG, "DefaultFbBPP"); ptr->scrn_defaultfbbpp = xf86_lex_val.num; break; case MDEVICE: if (xf86getSubToken(&(ptr->scrn_comment)) != STRING) Error(QUOTE_MSG, "Device"); ptr->scrn_device_str = xf86_lex_val.str; break; case MONITOR: if (xf86getSubToken(&(ptr->scrn_comment)) != STRING) Error(QUOTE_MSG, "Monitor"); ptr->scrn_monitor_str = xf86_lex_val.str; break; case VIDEOADAPTOR: { XF86ConfAdaptorLinkPtr aptr; if (xf86getSubToken(&(ptr->scrn_comment)) != STRING) Error(QUOTE_MSG, "VideoAdaptor"); /* Don't allow duplicates */ for (aptr = ptr->scrn_adaptor_lst; aptr; aptr = (XF86ConfAdaptorLinkPtr) aptr->list.next) if (xf86nameCompare(xf86_lex_val.str, aptr->al_adaptor_str) == 0) break; if (aptr == NULL) { aptr = calloc(1, sizeof(XF86ConfAdaptorLinkRec)); aptr->list.next = NULL; aptr->al_adaptor_str = xf86_lex_val.str; ptr->scrn_adaptor_lst = (XF86ConfAdaptorLinkPtr) xf86addListItem((glp) ptr->scrn_adaptor_lst, (glp) aptr); } } break; case VIRTUAL: if (xf86getSubToken(&(ptr->scrn_comment)) != NUMBER) Error(VIRTUAL_MSG); ptr->scrn_virtualX = xf86_lex_val.num; if (xf86getSubToken(&(ptr->scrn_comment)) != NUMBER) Error(VIRTUAL_MSG); ptr->scrn_virtualY = xf86_lex_val.num; break; case OPTION: ptr->scrn_option_lst = xf86parseOption(ptr->scrn_option_lst); break; case SUBSECTION: if (xf86getSubToken(&(ptr->scrn_comment)) != STRING) Error(QUOTE_MSG, "SubSection"); { free(xf86_lex_val.str); HANDLE_LIST(scrn_display_lst, xf86parseDisplaySubSection, XF86ConfDisplayPtr); } break; case EOF_TOKEN: Error(UNEXPECTED_EOF_MSG); break; default: Error(INVALID_KEYWORD_MSG, xf86tokenString()); break; } } if (!has_ident && !has_driver) Error(NO_IDENT_MSG); #ifdef DEBUG printf("Screen section parsed\n"); #endif return ptr; }
XConfigVideoAdaptorPtr xconfigParseVideoAdaptorSection (void) { int has_ident = FALSE; int token; PARSE_PROLOGUE (XConfigVideoAdaptorPtr, XConfigVideoAdaptorRec) while ((token = xconfigGetToken (VideoAdaptorTab)) != ENDSECTION) { switch (token) { case COMMENT: ptr->comment = xconfigAddComment(ptr->comment, val.str); break; case IDENTIFIER: if (xconfigGetSubToken (&(ptr->comment)) != STRING) Error (QUOTE_MSG, "Identifier"); ptr->identifier = val.str; if (has_ident == TRUE) Error (MULTIPLE_MSG, "Identifier"); has_ident = TRUE; break; case VENDOR: if (xconfigGetSubToken (&(ptr->comment)) != STRING) Error (QUOTE_MSG, "Vendor"); ptr->vendor = val.str; break; case BOARD: if (xconfigGetSubToken (&(ptr->comment)) != STRING) Error (QUOTE_MSG, "Board"); ptr->board = val.str; break; case BUSID: if (xconfigGetSubToken (&(ptr->comment)) != STRING) Error (QUOTE_MSG, "BusID"); ptr->busid = val.str; break; case DRIVER: if (xconfigGetSubToken (&(ptr->comment)) != STRING) Error (QUOTE_MSG, "Driver"); ptr->driver = val.str; break; case OPTION: ptr->options = xconfigParseOption(ptr->options); break; case SUBSECTION: if (xconfigGetSubToken (&(ptr->comment)) != STRING) Error (QUOTE_MSG, "SubSection"); { HANDLE_LIST (ports, xconfigParseVideoPortSubSection, XConfigVideoPortPtr); } break; case EOF_TOKEN: Error (UNEXPECTED_EOF_MSG, NULL); break; default: Error (INVALID_KEYWORD_MSG, xconfigTokenString ()); break; } } if (!has_ident) Error (NO_IDENT_MSG, NULL); return ptr; }
XF86ConfMonitorPtr xf86parseMonitorSection (void) { int has_ident = FALSE; int token; parsePrologue (XF86ConfMonitorPtr, XF86ConfMonitorRec) while ((token = xf86getToken (MonitorTab)) != ENDSECTION) { switch (token) { case COMMENT: ptr->mon_comment = xf86addComment(ptr->mon_comment, val.str); break; case IDENTIFIER: if (xf86getSubToken (&(ptr->mon_comment)) != STRING) Error (QUOTE_MSG, "Identifier"); if (has_ident == TRUE) Error (MULTIPLE_MSG, "Identifier"); ptr->mon_identifier = xf86configStrdup(val.str); has_ident = TRUE; break; case VENDOR: if (xf86getSubToken (&(ptr->mon_comment)) != STRING) Error (QUOTE_MSG, "Vendor"); ptr->mon_vendor = xf86configStrdup(val.str); break; case MODEL: if (xf86getSubToken (&(ptr->mon_comment)) != STRING) Error (QUOTE_MSG, "ModelName"); ptr->mon_modelname = xf86configStrdup(val.str); break; case MODE: HANDLE_LIST (mon_modeline_lst, xf86parseVerboseMode, XF86ConfModeLinePtr); break; case MODELINE: HANDLE_LIST (mon_modeline_lst, xf86parseModeLine, XF86ConfModeLinePtr); break; case DISPLAYSIZE: if (xf86getSubToken (&(ptr->mon_comment)) != NUMBER) Error (DISPLAYSIZE_MSG, NULL); ptr->mon_width = val.realnum; if (xf86getSubToken (&(ptr->mon_comment)) != NUMBER) Error (DISPLAYSIZE_MSG, NULL); ptr->mon_height = val.realnum; break; case HORIZSYNC: if (xf86getSubToken (&(ptr->mon_comment)) != NUMBER) Error (HORIZSYNC_MSG, NULL); do { ptr->mon_hsync[ptr->mon_n_hsync].lo = val.realnum; switch (token = xf86getSubToken (&(ptr->mon_comment))) { case COMMA: ptr->mon_hsync[ptr->mon_n_hsync].hi = ptr->mon_hsync[ptr->mon_n_hsync].lo; break; case DASH: if (xf86getSubToken (&(ptr->mon_comment)) != NUMBER || (float)val.realnum < ptr->mon_hsync[ptr->mon_n_hsync].lo) Error (HORIZSYNC_MSG, NULL); ptr->mon_hsync[ptr->mon_n_hsync].hi = val.realnum; if ((token = xf86getSubToken (&(ptr->mon_comment))) == COMMA) break; ptr->mon_n_hsync++; goto HorizDone; default: /* We cannot currently know if a '\n' was found, * or this is a real error */ ptr->mon_hsync[ptr->mon_n_hsync].hi = ptr->mon_hsync[ptr->mon_n_hsync].lo; ptr->mon_n_hsync++; goto HorizDone; } if (ptr->mon_n_hsync >= CONF_MAX_HSYNC) Error ("Sorry. Too many horizontal sync intervals.", NULL); ptr->mon_n_hsync++; } while ((token = xf86getSubToken (&(ptr->mon_comment))) == NUMBER); HorizDone: xf86unGetToken (token); break; case VERTREFRESH: if (xf86getSubToken (&(ptr->mon_comment)) != NUMBER) Error (VERTREFRESH_MSG, NULL); do { ptr->mon_vrefresh[ptr->mon_n_vrefresh].lo = val.realnum; switch (token = xf86getSubToken (&(ptr->mon_comment))) { case COMMA: ptr->mon_vrefresh[ptr->mon_n_vrefresh].hi = ptr->mon_vrefresh[ptr->mon_n_vrefresh].lo; break; case DASH: if (xf86getSubToken (&(ptr->mon_comment)) != NUMBER || (float)val.realnum < ptr->mon_vrefresh[ptr->mon_n_vrefresh].lo) Error (VERTREFRESH_MSG, NULL); ptr->mon_vrefresh[ptr->mon_n_vrefresh].hi = val.realnum; if ((token = xf86getSubToken (&(ptr->mon_comment))) == COMMA) break; ptr->mon_n_vrefresh++; goto VertDone; default: /* We cannot currently know if a '\n' was found, * or this is a real error */ ptr->mon_vrefresh[ptr->mon_n_vrefresh].hi = ptr->mon_vrefresh[ptr->mon_n_vrefresh].lo; ptr->mon_n_vrefresh++; goto VertDone; } if (ptr->mon_n_vrefresh >= CONF_MAX_VREFRESH) Error ("Sorry. Too many vertical refresh intervals.", NULL); ptr->mon_n_vrefresh++; } while ((token = xf86getSubToken (&(ptr->mon_comment))) == NUMBER); VertDone: xf86unGetToken (token); break; case GAMMA: if( xf86getSubToken (&(ptr->mon_comment)) != NUMBER ) { Error (INVALID_GAMMA_MSG, NULL); } else { ptr->mon_gamma_red = ptr->mon_gamma_green = ptr->mon_gamma_blue = val.realnum; if( xf86getSubToken (&(ptr->mon_comment)) == NUMBER ) { ptr->mon_gamma_green = val.realnum; if( xf86getSubToken (&(ptr->mon_comment)) == NUMBER ) { ptr->mon_gamma_blue = val.realnum; } else { Error (INVALID_GAMMA_MSG, NULL); } } else xf86unGetToken (token); } break; case OPTION: ptr->mon_option_lst = xf86parseOption(ptr->mon_option_lst); break; case USEMODES: { XF86ConfModesLinkPtr mptr; if ((token = xf86getSubToken (&(ptr->mon_comment))) != STRING) Error (QUOTE_MSG, "UseModes"); /* add to the end of the list of modes sections referenced here */ mptr = xf86confcalloc (1, sizeof (XF86ConfModesLinkRec)); mptr->list.next = NULL; mptr->ml_modes_str = xf86configStrdup(val.str); mptr->ml_modes = NULL; ptr->mon_modes_sect_lst = (XF86ConfModesLinkPtr) xf86addListItem((GenericListPtr)ptr->mon_modes_sect_lst, (GenericListPtr)mptr); } break; case EOF_TOKEN: Error (UNEXPECTED_EOF_MSG, NULL); break; default: xf86parseError (INVALID_KEYWORD_MSG, xf86tokenString ()); CLEANUP (ptr); return NULL; } } if (!has_ident) Error (NO_IDENT_MSG, NULL); #ifdef DEBUG printf ("Monitor section parsed\n"); #endif return ptr; }
XF86ConfVideoAdaptorPtr xf86parseVideoAdaptorSection (void) { int has_ident = FALSE; int token; parsePrologue (XF86ConfVideoAdaptorPtr, XF86ConfVideoAdaptorRec) while ((token = xf86getToken (VideoAdaptorTab)) != ENDSECTION) { switch (token) { case COMMENT: ptr->va_comment = xf86addComment(ptr->va_comment, val.str); break; case IDENTIFIER: if (xf86getSubToken (&(ptr->va_comment)) != STRING) Error (QUOTE_MSG, "Identifier"); ptr->va_identifier = val.str; if (has_ident == TRUE) Error (MULTIPLE_MSG, "Identifier"); has_ident = TRUE; break; case VENDOR: if (xf86getSubToken (&(ptr->va_comment)) != STRING) Error (QUOTE_MSG, "Vendor"); ptr->va_vendor = val.str; break; case BOARD: if (xf86getSubToken (&(ptr->va_comment)) != STRING) Error (QUOTE_MSG, "Board"); ptr->va_board = val.str; break; case BUSID: if (xf86getSubToken (&(ptr->va_comment)) != STRING) Error (QUOTE_MSG, "BusID"); ptr->va_busid = val.str; break; case DRIVER: if (xf86getSubToken (&(ptr->va_comment)) != STRING) Error (QUOTE_MSG, "Driver"); ptr->va_driver = val.str; break; case OPTION: ptr->va_option_lst = xf86parseOption(ptr->va_option_lst); break; case SUBSECTION: if (xf86getSubToken (&(ptr->va_comment)) != STRING) Error (QUOTE_MSG, "SubSection"); { HANDLE_LIST (va_port_lst, xf86parseVideoPortSubSection, XF86ConfVideoPortPtr); } break; case EOF_TOKEN: Error (UNEXPECTED_EOF_MSG, NULL); break; default: Error (INVALID_KEYWORD_MSG, xf86tokenString ()); break; } } if (!has_ident) Error (NO_IDENT_MSG, NULL); #ifdef DEBUG printf ("VideoAdaptor section parsed\n"); #endif return ptr; }
XF86ConfigPtr xf86readConfigFile(void) { int token; XF86ConfigPtr ptr = NULL; if ((ptr = calloc(1, sizeof(XF86ConfigRec))) == NULL) { return NULL; } while ((token = xf86getToken(TopLevelTab)) != EOF_TOKEN) { switch (token) { case COMMENT: ptr->conf_comment = xf86addComment(ptr->conf_comment, xf86_lex_val.str); break; case SECTION: if (xf86getSubToken(&(ptr->conf_comment)) != STRING) { xf86parseError(QUOTE_MSG, "Section"); CLEANUP(ptr); return NULL; } xf86setSection(xf86_lex_val.str); if (xf86nameCompare(xf86_lex_val.str, "files") == 0) { free(xf86_lex_val.str); xf86_lex_val.str = NULL; HANDLE_RETURN(conf_files, xf86parseFilesSection()); } else if (xf86nameCompare(xf86_lex_val.str, "serverflags") == 0) { free(xf86_lex_val.str); xf86_lex_val.str = NULL; HANDLE_RETURN(conf_flags, xf86parseFlagsSection()); } else if (xf86nameCompare(xf86_lex_val.str, "pointer") == 0) { free(xf86_lex_val.str); xf86_lex_val.str = NULL; HANDLE_LIST(conf_input_lst, xf86parsePointerSection, XF86ConfInputPtr); } else if (xf86nameCompare(xf86_lex_val.str, "videoadaptor") == 0) { free(xf86_lex_val.str); xf86_lex_val.str = NULL; HANDLE_LIST(conf_videoadaptor_lst, xf86parseVideoAdaptorSection, XF86ConfVideoAdaptorPtr); } else if (xf86nameCompare(xf86_lex_val.str, "device") == 0) { free(xf86_lex_val.str); xf86_lex_val.str = NULL; HANDLE_LIST(conf_device_lst, xf86parseDeviceSection, XF86ConfDevicePtr); } else if (xf86nameCompare(xf86_lex_val.str, "monitor") == 0) { free(xf86_lex_val.str); xf86_lex_val.str = NULL; HANDLE_LIST(conf_monitor_lst, xf86parseMonitorSection, XF86ConfMonitorPtr); } else if (xf86nameCompare(xf86_lex_val.str, "modes") == 0) { free(xf86_lex_val.str); xf86_lex_val.str = NULL; HANDLE_LIST(conf_modes_lst, xf86parseModesSection, XF86ConfModesPtr); } else if (xf86nameCompare(xf86_lex_val.str, "screen") == 0) { free(xf86_lex_val.str); xf86_lex_val.str = NULL; HANDLE_LIST(conf_screen_lst, xf86parseScreenSection, XF86ConfScreenPtr); } else if (xf86nameCompare(xf86_lex_val.str, "inputdevice") == 0) { free(xf86_lex_val.str); xf86_lex_val.str = NULL; HANDLE_LIST(conf_input_lst, xf86parseInputSection, XF86ConfInputPtr); } else if (xf86nameCompare(xf86_lex_val.str, "inputclass") == 0) { free(xf86_lex_val.str); xf86_lex_val.str = NULL; HANDLE_LIST(conf_inputclass_lst, xf86parseInputClassSection, XF86ConfInputClassPtr); } else if (xf86nameCompare(xf86_lex_val.str, "outputclass") == 0) { free(xf86_lex_val.str); xf86_lex_val.str = NULL; HANDLE_LIST(conf_outputclass_lst, xf86parseOutputClassSection, XF86ConfOutputClassPtr); } else if (xf86nameCompare(xf86_lex_val.str, "module") == 0) { free(xf86_lex_val.str); xf86_lex_val.str = NULL; HANDLE_RETURN(conf_modules, xf86parseModuleSection()); } else if (xf86nameCompare(xf86_lex_val.str, "serverlayout") == 0) { free(xf86_lex_val.str); xf86_lex_val.str = NULL; HANDLE_LIST(conf_layout_lst, xf86parseLayoutSection, XF86ConfLayoutPtr); } else if (xf86nameCompare(xf86_lex_val.str, "vendor") == 0) { free(xf86_lex_val.str); xf86_lex_val.str = NULL; HANDLE_LIST(conf_vendor_lst, xf86parseVendorSection, XF86ConfVendorPtr); } else if (xf86nameCompare(xf86_lex_val.str, "dri") == 0) { free(xf86_lex_val.str); xf86_lex_val.str = NULL; HANDLE_RETURN(conf_dri, xf86parseDRISection()); } else if (xf86nameCompare(xf86_lex_val.str, "extensions") == 0) { free(xf86_lex_val.str); xf86_lex_val.str = NULL; HANDLE_RETURN(conf_extensions, xf86parseExtensionsSection()); } else { free(xf86_lex_val.str); xf86_lex_val.str = NULL; Error(INVALID_SECTION_MSG, xf86tokenString()); } break; default: free(xf86_lex_val.str); xf86_lex_val.str = NULL; Error(INVALID_KEYWORD_MSG, xf86tokenString()); } } if (xf86validateConfig(ptr)) return ptr; else { CLEANUP(ptr); return NULL; } }