void xf86freeExtensions (XF86ConfExtensionsPtr ptr) { if (ptr == NULL) return; xf86optionListFree (ptr->ext_option_lst); TestFree (ptr->extensions_comment); xf86conffree (ptr); }
void xf86freeDRI (XF86ConfDRIPtr ptr) { if (ptr == NULL) return; xf86freeBuffersList (ptr->dri_buffers_lst); TestFree (ptr->dri_comment); xf86conffree (ptr); }
void xf86freeVendorList (XF86ConfVendorPtr p) { if (p == NULL) return; xf86freeVendorSubList (p->vnd_sub_lst); TestFree (p->vnd_identifier); TestFree (p->vnd_comment); xf86optionListFree (p->vnd_option_lst); xf86conffree (p); }
void xf86freeBuffersList (XF86ConfBuffersPtr ptr) { XF86ConfBuffersPtr prev; while (ptr) { TestFree (ptr->buf_flags); TestFree (ptr->buf_comment); prev = ptr; ptr = ptr->list.next; xf86conffree (prev); } }
void xf86freeModeLineList (XF86ConfModeLinePtr ptr) { XF86ConfModeLinePtr prev; while (ptr) { TestFree (ptr->ml_identifier); TestFree (ptr->ml_comment); prev = ptr; ptr = ptr->list.next; xf86conffree (prev); } }
XF86LoadPtr xf86parseModuleSubSection (XF86LoadPtr head, char *name) { int token; parsePrologue (XF86LoadPtr, XF86LoadRec) ptr->load_name = name; ptr->load_type = XF86_LOAD_MODULE; ptr->load_opt = NULL; ptr->list.next = NULL; while ((token = xf86getToken (SubModuleTab)) != ENDSUBSECTION) { switch (token) { case COMMENT: ptr->load_comment = xf86addComment(ptr->load_comment, val.str); break; case OPTION: ptr->load_opt = xf86parseOption(ptr->load_opt); break; case EOF_TOKEN: xf86parseError (UNEXPECTED_EOF_MSG, NULL); xf86conffree(ptr); return NULL; default: xf86parseError (INVALID_KEYWORD_MSG, xf86tokenString ()); xf86conffree(ptr); return NULL; break; } } return ((XF86LoadPtr) xf86addListItem ((glp) head, (glp) ptr)); }
void xf86freeVideoPortList (XF86ConfVideoPortPtr ptr) { XF86ConfVideoPortPtr prev; while (ptr) { TestFree (ptr->vp_identifier); TestFree (ptr->vp_comment); xf86optionListFree (ptr->vp_option_lst); prev = ptr; ptr = ptr->list.next; xf86conffree (prev); } }
void xf86freeInputrefList (XF86ConfInputrefPtr ptr) { XF86ConfInputrefPtr prev; while (ptr) { TestFree (ptr->iref_inputdev_str); xf86optionListFree (ptr->iref_option_lst); prev = ptr; ptr = ptr->list.next; xf86conffree (prev); } }
void xf86freeFiles (XF86ConfFilesPtr p) { if (p == NULL) return; TestFree (p->file_logfile); TestFree (p->file_rgbpath); TestFree (p->file_modulepath); TestFree (p->file_inputdevs); TestFree (p->file_fontpath); TestFree (p->file_comment); xf86conffree (p); }
void xf86freeModesList (XF86ConfModesPtr ptr) { XF86ConfModesPtr prev; while (ptr) { TestFree (ptr->modes_identifier); TestFree (ptr->modes_comment); xf86freeModeLineList (ptr->mon_modeline_lst); prev = ptr; ptr = ptr->list.next; xf86conffree (prev); } }
void xf86freeVendorSubList (XF86ConfVendSubPtr ptr) { XF86ConfVendSubPtr prev; while (ptr) { TestFree (ptr->vs_identifier); TestFree (ptr->vs_name); TestFree (ptr->vs_comment); xf86optionListFree (ptr->vs_option_lst); prev = ptr; ptr = ptr->list.next; xf86conffree (prev); } }
void xf86freeLayoutList (XF86ConfLayoutPtr ptr) { XF86ConfLayoutPtr prev; while (ptr) { TestFree (ptr->lay_identifier); TestFree (ptr->lay_comment); xf86freeAdjacencyList (ptr->lay_adjacency_lst); xf86freeInputrefList (ptr->lay_input_lst); prev = ptr; ptr = ptr->list.next; xf86conffree (prev); } }
void xf86freeInputList (XF86ConfInputPtr ptr) { XF86ConfInputPtr prev; while (ptr) { TestFree (ptr->inp_identifier); TestFree (ptr->inp_driver); TestFree (ptr->inp_comment); xf86optionListFree (ptr->inp_option_lst); prev = ptr; ptr = ptr->list.next; xf86conffree (prev); } }
void xf86freeMonitorList (XF86ConfMonitorPtr ptr) { XF86ConfMonitorPtr prev; while (ptr) { TestFree (ptr->mon_identifier); TestFree (ptr->mon_vendor); TestFree (ptr->mon_modelname); TestFree (ptr->mon_comment); xf86optionListFree (ptr->mon_option_lst); xf86freeModeLineList (ptr->mon_modeline_lst); prev = ptr; ptr = ptr->list.next; xf86conffree (prev); } }
void xf86freeAdjacencyList (XF86ConfAdjacencyPtr ptr) { XF86ConfAdjacencyPtr prev; while (ptr) { TestFree (ptr->adj_screen_str); TestFree (ptr->adj_top_str); TestFree (ptr->adj_bottom_str); TestFree (ptr->adj_left_str); TestFree (ptr->adj_right_str); prev = ptr; ptr = ptr->list.next; xf86conffree (prev); } }
void xf86freeFilesList (XF86ConfFilesPtr ptr) { XF86ConfFilesPtr prev; while (ptr) { TestFree (ptr->file_logfile); TestFree (ptr->file_rgbpath); TestFree (ptr->file_modulepath); TestFree (ptr->file_inputdevs); TestFree (ptr->file_fontpath); TestFree (ptr->file_comment); TestFree (ptr->file_identifier); xf86optionListFree (ptr->file_option_lst); prev = ptr; ptr = ptr->list.next; xf86conffree(prev); } }
void xf86freeVideoAdaptorList (XF86ConfVideoAdaptorPtr ptr) { XF86ConfVideoAdaptorPtr prev; while (ptr) { TestFree (ptr->va_identifier); TestFree (ptr->va_vendor); TestFree (ptr->va_board); TestFree (ptr->va_busid); TestFree (ptr->va_driver); TestFree (ptr->va_fwdref); TestFree (ptr->va_comment); xf86freeVideoPortList (ptr->va_port_lst); xf86optionListFree (ptr->va_option_lst); prev = ptr; ptr = ptr->list.next; xf86conffree (prev); } }
void xf86freeDeviceList (XF86ConfDevicePtr ptr) { XF86ConfDevicePtr prev; while (ptr) { TestFree (ptr->dev_identifier); TestFree (ptr->dev_vendor); TestFree (ptr->dev_board); TestFree (ptr->dev_chipset); TestFree (ptr->dev_card); TestFree (ptr->dev_driver); TestFree (ptr->dev_ramdac); TestFree (ptr->dev_clockchip); TestFree (ptr->dev_comment); xf86optionListFree (ptr->dev_option_lst); prev = ptr; ptr = ptr->list.next; xf86conffree (prev); } }
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; }
XF86ConfInputPtr xf86parsePointerSection (void) { char *s, *s1, *s2; int l; int token; parsePrologue (XF86ConfInputPtr, XF86ConfInputRec) while ((token = xf86getToken (PointerTab)) != ENDSECTION) { switch (token) { case COMMENT: ptr->inp_comment = xf86addComment(ptr->inp_comment, val.str); break; case PROTOCOL: if (xf86getSubToken (&(ptr->inp_comment)) != STRING) Error (QUOTE_MSG, "Protocol"); ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst, xf86configStrdup("Protocol"), val.str); break; case PDEVICE: if (xf86getSubToken (&(ptr->inp_comment)) != STRING) Error (QUOTE_MSG, "Device"); ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst, xf86configStrdup("Device"), val.str); break; case EMULATE3: ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst, xf86configStrdup("Emulate3Buttons"), NULL); break; case EM3TIMEOUT: if (xf86getSubToken (&(ptr->inp_comment)) != NUMBER || val.num < 0) Error (POSITIVE_INT_MSG, "Emulate3Timeout"); s = xf86uLongToString(val.num); ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst, xf86configStrdup("Emulate3Timeout"), s); break; case CHORDMIDDLE: ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst, xf86configStrdup("ChordMiddle"), NULL); break; case PBUTTONS: if (xf86getSubToken (&(ptr->inp_comment)) != NUMBER || val.num < 0) Error (POSITIVE_INT_MSG, "Buttons"); s = xf86uLongToString(val.num); ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst, xf86configStrdup("Buttons"), s); break; case BAUDRATE: if (xf86getSubToken (&(ptr->inp_comment)) != NUMBER || val.num < 0) Error (POSITIVE_INT_MSG, "BaudRate"); s = xf86uLongToString(val.num); ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst, xf86configStrdup("BaudRate"), s); break; case SAMPLERATE: if (xf86getSubToken (&(ptr->inp_comment)) != NUMBER || val.num < 0) Error (POSITIVE_INT_MSG, "SampleRate"); s = xf86uLongToString(val.num); ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst, xf86configStrdup("SampleRate"), s); break; case PRESOLUTION: if (xf86getSubToken (&(ptr->inp_comment)) != NUMBER || val.num < 0) Error (POSITIVE_INT_MSG, "Resolution"); s = xf86uLongToString(val.num); ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst, xf86configStrdup("Resolution"), s); break; case CLEARDTR: ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst, xf86configStrdup("ClearDTR"), NULL); break; case CLEARRTS: ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst, xf86configStrdup("ClearRTS"), NULL); break; case ZAXISMAPPING: switch (xf86getToken(ZMapTab)) { case NUMBER: if (val.num < 0) Error (ZAXISMAPPING_MSG, NULL); s1 = xf86uLongToString(val.num); if (xf86getSubToken (&(ptr->inp_comment)) != NUMBER || val.num < 0) { xf86conffree(s1); Error (ZAXISMAPPING_MSG, NULL); } s2 = xf86uLongToString(val.num); l = strlen(s1) + 1 + strlen(s2) + 1; s = xf86confmalloc(l); sprintf(s, "%s %s", s1, s2); xf86conffree(s1); xf86conffree(s2); break; case XAXIS: s = xf86configStrdup("x"); break; case YAXIS: s = xf86configStrdup("y"); break; default: Error (ZAXISMAPPING_MSG, NULL); break; } ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst, xf86configStrdup("ZAxisMapping"), s); break; case ALWAYSCORE: break; case EOF_TOKEN: Error (UNEXPECTED_EOF_MSG, NULL); break; default: Error (INVALID_KEYWORD_MSG, xf86tokenString ()); break; } } ptr->inp_identifier = xf86configStrdup(CONF_IMPLICIT_POINTER); ptr->inp_driver = xf86configStrdup("mouse"); ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst, xf86configStrdup("CorePointer"), NULL); #ifdef DEBUG printf ("Pointer section parsed\n"); #endif return ptr; }
XF86ConfFilesPtr xf86parseFilesSection (void) { int i, j; int k, l; char *str; int token; parsePrologue (XF86ConfFilesPtr, XF86ConfFilesRec) while ((token = xf86getToken (FilesTab)) != ENDSECTION) { switch (token) { case COMMENT: ptr->file_comment = xf86addComment(ptr->file_comment, val.str); break; case FONTPATH: if (xf86getSubToken (&(ptr->file_comment)) != STRING) Error (QUOTE_MSG, "FontPath"); j = FALSE; str = prependRoot (val.str); if (ptr->file_fontpath == NULL) { ptr->file_fontpath = xf86confmalloc (1); ptr->file_fontpath[0] = '\0'; i = strlen (str) + 1; } else { i = strlen (ptr->file_fontpath) + strlen (str) + 1; if (ptr->file_fontpath[strlen (ptr->file_fontpath) - 1] != ',') { i++; j = TRUE; } } ptr->file_fontpath = xf86confrealloc (ptr->file_fontpath, i); if (j) strcat (ptr->file_fontpath, ","); strcat (ptr->file_fontpath, str); xf86conffree (val.str); break; case RGBPATH: if (xf86getSubToken (&(ptr->file_comment)) != STRING) Error (QUOTE_MSG, "RGBPath"); ptr->file_rgbpath = val.str; break; case MODULEPATH: if (xf86getSubToken (&(ptr->file_comment)) != STRING) Error (QUOTE_MSG, "ModulePath"); l = FALSE; str = prependRoot (val.str); if (ptr->file_modulepath == NULL) { ptr->file_modulepath = xf86confmalloc (1); ptr->file_modulepath[0] = '\0'; k = strlen (str) + 1; } else { k = strlen (ptr->file_modulepath) + strlen (str) + 1; if (ptr->file_modulepath[strlen (ptr->file_modulepath) - 1] != ',') { k++; l = TRUE; } } ptr->file_modulepath = xf86confrealloc (ptr->file_modulepath, k); if (l) strcat (ptr->file_modulepath, ","); strcat (ptr->file_modulepath, str); xf86conffree (val.str); break; case INPUTDEVICES: if (xf86getSubToken (&(ptr->file_comment)) != STRING) Error (QUOTE_MSG, "InputDevices"); l = FALSE; str = prependRoot (val.str); if (ptr->file_inputdevs == NULL) { ptr->file_inputdevs = xf86confmalloc (1); ptr->file_inputdevs[0] = '\0'; k = strlen (str) + 1; } else { k = strlen (ptr->file_inputdevs) + strlen (str) + 1; if (ptr->file_inputdevs[strlen (ptr->file_inputdevs) - 1] != ',') { k++; l = TRUE; } } ptr->file_inputdevs = xf86confrealloc (ptr->file_inputdevs, k); if (l) strcat (ptr->file_inputdevs, ","); strcat (ptr->file_inputdevs, str); xf86conffree (val.str); break; case LOGFILEPATH: if (xf86getSubToken (&(ptr->file_comment)) != STRING) Error (QUOTE_MSG, "LogFile"); ptr->file_logfile = val.str; break; case EOF_TOKEN: Error (UNEXPECTED_EOF_MSG, NULL); break; default: Error (INVALID_KEYWORD_MSG, xf86tokenString ()); break; } } #ifdef DEBUG printf ("File section parsed\n"); #endif return ptr; }
XF86ConfInputPtr xf86parseKeyboardSection (void) { char *s, *s1, *s2; int l; int token, ntoken; parsePrologue (XF86ConfInputPtr, XF86ConfInputRec) while ((token = xf86getToken (KeyboardTab)) != ENDSECTION) { switch (token) { case COMMENT: ptr->inp_comment = xf86addComment(ptr->inp_comment, val.str); break; case KPROTOCOL: if (xf86getSubToken (&(ptr->inp_comment)) != STRING) Error (QUOTE_MSG, "Protocol"); ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst, xf86configStrdup("Protocol"), val.str); break; case AUTOREPEAT: if (xf86getSubToken (&(ptr->inp_comment)) != NUMBER) Error (AUTOREPEAT_MSG, NULL); s1 = xf86uLongToString(val.num); if (xf86getSubToken (&(ptr->inp_comment)) != NUMBER) Error (AUTOREPEAT_MSG, NULL); s2 = xf86uLongToString(val.num); l = strlen(s1) + 1 + strlen(s2) + 1; s = xf86confmalloc(l); sprintf(s, "%s %s", s1, s2); xf86conffree(s1); xf86conffree(s2); ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst, xf86configStrdup("AutoRepeat"), s); break; case XLEDS: if (xf86getSubToken (&(ptr->inp_comment)) != NUMBER) Error (XLEDS_MSG, NULL); s = xf86uLongToString(val.num); l = strlen(s) + 1; while ((token = xf86getSubToken (&(ptr->inp_comment))) == NUMBER) { s1 = xf86uLongToString(val.num); l += (1 + strlen(s1)); s = xf86confrealloc(s, l); strcat(s, " "); strcat(s, s1); xf86conffree(s1); } xf86unGetToken (token); break; case SERVERNUM: xf86parseWarning(OBSOLETE_MSG, xf86tokenString()); break; case LEFTALT: case RIGHTALT: case SCROLLLOCK_TOK: case RIGHTCTL: xf86parseWarning(OBSOLETE_MSG, xf86tokenString()); break; ntoken = xf86getToken (KeyMapTab); switch (ntoken) { case EOF_TOKEN: xf86parseError (UNEXPECTED_EOF_MSG); CLEANUP (ptr); return (NULL); break; default: Error (INVALID_KEYWORD_MSG, xf86tokenString ()); break; } break; case VTINIT: if (xf86getSubToken (&(ptr->inp_comment)) != STRING) Error (QUOTE_MSG, "VTInit"); xf86parseWarning(MOVED_TO_FLAGS_MSG, "VTInit"); break; case VTSYSREQ: xf86parseWarning(MOVED_TO_FLAGS_MSG, "VTSysReq"); break; case XKBDISABLE: ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst, xf86configStrdup("XkbDisable"), NULL); break; case XKBKEYMAP: if (xf86getSubToken (&(ptr->inp_comment)) != STRING) Error (QUOTE_MSG, "XKBKeymap"); ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst, xf86configStrdup("XkbKeymap"), val.str); break; case XKBCOMPAT: if (xf86getSubToken (&(ptr->inp_comment)) != STRING) Error (QUOTE_MSG, "XKBCompat"); ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst, xf86configStrdup("XkbCompat"), val.str); break; case XKBTYPES: if (xf86getSubToken (&(ptr->inp_comment)) != STRING) Error (QUOTE_MSG, "XKBTypes"); ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst, xf86configStrdup("XkbTypes"), val.str); break; case XKBKEYCODES: if (xf86getSubToken (&(ptr->inp_comment)) != STRING) Error (QUOTE_MSG, "XKBKeycodes"); ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst, xf86configStrdup("XkbKeycodes"), val.str); break; case XKBGEOMETRY: if (xf86getSubToken (&(ptr->inp_comment)) != STRING) Error (QUOTE_MSG, "XKBGeometry"); ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst, xf86configStrdup("XkbGeometry"), val.str); break; case XKBSYMBOLS: if (xf86getSubToken (&(ptr->inp_comment)) != STRING) Error (QUOTE_MSG, "XKBSymbols"); ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst, xf86configStrdup("XkbSymbols"), val.str); break; case XKBRULES: if (xf86getSubToken (&(ptr->inp_comment)) != STRING) Error (QUOTE_MSG, "XKBRules"); ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst, xf86configStrdup("XkbRules"), val.str); break; case XKBMODEL: if (xf86getSubToken (&(ptr->inp_comment)) != STRING) Error (QUOTE_MSG, "XKBModel"); ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst, xf86configStrdup("XkbModel"), val.str); break; case XKBLAYOUT: if (xf86getSubToken (&(ptr->inp_comment)) != STRING) Error (QUOTE_MSG, "XKBLayout"); ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst, xf86configStrdup("XkbLayout"), val.str); break; case XKBVARIANT: if (xf86getSubToken (&(ptr->inp_comment)) != STRING) Error (QUOTE_MSG, "XKBVariant"); ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst, xf86configStrdup("XkbVariant"), val.str); break; case XKBOPTIONS: if (xf86getSubToken (&(ptr->inp_comment)) != STRING) Error (QUOTE_MSG, "XKBOptions"); ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst, xf86configStrdup("XkbOptions"), val.str); break; case PANIX106: ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst, xf86configStrdup("Panix106"), NULL); break; case EOF_TOKEN: Error (UNEXPECTED_EOF_MSG, NULL); break; default: Error (INVALID_KEYWORD_MSG, xf86tokenString ()); break; } } ptr->inp_identifier = xf86configStrdup(CONF_IMPLICIT_KEYBOARD); ptr->inp_driver = xf86configStrdup("keyboard"); ptr->inp_option_lst = xf86addNewOption(ptr->inp_option_lst, xf86configStrdup("CoreKeyboard"), NULL); #ifdef DEBUG printf ("Keyboard section parsed\n"); #endif return ptr; }
XF86ConfLayoutPtr xf86parseLayoutSection (void) { int has_ident = FALSE; int token; parsePrologue (XF86ConfLayoutPtr, XF86ConfLayoutRec) while ((token = xf86getToken (LayoutTab)) != ENDSECTION) { switch (token) { case COMMENT: ptr->lay_comment = xf86addComment(ptr->lay_comment, val.str); break; case IDENTIFIER: if (xf86getSubToken (&(ptr->lay_comment)) != STRING) Error (QUOTE_MSG, "Identifier"); if (has_ident == TRUE) Error (MULTIPLE_MSG, "Identifier"); ptr->lay_identifier = val.str; has_ident = TRUE; break; case INACTIVE: { XF86ConfInactivePtr iptr; iptr = xf86confcalloc (1, sizeof (XF86ConfInactiveRec)); iptr->list.next = NULL; if (xf86getSubToken (&(ptr->lay_comment)) != STRING) { xf86conffree (iptr); Error (INACTIVE_MSG, NULL); } iptr->inactive_device_str = val.str; ptr->lay_inactive_lst = (XF86ConfInactivePtr) xf86addListItem ((glp) ptr->lay_inactive_lst, (glp) iptr); } break; case SCREEN: { XF86ConfAdjacencyPtr aptr; int absKeyword = 0; aptr = xf86confcalloc (1, sizeof (XF86ConfAdjacencyRec)); aptr->list.next = NULL; aptr->adj_scrnum = -1; aptr->adj_where = CONF_ADJ_OBSOLETE; aptr->adj_x = 0; aptr->adj_y = 0; aptr->adj_refscreen = NULL; if ((token = xf86getSubToken (&(ptr->lay_comment))) == NUMBER) aptr->adj_scrnum = val.num; else xf86unGetToken (token); token = xf86getSubToken(&(ptr->lay_comment)); if (token != STRING) { xf86conffree(aptr); Error (SCREEN_MSG, NULL); } aptr->adj_screen_str = val.str; token = xf86getSubTokenWithTab(&(ptr->lay_comment), AdjTab); switch (token) { case RIGHTOF: aptr->adj_where = CONF_ADJ_RIGHTOF; break; case LEFTOF: aptr->adj_where = CONF_ADJ_LEFTOF; break; case ABOVE: aptr->adj_where = CONF_ADJ_ABOVE; break; case BELOW: aptr->adj_where = CONF_ADJ_BELOW; break; case RELATIVE: aptr->adj_where = CONF_ADJ_RELATIVE; break; case ABSOLUTE: aptr->adj_where = CONF_ADJ_ABSOLUTE; absKeyword = 1; break; case EOF_TOKEN: xf86conffree(aptr); Error (UNEXPECTED_EOF_MSG, NULL); break; default: xf86unGetToken (token); token = xf86getSubToken(&(ptr->lay_comment)); if (token == STRING) aptr->adj_where = CONF_ADJ_OBSOLETE; else aptr->adj_where = CONF_ADJ_ABSOLUTE; } switch (aptr->adj_where) { case CONF_ADJ_ABSOLUTE: if (absKeyword) token = xf86getSubToken(&(ptr->lay_comment)); if (token == NUMBER) { aptr->adj_x = val.num; token = xf86getSubToken(&(ptr->lay_comment)); if (token != NUMBER) { xf86conffree(aptr); Error(INVALID_SCR_MSG, NULL); } aptr->adj_y = val.num; } else { if (absKeyword) { xf86conffree(aptr); Error(INVALID_SCR_MSG, NULL); } else xf86unGetToken (token); } break; case CONF_ADJ_RIGHTOF: case CONF_ADJ_LEFTOF: case CONF_ADJ_ABOVE: case CONF_ADJ_BELOW: case CONF_ADJ_RELATIVE: token = xf86getSubToken(&(ptr->lay_comment)); if (token != STRING) { xf86conffree(aptr); Error(INVALID_SCR_MSG, NULL); } aptr->adj_refscreen = val.str; if (aptr->adj_where == CONF_ADJ_RELATIVE) { token = xf86getSubToken(&(ptr->lay_comment)); if (token != NUMBER) { xf86conffree(aptr); Error(INVALID_SCR_MSG, NULL); } aptr->adj_x = val.num; token = xf86getSubToken(&(ptr->lay_comment)); if (token != NUMBER) { xf86conffree(aptr); Error(INVALID_SCR_MSG, NULL); } aptr->adj_y = val.num; } break; case CONF_ADJ_OBSOLETE: /* top */ aptr->adj_top_str = val.str; /* bottom */ if (xf86getSubToken (&(ptr->lay_comment)) != STRING) { xf86conffree(aptr); Error (SCREEN_MSG, NULL); } aptr->adj_bottom_str = val.str; /* left */ if (xf86getSubToken (&(ptr->lay_comment)) != STRING) { xf86conffree(aptr); Error (SCREEN_MSG, NULL); } aptr->adj_left_str = val.str; /* right */ if (xf86getSubToken (&(ptr->lay_comment)) != STRING) { xf86conffree(aptr); Error (SCREEN_MSG, NULL); } aptr->adj_right_str = val.str; } ptr->lay_adjacency_lst = (XF86ConfAdjacencyPtr) xf86addListItem ((glp) ptr->lay_adjacency_lst, (glp) aptr); } break; case INPUTDEVICE: { XF86ConfInputrefPtr iptr; iptr = xf86confcalloc (1, sizeof (XF86ConfInputrefRec)); iptr->list.next = NULL; iptr->iref_option_lst = NULL; if (xf86getSubToken (&(ptr->lay_comment)) != STRING) { xf86conffree(iptr); Error (INPUTDEV_MSG, NULL); } iptr->iref_inputdev_str = val.str; while ((token = xf86getSubToken (&(ptr->lay_comment))) == STRING) { iptr->iref_option_lst = xf86addNewOption (iptr->iref_option_lst, val.str, NULL); } xf86unGetToken (token); ptr->lay_input_lst = (XF86ConfInputrefPtr) xf86addListItem ((glp) ptr->lay_input_lst, (glp) iptr); } break; case OPTION: ptr->lay_option_lst = xf86parseOption(ptr->lay_option_lst); 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 ("Layout section parsed\n"); #endif return ptr; }
static char* xf86getNextLine(void) { static int configBufLen = CONFIG_BUF_LEN; char *tmpConfigBuf, *tmpConfigRBuf; int c, i, pos = 0, eolFound = 0; char *ret = NULL; /* * reallocate the string if it was grown last time (i.e., is no * longer CONFIG_BUF_LEN); we malloc the new strings first, so * that if either of the mallocs fail, we can fall back on the * existing buffer allocations */ if (configBufLen != CONFIG_BUF_LEN) { tmpConfigBuf = xf86confmalloc(CONFIG_BUF_LEN); tmpConfigRBuf = xf86confmalloc(CONFIG_BUF_LEN); if (!tmpConfigBuf || !tmpConfigRBuf) { /* * at least one of the mallocs failed; keep the old buffers * and free any partial allocations */ xf86conffree(tmpConfigBuf); xf86conffree(tmpConfigRBuf); } else { /* * malloc succeeded; free the old buffers and use the new * buffers */ configBufLen = CONFIG_BUF_LEN; xf86conffree(configBuf); xf86conffree(configRBuf); configBuf = tmpConfigBuf; configRBuf = tmpConfigRBuf; } } /* read in another block of chars */ do { ret = fgets(configBuf + pos, configBufLen - pos - 1, configFile); if (!ret) break; /* search for EOL in the new block of chars */ for (i = pos; i < (configBufLen - 1); i++) { c = configBuf[i]; if (c == '\0') break; if ((c == '\n') || (c == '\r')) { eolFound = 1; break; } } /* * if we didn't find EOL, then grow the string and * read in more */ if (!eolFound) { tmpConfigBuf = xf86confrealloc(configBuf, configBufLen + CONFIG_BUF_LEN); tmpConfigRBuf = xf86confrealloc(configRBuf, configBufLen + CONFIG_BUF_LEN); if (!tmpConfigBuf || !tmpConfigRBuf) { /* * at least one of the reallocations failed; use the * new allocation that succeeded, but we have to * fallback to the previous configBufLen size and use * the string we have, even though we don't have an * EOL */ if (tmpConfigBuf) configBuf = tmpConfigBuf; if (tmpConfigRBuf) configRBuf = tmpConfigRBuf; break; } else { /* reallocation succeeded */ configBuf = tmpConfigBuf; configRBuf = tmpConfigRBuf; pos = i; configBufLen += CONFIG_BUF_LEN; } } } while (!eolFound); return (ret); }
XF86ConfFlagsPtr xf86parseFlagsSection (void) { int has_ident = FALSE; int token; parsePrologue (XF86ConfFlagsPtr, XF86ConfFlagsRec) while ((token = xf86getToken (ServerFlagsTab)) != ENDSECTION) { int hasvalue = FALSE; int strvalue = FALSE; int tokentype; switch (token) { case COMMENT: ptr->flg_comment = xf86addComment(ptr->flg_comment, val.str); break; case IDENTIFIER: if (xf86getSubToken (&(ptr->flg_comment)) != STRING) Error (QUOTE_MSG, "Identifier"); if (has_ident) Error (MULTIPLE_MSG, "Identifier"); ptr->flg_identifier = xf86configStrdup(val.str); has_ident = TRUE; break; /* * These old keywords are turned into standard generic options. * We fall through here on purpose. */ case DEFAULTLAYOUT: strvalue = TRUE; case BLANKTIME: case STANDBYTIME: case SUSPENDTIME: case OFFTIME: hasvalue = TRUE; case NOTRAPSIGNALS: case DONTZAP: case DONTZOOM: case DISABLEVIDMODE: case ALLOWNONLOCAL: case DISABLEMODINDEV: case MODINDEVALLOWNONLOCAL: case ALLOWMOUSEOPENFAIL: { int i = 0; while (ServerFlagsTab[i].token != -1) { char *tmp; if (ServerFlagsTab[i].token == token) { char *valstr = NULL; tmp = ServerFlagsTab[i].name; if (hasvalue) { tokentype = xf86getSubToken(&(ptr->flg_comment)); if (strvalue) { if (tokentype != STRING) Error (QUOTE_MSG, tmp); valstr = xf86configStrdup(val.str); } else { if (tokentype != NUMBER) Error (NUMBER_MSG, tmp); xf86configAsprintf(&valstr, "%d", val.num); } } ptr->flg_option_lst = xf86addNewOption (ptr->flg_option_lst, tmp, valstr); xf86conffree(valstr); } i++; } } break; case OPTION: ptr->flg_option_lst = xf86parseOption(ptr->flg_option_lst); break; case EOF_TOKEN: Error (UNEXPECTED_EOF_MSG, NULL); break; default: Error (INVALID_KEYWORD_MSG, xf86tokenString ()); break; } } #ifdef DEBUG printf ("Flags section parsed\n"); #endif return ptr; }