int DSO_set_filename(DSO *dso, const char *filename)
	{
	char *copied;

	if((dso == NULL) || (filename == NULL))
		{
		DSOerr(DSO_F_DSO_SET_FILENAME,ERR_R_PASSED_NULL_PARAMETER);
		return(0);
		}
	if(dso->loaded_filename)
		{
		DSOerr(DSO_F_DSO_SET_FILENAME,DSO_R_DSO_ALREADY_LOADED);
		return(0);
		}
	/* We'll duplicate filename */
	copied = OPENSSL_malloc(strlen(filename) + 1);
	if(copied == NULL)
		{
		DSOerr(DSO_F_DSO_SET_FILENAME,ERR_R_MALLOC_FAILURE);
		return(0);
		}
	strcpy(copied, filename);
	if(dso->filename)
		OPENSSL_free(dso->filename);
	dso->filename = copied;
	return(1);
	}