int save_index(char *dbfile, char *suffix, CA_DB *db)
int save_index(const char *dbfile, const char *suffix, CA_DB *db)
int save_index(char *dbfile, char *suffix, CA_DB *db)	{	char buf[3][BSIZE];	BIO *out = BIO_new(BIO_s_file());	int j;	if (out == NULL)		{		ERR_print_errors(bio_err);		goto err;		}	j = strlen(dbfile) + strlen(suffix);	if (j + 6 >= BSIZE)		{		BIO_printf(bio_err,"file name too long\n");		goto err;		}#ifndef OPENSSL_SYS_VMS	j = BIO_snprintf(buf[2], sizeof buf[2], "%s.attr", dbfile);#else	j = BIO_snprintf(buf[2], sizeof buf[2], "%s-attr", dbfile);#endif#ifndef OPENSSL_SYS_VMS	j = BIO_snprintf(buf[1], sizeof buf[1], "%s.attr.%s", dbfile, suffix);#else	j = BIO_snprintf(buf[1], sizeof buf[1], "%s-attr-%s", dbfile, suffix);#endif#ifndef OPENSSL_SYS_VMS	j = BIO_snprintf(buf[0], sizeof buf[0], "%s.%s", dbfile, suffix);#else	j = BIO_snprintf(buf[0], sizeof buf[0], "%s-%s", dbfile, suffix);#endif#ifdef RL_DEBUG	BIO_printf(bio_err, "DEBUG: writing \"%s\"\n", buf[0]);#endif	if (BIO_write_filename(out,buf[0]) <= 0)		{		perror(dbfile);		BIO_printf(bio_err,"unable to open '%s'\n", dbfile);		goto err;		}	j=TXT_DB_write(out,db->db);	if (j <= 0) goto err;				BIO_free(out);	out = BIO_new(BIO_s_file());#ifdef RL_DEBUG	BIO_printf(bio_err, "DEBUG: writing \"%s\"\n", buf[1]);#endif	if (BIO_write_filename(out,buf[1]) <= 0)		{		perror(buf[2]);		BIO_printf(bio_err,"unable to open '%s'\n", buf[2]);		goto err;		}	BIO_printf(out,"unique_subject = %s\n",		db->attributes.unique_subject ? "yes" : "no");	BIO_free(out);	return 1; err:	return 0;	}