int save_file (CELL *c)
{
FILE *out = NULL;
	if ((out = fopen(current_path, "w")))
	{
		int i = 0;
		mvwaddstr(c->window, c->erow + 3, c->scol , "Saving file now.......");

		fprintf(out, "#define _USE_LOCAL_CONFIG\n");		
		fprintf(out, "\n\n\n/*\n * Compile Time options\n */\n");
		for (i = 0; compile_default[i].option; i++)
		{
			if (*(compile_default[i].help))
				fprintf(out, "/*\n * %s\n */\n", compile_default[i].help);
			if (compile_default[i].integer)
				fprintf(out, "#define %-50s1\n\n", compile_default[i].out);
			else
				fprintf(out, "/* #undef %s */\n\n", compile_default[i].out);
		}
		fprintf(out, "\n\n\n/*\n * Userlist options\n */\n");
		for (i = 0; userlist_default[i].option; i++)
		{
			if (*(userlist_default[i].help))
				fprintf(out, "/*\n * %s\n */\n", userlist_default[i].help);
			switch(userlist_default[i].type)
			{
				case STR_TYPE:
					break;
				default:
					fprintf(out, "#define %-50s %d\n\n", userlist_default[i].out, userlist_default[i].integer);
			}
		}
		fprintf(out, "\n\n\n/*\n * Flood options\n */\n");
		for (i = 0; flood_default[i].option; i++)
		{
			if (*(flood_default[i].help))
				fprintf(out, "/*\n * %s\n */\n", flood_default[i].help);
			switch(flood_default[i].type)
			{
				case STR_TYPE:
					break;
				default:
					fprintf(out, "#define %-50s %d\n\n", flood_default[i].out, flood_default[i].integer);
			}
		}
		fprintf(out, "\n\n\n/*\n * DCC options\n */\n");
		for (i = 0; dcc_default[i].option; i++)
		{
			if (*(dcc_default[i].help))
				fprintf(out, "/*\n * %s\n */\n", dcc_default[i].help);
			switch(dcc_default[i].type)
			{
				case STR_TYPE:
					break;
				default:
					fprintf(out, "#define %-50s %d\n\n", dcc_default[i].out, dcc_default[i].integer);
			}
		}
		fprintf(out, "\n\n\n/*\n * Server options\n */\n");
		for (i = 0; server_default[i].option; i++)
		{
			if (*(server_default[i].help))
				fprintf(out, "/*\n * %s\n */\n", server_default[i].help);
			switch(server_default[i].type)
			{
				case STR_TYPE:
					break;
				default:
					fprintf(out, "#define %-50s %d\n\n", server_default[i].out, server_default[i].integer);
			}
		}
		fprintf(out, "\n\n\n/*\n * Misc options\n */\n");
		for (i = 0; various_default[i].option; i++)
		{
			if (*(various_default[i].help))
				fprintf(out, "/*\n * %s\n */\n", various_default[i].help);
			switch(various_default[i].type)
			{
				case STR_TYPE:
					break;
				default:
					fprintf(out, "#define %-50s %d\n\n", various_default[i].out, various_default[i].integer);
			}
		}
		fprintf(out, "\n\n\n");
		fclose(out);
	}
	return TRUE;
}


syntax highlighted by Code2HTML, v. 0.9.1