//protos //
	BOOL ReadPrefs(struct List *list, char dir[255], char *filename);
	BOOL SavePrefs(struct List *list, char dir[255], char *filename);
	void fwritetext(FILE *fp, struct List *list);
	void fwriteline(FILE *fp, char *text);
	void cancel(void);
	void updatemenu(void);

BOOL ReadPrefs(struct List *list, char dir[255], char *filename) {
	struct EventNode	event,*current;
	FILE							*fp;
	struct Config			header;
	char 							olddir[255];
	BOOL							success=FALSE;
	struct TextNode		textnode;

	getcd(0,olddir);
	chdir(dir);

	DetachList(RecGadgets[GD_EventList]);
	if(fp=fopen(filename,"r")) {
		windowlock=rtLockWindow(RecWnd);
		if(fread(&header,1,sizeof(header),fp)==0)
			cancel();
		if(stricmp(CONFIGHEADER,header.header)==0) {
			config=header;
			config.Dateformat=DDMMYY;
			while(!feof(fp)) {
				if(fread(&event,1,sizeof(event),fp)) {
					current=(struct EventNode *)AddEvent(RecGadgets[GD_EventList],
																			list, event.eventname);
					current->prefixdate	=event.prefixdate;
					strcpy(current->date,event.date);
					strcpy(current->sort,event.sort);
					current->prefixtime=event.prefixtime;
					current->days				=event.days;
					current->repeat			=event.repeat;
					strcpy(current->time,event.time);
					current->type				=event.type;
					current->frequent		=event.frequent;
					current->calctype		=event.calctype;
					current->lines			=event.lines;
					current->DD					=event.DD;
					current->MM					=event.MM;
					current->YY					=event.YY;

					while(event.lines--) {
						fread(&textnode,1,sizeof(textnode),fp);
						AddText(current->textlist,textnode.text);
					}
					success=TRUE;
					updatemenu();
				}
			}
			}
		else {
			 rtEZRequestTags(	"The loaded configuration is not\n"
												"a " RECALL " configuration!",
												"I guess not...",NULL,NULL,
												RTEZ_ReqTitle, recall,
												TAG_END);
			success=FALSE;
		}
	}
	fclose(fp);
	chdir(olddir);
	AttachList(RecGadgets[GD_EventList],list);
	rtUnlockWindow(RecWnd,windowlock);
	return success;
}


BOOL SavePrefs(struct List *list, char dir[255], char *filename) {
	struct Node				*node;
	struct EventNode	*event;
	FILE							*fp;
	char							olddir[255];
	BOOL							success=FALSE;

	getcd(0,olddir);
	chdir(dir);
	if(fp=fopen(filename,"w")) {
		windowlock=rtLockWindow(RecWnd);
		fwrite(&config,1,sizeof(config),fp);
		if(!IsListEmpty(list)) {
			for(every_node) {
				event=(struct EventNode *)node;
				event->lines=Count(event->textlist);
				if(fwrite(&(*event),1,sizeof(*event),fp)) {
					fwritetext(fp, event->textlist);
					fflush(fp);
				} else {
					cancel();
					break;
				}
			}
		}
		fclose(fp);
		success=TRUE;
	}	else {
			DisplayBeep(NULL);
			rtEZRequestTags("Could not open %s\n",
											"OK",NULL,NULL,
											RTEZ_ReqTitle, recall,
											TAG_END);
			success=FALSE;
	}
	chdir(olddir);
	rtUnlockWindow(RecWnd,windowlock);
	return success;
}

void fwritetext(FILE *fp, struct List *list) {
	struct Node *node;

	for(every_node)
		fwriteline(fp,node->ln_Name);
}

void fwriteline(FILE *fp, char *text) {
	struct TextNode textnode;

	strcpy(textnode.text,text);
	fwrite(&textnode,1,sizeof(textnode),fp);
}

void cancel(void) {
	DisplayBeep(NULL);
	rtEZRequest("Error discovered in loaded project!",
							"OK",NULL,
							(struct TagItem *)normaltag);
}

void updatemenu(void) {
/*	struct NewMenu RecNewMenu[] = {
		NM_TITLE, (STRPTR)"Project", NULL, 0, NULL, NULL,
		NM_ITEM, (STRPTR)"New", (STRPTR)"N", NM_ITEMDISABLED, 0L, NULL,
		NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
		NM_ITEM, (STRPTR)"Open...", (STRPTR)"O", 0, 0L, NULL,
		NM_ITEM, (STRPTR)"Merge...", (STRPTR)"M", NM_ITEMDISABLED, 0L, NULL,
		NM_ITEM, (STRPTR)"Save As...", (STRPTR)"A", NM_ITEMDISABLED, 0L, NULL,
		NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
		NM_ITEM, (STRPTR)"Test project", (STRPTR)"T", NM_ITEMDISABLED, 0L, NULL,
		NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
		NM_ITEM, (STRPTR)"About", NULL, 0, 0L, NULL,
		NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
		NM_ITEM, (STRPTR)"Quit", (STRPTR)"Q", 0, 0L, NULL,
		NM_TITLE, (STRPTR)"Edit", NULL, 0, NULL, NULL,
		NM_ITEM, (STRPTR)"Last Saved", (STRPTR)"L", 0, 0L, NULL,
		NM_TITLE, (STRPTR)"Settings", NULL, 0, NULL, NULL,
		NM_ITEM, (STRPTR)"Centre Requesters", NULL, CHECKIT|CHECKED|MENUTOGGLE, 0L, NULL,
		NM_ITEM, (STRPTR)"Sort by", NULL, 0, NULL, NULL,
		NM_SUB, (STRPTR)"Name", NULL, CHECKIT, 2L, NULL,
		NM_SUB, (STRPTR)"Date", NULL, CHECKIT (config.Sortby==SORTBY_DATE) ? "|CHECKED" :"" , 1L, NULL,
		NM_END, NULL, NULL, 0, 0L, NULL };

	SetMenuStrip(RecWnd,RecMenus);
*/
}
