Ejemplo n.º 1
0
void
read_color_scheme_file()
{

	FILE *fp;
	char config_file[PATH_MAX];
	char line[MAX_LEN];
	char *s1 = NULL;
	char *s2 = NULL;
	char *s3 = NULL;
	char *sx = NULL;
	int args;
	struct stat stat_buf;

	snprintf(config_file, sizeof(config_file), "%s/colorschemes",
				  cfg.config_dir);

	if(stat(config_file, &stat_buf) == 0)
		curr_stats.colorscheme_file_mtime = stat_buf.st_mtime;
	else
		curr_stats.config_file_mtime = 0;

	if((fp = fopen(config_file, "r")) == NULL)
	{
		load_default_colors();

		cfg.color_scheme_num++;
		cfg.color_pairs_num = 12;
		return;
	}

	while(fgets(line, MAX_LEN, fp))
	{
		args = 0;

		if(line[0] == '#')
			continue;

		if((sx = s1 = strchr(line, '=')) != NULL)
		{
			s1++;
			chomp(s1);
			*sx = '\0';
			args = 1;
		}
		else
			continue;
		if((sx = s2 = strchr(s1, '=')) != NULL)
		{
			s2++;
			chomp(s2);
			*sx = '\0';
			args = 2;
		}
		if((args == 2) && ((sx = s3 = strchr(s2, '=')) != NULL))
		{
			s3++;
			chomp(s3);
			*sx = '\0';
			args = 3;
		}

		if(args == 1)
		{
			if(!strcmp(line, "COLORSCHEME"))
			{

				//check if last colorscheme is complete and pad it before starting
				// a new scheme
				// verify_scheme();

					//col_schemes = (Col_scheme *)realloc(col_schemes,
					//		sizeof(Col_scheme *) +1);

				snprintf(col_schemes[cfg.color_scheme_num].name,
						NAME_MAX, "%s", s1);

				cfg.color_scheme_num++;

				if (cfg.color_scheme_num > 8)
					break;

				continue;

			}
			if(!strcmp(line, "DIRECTORY"))
			{
				snprintf(col_schemes[cfg.color_scheme_num - 1].dir,
							PATH_MAX, "%s", s1);

				continue;
			}
		}
		if(!strcmp(line, "COLOR") && args == 3)
		{
			add_color(s1, s2, s3);
		}

	}

	fclose(fp);

	//verify_color_schemes();
	return;
}
Ejemplo n.º 2
0
static void
read_color_scheme_file(const char *config_file)
{
	FILE *fp;
	char line[MAX_LEN];
	char *s1 = NULL;
	char *s2 = NULL;
	char *s3 = NULL;
	char *sx = NULL;

	if((fp = fopen(config_file, "r")) == NULL)
	{
		load_default_colors();
		cs.count = 1;
		return;
	}

	while(fgets(line, MAX_LEN, fp))
	{
		int args;

		if(line[0] == '#')
			continue;

		if((sx = s1 = strchr(line, '=')) != NULL)
		{
			s1++;
			chomp(s1);
			*sx = '\0';
			args = 1;
		}
		else
			continue;
		if((sx = s2 = strchr(s1, '=')) != NULL)
		{
			s2++;
			chomp(s2);
			*sx = '\0';
			args = 2;
		}
		if((args == 2) && ((sx = s3 = strchr(s2, '=')) != NULL))
		{
			s3++;
			chomp(s3);
			*sx = '\0';
			args = 3;
		}

		if(args == 1)
		{
			if(!strcmp(line, "COLORSCHEME"))
			{
				cs.count++;

				if(cs.count > MAX_COLOR_SCHEMES)
					break;

				init_color_scheme(&cs.array[cs.count - 1]);

				snprintf(cs.array[cs.count - 1].name, NAME_MAX, "%s", s1);
				continue;
			}
			if(!strcmp(line, "DIRECTORY"))
			{
				col_scheme_t* c;

				c = &cs.array[cs.count - 1];
				snprintf(c->dir, PATH_MAX, "%s", s1);
				continue;
			}
		}
		if(!strcmp(line, "COLOR") && args == 3)
			add_color(s1, s2, s3);
	}

	fclose(fp);
}