#include <stdio.h>
#include "dx7.h"

char *rindex();

ReadBankFile(fileName, bank)
char *fileName;
struct dx7bank *bank;
{
	FILE *fp;

	if ((fp = fopen(fileName, "r")) == NULL) {
		perror(fileName);
		return (0);
	}

	if (fread(bank->b_voice, 1, sizeof(bank->b_voice), fp) != sizeof(bank->b_voice)) {
		fclose(fp);
		return (0);
	}

	fclose(fp);
	return (1);
}

WriteBankFile(fileName, bank)
char *fileName;
struct dx7bank *bank;
{
	FILE *fp;

	if ((fp = fopen(fileName, "w")) == NULL) {
		perror(fileName);
		return (0);
	}

	if (fwrite(bank, 1, sizeof(*bank), fp) != sizeof(*bank)) {
		fclose(fp);
		return (0);
	}

	fclose(fp);
	return (1);
}

ReadVoiceFile(fileName, voice)
char *fileName;
struct dx7voice *voice;
{
	FILE *fp;

	if ((fp = fopen(fileName, "r")) == NULL) {
		perror(fileName);
		return (0);
	}

	if (fread(voice, 1, sizeof(*voice), fp) != sizeof(*voice)) {
		fclose(fp);
		fprintf(stderr, "%s is too short to be a voice file.\n", fileName);
		return (0);
	}

	fclose(fp);
	return (1);
}

WriteVoiceFile(fileName, voice)
char *fileName;
struct dx7voice *voice;
{
	FILE *fp;

	if ((fp = fopen(fileName, "w")) == NULL) {
		perror(fileName);
		return (0);
	}

	if (fwrite(voice, 1, sizeof(*voice), fp) != sizeof(*voice)) {
		fclose(fp);
		return (0);
	}

	fclose(fp);
	return (1);
}

char *
basename(fileName)
char *fileName;
{
	register char *p;

	if ((p = rindex(fileName, '/')))
		return (++p);

	return (fileName);
}

