static int by_file_ctrl(X509_LOOKUP *ctx, int cmd, const char *argp, long argl,
	     char **ret)
	{
	int ok=0;
	char *file;

	switch (cmd)
		{
	case X509_L_FILE_LOAD:
		if (argl == X509_FILETYPE_DEFAULT)
			{
			ok=X509_load_cert_crl_file(ctx,X509_get_default_cert_file(),
				X509_FILETYPE_PEM);
			if (!ok)
				{
				X509err(X509_F_BY_FILE_CTRL,X509_R_LOADING_DEFAULTS);
				}
			else
				{
				file=(char *)Getenv(X509_get_default_cert_file_env());
				ok=X509_load_cert_crl_file(ctx,file,
					X509_FILETYPE_PEM);
				}
			}
		else
			{
			if(argl == X509_FILETYPE_PEM)
				ok=X509_load_cert_crl_file(ctx,argp,
					X509_FILETYPE_PEM);
			else ok=X509_load_cert_file(ctx,argp,(int)argl);
			}
		break;
		}
	return(ok);
	}