예제 #1
0
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;
}
예제 #2
0
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;
}