All pastes #487933 Raw Edit

Anonymous

public text v1 · immutable
·published 2007-05-14 19:02 UTC
rendered paste body
cvar_result_e eval_string(cvar_type_t* type, void* vdata, int argc, char** argv)
{
	char** data = (char**) vdata;
	if(argc == 2) {
		if(*data) {
			free(*data);
		}
		*data = strdup(argv[1]);
	} else {
		output("%s: string: %s", argv[0], *data); 
	}
	return cvar_kNoError;
}

cvar_result_e cmd_string(int argc, char** argv)
{
	if(argc == 3) {
		cvar_t* cmd;
		cmd = cvar_create(argv[1], g_stringtype);
		*((char**) cmd->data) = strdup(argv[2]);
	} else {
		output("usage: %s <cvar> <value>", argv[0]);
	}
	return cvar_kNoError;
}

void view_string(char* buffer, size_t len, cvar_type_t* type, void* data)
{
	sprintf(buffer, "string: %s", *((char**) data));
}


/* ... */

	g_stringtype = cvar_type_new("string");
	cvar_type_set_eval(g_stringtype, eval_string);
	cvar_type_set_dtor(g_stringtype, cvar_type_dtor_free_pointer_default);
	cvar_type_set_datasize(g_stringtype, sizeof(char*));
	cvar_type_set_view(g_stringtype, view_string);
	cvar_set_cmd("string", cmd_string);