コード例 #1
0
ファイル: lha_reader.c プロジェクト: djdron/zxtune
LHAReader *lha_reader_new(LHAInputStream *stream)
{
	LHABasicReader *basic_reader;
	LHAReader *reader;

	basic_reader = lha_basic_reader_new(stream);

	if (basic_reader == NULL) {
		return NULL;
	}

	reader = malloc(sizeof(LHAReader));

	if (reader == NULL) {
		lha_basic_reader_free(basic_reader);
		return NULL;
	}

	reader->reader = basic_reader;
	reader->curr_file = NULL;
	reader->curr_file_type = CURR_FILE_START;
	reader->decoder = NULL;
	reader->inner_decoder = NULL;
	reader->dir_stack = NULL;
	reader->dir_policy = LHA_READER_DIR_END_OF_DIR;

	return reader;
}
コード例 #2
0
ファイル: dump-headers.c プロジェクト: fragglet/lhasa
int main(int argc, char *argv[])
{
	LHAInputStream *stream;
	LHABasicReader *reader;
	LHAFileHeader *header;

	if (argc < 2) {
		printf("Usage: %s <filename>\n", argv[0]);
		exit(-1);
	}

	// Give output in binary mode for cross-platform consistency,
	// so that it can be compared correctly on Windows.

	lha_arch_set_binary(stdout);

	stream = lha_input_stream_from(argv[1]);

	if (stream == NULL) {
		fprintf(stderr, "Failed to open '%s'\n", argv[1]);
		exit(-1);
	}

	reader = lha_basic_reader_new(stream);

	for (;;) {
		header = lha_basic_reader_next_file(reader);

		if (header == NULL) {
			break;
		}

		print_header(header);
		printf("--\n");
	}

	lha_basic_reader_free(reader);
	lha_input_stream_free(stream);

	return 0;
}