/*
** Prefs Functions
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "prefs.h"
#include "gui.h"

char *prf_setstring(char *to, char *from);


void prf_Setup(int argc, char *argv[]) {

	static char defserv[] = "dyndns.justlinux.com";

	memset(myprf,0,sizeof(struct prfstr));
	prf_Set(PRFA_SERVER,(u_long)defserv);
	prf_Set(PRFA_PORT,2345);
	prf_Load();

}


void prf_Free(void) {

	prf_Set(PRFA_USER,0);
	prf_Set(PRFA_PASS,0);
	prf_Set(PRFA_HOST,0);
	prf_Set(PRFA_SERVER,0);

}


void prf_Set(long attr, u_long value) {

	switch(attr) {
		case PRFA_USER:
			myprf->user = prf_setstring(myprf->user,(char *)value);
			break;
		case PRFA_PASS:
			myprf->pass = prf_setstring(myprf->pass,(char *)value);
			break;
		case PRFA_HOST:
			myprf->host = prf_setstring(myprf->host,(char *)value);
			break;
		case PRFA_SERVER:
			myprf->server = prf_setstring(myprf->server,(char *)value);
			break;
		case PRFA_PORT:
			myprf->port = (int)value;
			break;
		}

}


char *prf_setstring(char *to, char *from) {

	if (to!=0) free(to);

	if (from==0) return(0);

	to = malloc(strlen(from)+1);
	if (to==0) return(0);
	strcpy(to,from);
	return(to);

}


u_long prf_Get(long attr) {

	switch(attr) {
		case PRFA_USER:
			return((u_long)myprf->user);
			break;
		case PRFA_PASS:
			return((u_long)myprf->pass);
			break;
		case PRFA_HOST:
			return((u_long)myprf->host);
			break;
		case PRFA_SERVER:
			return((u_long)myprf->server);
			break;
		case PRFA_PORT:
			return((u_long)myprf->port);
			break;
	}

}


void prf_Load(void) {

	FILE *f;
	char temp[80],*s;
	f = fopen("config.jl","r");
	if (f!=0) {
		while(fgets(temp,sizeof(temp),f)) {
			s = strtok(temp," ");
			if (!s) {
				continue;
			} else if ( stricmp(s,"user")==0 ) {
				if (s=strtok(NULL,"\n")) prf_Set(PRFA_USER,(u_long)s);
			} else if ( stricmp(s,"password")==0 ) {
				if (s=strtok(NULL,"\n")) prf_Set(PRFA_PASS,(u_long)s);
			} else if ( stricmp(s,"host")==0 ) {
				if (s=strtok(NULL,"\n")) prf_Set(PRFA_HOST,(u_long)s);
			}
		}
		fclose(f);
	}

}


void prf_Save(void) {

	FILE *f;
	u_long temp;

	f = fopen("config.jl","w");
	if (f!=0) {
		temp = prf_Get(PRFA_USER);
		if (temp!=0) fprintf(f,"user %s\n",(char *)temp);
		temp = prf_Get(PRFA_PASS);
		if (temp!=0) fprintf(f,"password %s\n",(char *)temp);
		temp = prf_Get(PRFA_HOST);
		if (temp!=0) fprintf(f,"host %s\n",(char *)temp);
		fclose(f);
		gui_Say("Settings saved.");
	} else {
		gui_Say("Error in save!");
	}

}
