return 1;
ret = 1;
static int util_verbose(ENGINE *e, int verbose, BIO *bio_out, const char *indent)	{	static const int line_wrap = 78;	int num;	char *name = NULL;	char *desc = NULL;	int flags;	int xpos = 0;	STACK *cmds = sk_new_null();	if(!cmds)		goto err;	if(!ENGINE_ctrl(e, ENGINE_CTRL_HAS_CTRL_FUNCTION, 0, NULL, NULL) ||			((num = ENGINE_ctrl(e, ENGINE_CTRL_GET_FIRST_CMD_TYPE,					0, NULL, NULL)) <= 0))		{#if 0		BIO_printf(bio_out, "%s<no control commands>\n", indent);#endif		return 1;		}	do {		int len;		/* Get the command name */		if((len = ENGINE_ctrl(e, ENGINE_CTRL_GET_NAME_LEN_FROM_CMD, num,					NULL, NULL)) <= 0)			goto err;		if((name = OPENSSL_malloc(len + 1)) == NULL)			goto err;		if(ENGINE_ctrl(e, ENGINE_CTRL_GET_NAME_FROM_CMD, num, name,					NULL) <= 0)			goto err;		/* Get the command description */		if((len = ENGINE_ctrl(e, ENGINE_CTRL_GET_DESC_LEN_FROM_CMD, num,					NULL, NULL)) < 0)			goto err;		if(len > 0)			{			if((desc = OPENSSL_malloc(len + 1)) == NULL)				goto err;			if(ENGINE_ctrl(e, ENGINE_CTRL_GET_DESC_FROM_CMD, num, desc,						NULL) <= 0)				goto err;			}		/* Get the command input flags */		if((flags = ENGINE_ctrl(e, ENGINE_CTRL_GET_CMD_FLAGS, num,					NULL, NULL)) < 0)			goto err;		/* Now decide on the output */		if(xpos == 0)			/* Do an indent */			xpos = BIO_printf(bio_out, indent);		else			/* Otherwise prepend a ", " */			xpos += BIO_printf(bio_out, ", ");		if(verbose == 1)			{			/* We're just listing names, comma-delimited */			if((xpos > (int)strlen(indent)) &&					(xpos + (int)strlen(name) > line_wrap))				{				BIO_printf(bio_out, "\n");				xpos = BIO_printf(bio_out, indent);				}			xpos += BIO_printf(bio_out, "%s", name);			}		else			{			/* We're listing names plus descriptions */			BIO_printf(bio_out, "%s: %s\n", name,				(desc == NULL) ? "<no description>" : desc);			/* ... and sometimes input flags */			if((verbose == 3) && !util_flags(bio_out, flags,							indent))				goto err;			xpos = 0;			}		OPENSSL_free(name); name = NULL;		if(desc) { OPENSSL_free(desc); desc = NULL; }		/* Move to the next command */		num = ENGINE_ctrl(e, ENGINE_CTRL_GET_NEXT_CMD_TYPE,					num, NULL, NULL);		} while(num > 0);	if(xpos > 0)		BIO_printf(bio_out, "\n");	return 1;err:	if(cmds) sk_pop_free(cmds, identity);	if(name) OPENSSL_free(name);	if(desc) OPENSSL_free(desc);	return 0;	}