140897d39SAxel Dörfler /*
2*0945b143SAxel Dörfler * Copyright 2007-2010, Axel Dörfler, axeld@pinc-software.de.
340897d39SAxel Dörfler * Distributed under the terms of the MIT License.
440897d39SAxel Dörfler */
540897d39SAxel Dörfler
640897d39SAxel Dörfler
740897d39SAxel Dörfler #include <fcntl.h>
840897d39SAxel Dörfler #include <stdio.h>
940897d39SAxel Dörfler #include <stdlib.h>
10*0945b143SAxel Dörfler #include <string.h>
1140897d39SAxel Dörfler #include <unistd.h>
1240897d39SAxel Dörfler
13*0945b143SAxel Dörfler #include "cdda.h"
14*0945b143SAxel Dörfler #include "cddb.h"
15*0945b143SAxel Dörfler
1640897d39SAxel Dörfler
1740897d39SAxel Dörfler extern const char* __progname;
1840897d39SAxel Dörfler
1940897d39SAxel Dörfler
2090c18b97SAxel Dörfler extern "C" status_t
user_memcpy(void * dest,const void * source,size_t length)2190c18b97SAxel Dörfler user_memcpy(void *dest, const void *source, size_t length)
2290c18b97SAxel Dörfler {
2390c18b97SAxel Dörfler memcpy(dest, source, length);
2490c18b97SAxel Dörfler return B_OK;
2590c18b97SAxel Dörfler }
2690c18b97SAxel Dörfler
2790c18b97SAxel Dörfler
2840897d39SAxel Dörfler extern "C" void
dprintf(const char * format,...)2940897d39SAxel Dörfler dprintf(const char* format, ...)
3040897d39SAxel Dörfler {
3140897d39SAxel Dörfler va_list args;
3240897d39SAxel Dörfler va_start(args, format);
3340897d39SAxel Dörfler vprintf(format, args);
3440897d39SAxel Dörfler fflush(stdout);
3540897d39SAxel Dörfler va_end(args);
3640897d39SAxel Dörfler }
3740897d39SAxel Dörfler
3840897d39SAxel Dörfler
3940897d39SAxel Dörfler int
main(int argc,char ** argv)4040897d39SAxel Dörfler main(int argc, char** argv)
4140897d39SAxel Dörfler {
4240897d39SAxel Dörfler if (argc < 2)
4340897d39SAxel Dörfler return -1;
4440897d39SAxel Dörfler int fd = open(argv[1], O_RDONLY);
4540897d39SAxel Dörfler if (fd < 0)
4640897d39SAxel Dörfler return -1;
4740897d39SAxel Dörfler
4840897d39SAxel Dörfler uint8 buffer[1024];
49e8113cabSAxel Dörfler scsi_toc_toc *toc = (scsi_toc_toc *)buffer;
50*0945b143SAxel Dörfler
51*0945b143SAxel Dörfler status_t status = read_table_of_contents(fd, toc, sizeof(buffer));
52*0945b143SAxel Dörfler if (status != B_OK) {
53*0945b143SAxel Dörfler fprintf(stderr, "%s: Retrieving TOC failed: %s\n", __progname,
54*0945b143SAxel Dörfler strerror(status));
5540897d39SAxel Dörfler return -1;
5640897d39SAxel Dörfler }
5740897d39SAxel Dörfler
5840897d39SAxel Dörfler cdtext text;
5940897d39SAxel Dörfler read_cdtext(fd, text);
6040897d39SAxel Dörfler
61e8113cabSAxel Dörfler uint32 id = compute_cddb_disc_id(*toc);
62e8113cabSAxel Dörfler printf("CDDB disc ID: %lx\n", id);
63e8113cabSAxel Dörfler
6440897d39SAxel Dörfler close(fd);
6540897d39SAxel Dörfler }
66