#include "geotrace.h"
char *traceroute_path,*prefs_path,*maps_dir_path,*start_map;
int timeout,maxttl,resolve,first_time=0,line_width;
FILE *prefs_file;
gdouble line_color[3];

void get_prefs_from_file() {
	char *option,*value;
	float color[3];

	traceroute_path = malloc (100);
	prefs_path = malloc (100);
	maps_dir_path = malloc (100);
	start_map = malloc (30);
	value = malloc (100);
	option = malloc (30);
	sprintf (prefs_path,"%s",GEO_PREFS_FILE);
	strcpy (traceroute_path,TRACE_PATH_DEF);
	strcpy (maps_dir_path,MAPS_DIR_DEF);
	strcpy (start_map,START_MAP_DEF);
	maxttl = MAXTTL_DEF;
	timeout = TIMEOUT_DEF;
	resolve = RESOLVE_DEF;
	line_width = LINE_WIDTH_DEF;
	line_color[0] = LINE_COLOR_RED_DEF;
	line_color[1] = LINE_COLOR_GREEN_DEF;
	line_color[2] = LINE_COLOR_BLUE_DEF;

	// check if file exists
	if ((prefs_file = fopen (prefs_path,"r")) == NULL) {
		first_time = 1;
		save_prefs_to_file();
	} else {
		while (!feof(prefs_file)) {
			fscanf (prefs_file,"%s %s\n",option,value);
			if (strcmp(option,"traceroute_path") == 0) {
				strcpy (traceroute_path,value);
			} else if (strcmp(option,"maxttl") == 0) {
				maxttl = atoi(value);
			} else if (strcmp(option,"timeout") == 0) {
				timeout = atoi(value);
			} else if (strcmp(option,"resolve") == 0) {
				resolve = atoi(value);
			} else if (strcmp(option,"maps_dir") == 0) {
				strcpy (maps_dir_path,value);
			} else if (strcmp(option,"start_map") == 0) {
				strcpy (start_map,value);
			} else if (strcmp(option,"line_color") == 0) {
				sscanf (value,"%f,%f,%f",&color[0],&color[1],&color[2]);
				line_color[0] = (double)color[0];
				line_color[1] = (double)color[1];
				line_color[2] = (double)color[2];
			} else if (strcmp(option,"line_width") == 0) {
				line_width = atoi(value);
			}
		}
		fclose (prefs_file);
	}
	my_gdk_color = g_malloc(sizeof(GdkColor));
	tmp_gdk_color = g_malloc(sizeof(GdkColor));
	my_gdk_color->red = (guint16)(line_color[0]*65535.0);
	my_gdk_color->green = (guint16)(line_color[1]*65535.0);
	my_gdk_color->blue = (guint16)(line_color[2]*65535.0);
}

void save_prefs_to_file() {
	if ((prefs_file = fopen (prefs_path,"w")) == NULL) {
		fprintf (stdout,"Can't create prefs file\n");
	} else {
		fprintf (prefs_file,"traceroute_path %s\n",traceroute_path);
		fprintf (prefs_file,"maxttl %d\n",maxttl);
		fprintf (prefs_file,"timeout %d\n",timeout);
		fprintf (prefs_file,"resolve %d\n",resolve);
		fprintf (prefs_file,"maps_dir %s\n",maps_dir_path);
		fprintf (prefs_file,"start_map %s\n",start_map);
		fprintf (prefs_file,"line_color %f,%f,%f\n",line_color[0],line_color[1],line_color[2]);
		fprintf (prefs_file,"line_width %d\n",line_width);
		fclose (prefs_file);
	}
}


syntax highlighted by Code2HTML, v. 0.9.1