home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
348.lha
/
chatterbox_v1.0
/
sources
/
config.c
< prev
next >
Wrap
C/C++ Source or Header
|
1990-02-14
|
3KB
|
142 lines
/* sound effect gimmick player - config routine */
#include <exec/types.h>
#include <functions.h>
#include <exec/memory.h>
#include <exec/nodes.h>
#include <exec/lists.h>
#include <stdio.h>
#include <fcntl.h>
#include "assert.h"
#include "iff.h"
#include "8svx.h"
#include "sample.h"
#include "chatter.h"
#define MATCH 0
Sample *Load8SVX();
int gab_interval = 300;
int total_loaded = 0;
struct gab_info gab_data[N_GAB_TYPES];
int minimum_timer_interval, maximum_timer_interval;
int timer_noload = NO;
char timer_loadopt[20];
InitGabData()
{
register int i, j;
for (i = 0; i < N_GAB_TYPES; i++)
{
gab_data[i].n_gab_items = 0;
gab_data[i].next_new_gab_item = 0;
gab_data[i].next_play_gab_item = 0;
for (j = 0; j < MAX_GAB_ITEMS; j++)
gab_data[i].Samples[j] = NULL;
}
}
Config()
{
FILE *fp;
char s[80];
int gab_type = -1;
struct gab_info *gabp;
int nconverted;
if ((fp = fopen("ChatterBox:config.data","r")) == NULL)
panic("ChatterBox:config.data config file doesn't exist");
while (fgets(s,80,fp) != NULL)
{
s[strlen(s)-1] = '\0'; /* cream the newline */
if (s[0] != ' ')
{
if (strncmp(s,"diskin",6) == MATCH)
gab_type = GAB_DISKIN;
else if (strncmp(s,"diskout",7) == MATCH)
gab_type = GAB_DISKOUT;
else if (strncmp(s,"timer",5) == MATCH)
{
gab_type = GAB_EVERY_SO_OFTEN;
nconverted = sscanf(&s[5],"%s %d %d",timer_loadopt,&minimum_timer_interval,&maximum_timer_interval);
timer_noload = (strcmp(timer_loadopt,"noload") == MATCH);
if (nconverted != 3)
sscanf(&s[6],"%d %d",&minimum_timer_interval,&maximum_timer_interval);
if ((minimum_timer_interval > maximum_timer_interval)
|| (minimum_timer_interval <= 0) || (maximum_timer_interval <= 0))
{
if ((minimum_timer_interval != 0) || (maximum_timer_interval != 0))
printf("config file 'timer' line is bad, using 5 minute default value\n");
minimum_timer_interval = maximum_timer_interval = 300;
}
}
else if (strncmp(s,"preferences",11) == MATCH)
gab_type = GAB_NEW_PREFERENCES;
else if (strncmp(s,"activate",8) == MATCH)
gab_type = GAB_WINDOWACTIVE;
else if (strncmp(s,"deactivate",10) == MATCH)
gab_type = GAB_WINDOWINACTIVE;
else if (strncmp(s,"beep",4) == MATCH)
gab_type = GAB_BEEP;
else
{
printf("'%s' should be 'diskin', 'diskout', 'timer', 'preferences', 'activate',\n",s);
printf("'deactivate', or 'beep'\n");
gab_type = -1;
}
}
else
{
if (gab_type == -1)
{
printf("ignored '%s'",s);
}
else
{
gabp = &gab_data[gab_type];
if ((gab_type == GAB_EVERY_SO_OFTEN) && (timer_noload == YES))
{
AddDeferredSound(s);
}
else if (gabp->next_new_gab_item < MAX_GAB_ITEMS)
{
gabp->Samples[gabp->next_new_gab_item] = Load8SVX(&s[1]);
if (gabp->Samples[gabp->next_new_gab_item])
{
gabp->n_gab_items++;
gabp->next_new_gab_item++;
total_loaded++;
}
}
else
{
printf("too many entries for one type, '%s' ignored\n",&s[1]);
}
}
}
}
fclose(fp);
if (total_loaded == 0)
panic("no sample files loaded");
}
/* end of config.c */