int i, ret = 0;
int ret = 0; unsigned int i;
int unpack_revinfo(ASN1_TIME **prevtm, int *preason, ASN1_OBJECT **phold, ASN1_GENERALIZEDTIME **pinvtm, char *str)	{	char *tmp = NULL;	char *rtime_str, *reason_str = NULL, *arg_str = NULL, *p;	int reason_code = -1;	int i, ret = 0;	ASN1_OBJECT *hold = NULL;	ASN1_GENERALIZEDTIME *comp_time = NULL;	tmp = BUF_strdup(str);	p = strchr(tmp, ',');	rtime_str = tmp;	if (p)		{		*p = '\0';		p++;		reason_str = p;		p = strchr(p, ',');		if (p)			{			*p = '\0';			arg_str = p + 1;			}		}	if (prevtm)		{		*prevtm = ASN1_UTCTIME_new();		if (!ASN1_UTCTIME_set_string(*prevtm, rtime_str))			{			BIO_printf(bio_err, "invalid revocation date %s\n", rtime_str);			goto err;			}		}	if (reason_str)		{		for (i = 0; i < NUM_REASONS; i++)			{			if(!strcasecmp(reason_str, crl_reasons[i]))				{				reason_code = i;				break;				}			}		if (reason_code == OCSP_REVOKED_STATUS_NOSTATUS)			{			BIO_printf(bio_err, "invalid reason code %s\n", reason_str);			goto err;			}		if (reason_code == 7)			reason_code = OCSP_REVOKED_STATUS_REMOVEFROMCRL;		else if (reason_code == 8)		/* Hold instruction */			{			if (!arg_str)				{					BIO_printf(bio_err, "missing hold instruction\n");				goto err;				}			reason_code = OCSP_REVOKED_STATUS_CERTIFICATEHOLD;			hold = OBJ_txt2obj(arg_str, 0);			if (!hold)				{				BIO_printf(bio_err, "invalid object identifier %s\n", arg_str);				goto err;				}			if (phold) *phold = hold;			}		else if ((reason_code == 9) || (reason_code == 10))			{			if (!arg_str)				{					BIO_printf(bio_err, "missing compromised time\n");				goto err;				}			comp_time = ASN1_GENERALIZEDTIME_new();			if (!ASN1_GENERALIZEDTIME_set_string(comp_time, arg_str))				{					BIO_printf(bio_err, "invalid compromised time %s\n", arg_str);				goto err;				}			if (reason_code == 9)				reason_code = OCSP_REVOKED_STATUS_KEYCOMPROMISE;			else				reason_code = OCSP_REVOKED_STATUS_CACOMPROMISE;			}		}	if (preason) *preason = reason_code;	if (pinvtm) *pinvtm = comp_time;	else ASN1_GENERALIZEDTIME_free(comp_time);	ret = 1;	err:	if (tmp) OPENSSL_free(tmp);	if (!phold) ASN1_OBJECT_free(hold);	if (!pinvtm) ASN1_GENERALIZEDTIME_free(comp_time);	return ret;	}