Esempio n. 1
0
File: config.c Progetto: ArkShen/xcb
static void category_destroy(struct category *cat) {
	variables_destroy(cat->first);
	FREE(cat->file);
	FREE(cat);
}
Esempio n. 2
0
int main(int argc, char **argv) {
	int c;
	const char *output_name = DEFAULT_OUTPUT_NAME;
	const char *game_name = DEFAULT_GAME_NAME;
	int automatic_metadata = 1;
	char *srcbase;
	
	gbasm_filename = argv[0];
	
	while((c = getopt(argc, argv, "ho:n:m")) != -1) {
		switch(c) {
		case 'h':
			help();
			return 1;
		case 'o':
			output_name = optarg;
			break;
		case 'n':
			game_name = optarg;
			break;
		case 'm':
			automatic_metadata = 0;
			break;
		}
	}
	
	if(optind >= argc) {
		gbasm_error("no input files");
		return 1;
	}
	
	input_filename = argv[optind];
	
	src = read_file(input_filename);
	srcbase = src;
	
	buffer_init(&binary);
	
	/* make pass 1 */
	pass = 1;
	yyparse();
	
	/* reset everything and make pass 2 */
	src = srcbase;
	yylloc.first_column = 1;
	yylloc.last_column = 1;
	yylloc.first_line = 1;
	yylloc.last_line = 1;
	binary.write_pos = 0;
	pass = 2;
	yyparse();
	
	if(automatic_metadata)
		write_metadata(game_name);
	write_binary_to_file(output_name);
	
	/* clean up a bit */
	free(srcbase);
	variables_destroy();
	free(binary.data);
	
	return 0;
}