1/*
2 * Copyright 2007-2010, Axel Dörfler, axeld@pinc-software.de.
3 * Distributed under the terms of the MIT License.
4 */
5
6
7#include <fcntl.h>
8#include <stdio.h>
9#include <stdlib.h>
10#include <string.h>
11#include <unistd.h>
12
13#include "cdda.h"
14#include "cddb.h"
15
16
17extern const char* __progname;
18
19
20extern "C" status_t
21user_memcpy(void *dest, const void *source, size_t length)
22{
23	memcpy(dest, source, length);
24	return B_OK;
25}
26
27
28extern "C" void
29dprintf(const char* format, ...)
30{
31	va_list args;
32	va_start(args, format);
33	vprintf(format, args);
34	fflush(stdout);
35	va_end(args);
36}
37
38
39int
40main(int argc, char** argv)
41{
42	if (argc < 2)
43		return -1;
44	int fd = open(argv[1], O_RDONLY);
45	if (fd < 0)
46		return -1;
47
48	uint8 buffer[1024];
49	scsi_toc_toc *toc = (scsi_toc_toc *)buffer;
50
51	status_t status = read_table_of_contents(fd, toc, sizeof(buffer));
52	if (status != B_OK) {
53		fprintf(stderr, "%s: Retrieving TOC failed: %s\n", __progname,
54			strerror(status));
55		return -1;
56	}
57
58	cdtext text;
59	read_cdtext(fd, text);
60
61	uint32 id = compute_cddb_disc_id(*toc);
62	printf("CDDB disc ID: %lx\n", id);
63
64	close(fd);
65}
66