char* MakeEnableInsertPosPaperSource(cngplpData *data, int is_tabpaper) { PPDOptions *ppd_opt = data->ppd_opt; UIItemsList *item = NULL; char *ret_list = NULL; char *conf_options = NULL; char *tok = NULL; char *tmp = NULL; char *list = NULL; char *def = NULL; item = FindItemsList(ppd_opt->items_list, kPPD_Items_CNInsertInputSlot); if(item != NULL){ conf_options = GetPPDDevOptionConflict(data, ID_CNINSERTINPUTSLOT); if(conf_options) { for(tok = strtok_r(conf_options, ",", &tmp); tok != NULL; tok = strtok_r(NULL, ",", &tmp)) { char *opt = strchr(tok, '<'); if(opt){ *opt = '\0'; if(atoi(opt+1) == 0){ if( (is_tabpaper == 0) || !IsConflictBetweenFunctions(data, kPPD_Items_CNSheetForInsertion, "TAB1", kPPD_Items_CNInsertInputSlot, tok)){ list = AddList(list, tok); if(def == NULL){ def = tok; } else if(strcmp(item->default_option, tok) == 0){ def = tok; } } } } } if(def && list){ size_t mem_size = strlen(def) + strlen(list) + 2; ret_list = calloc(1, mem_size); if(ret_list){ snprintf(ret_list, mem_size, "%s:%s", def, list); } } free(conf_options); conf_options = NULL; } } if(list){ free(list); list = NULL; } return ret_list; }
char* cngplpGetDevOptionConflict(cngplpData *data, int id) { char *ret = NULL; if(id < ID_DEVICE_INFO){ ret = GetPPDDevOptionConflict(data, id); }else if(id < ID_COMMON_OPTION){ ret = GetPPDDevOptionjobaccountbw(data, id); } return ret; }