xref: /haiku/src/tests/add-ons/kernel/file_systems/cdda/cdda_text.cpp (revision 0945b14311b948a3edb4259638bdda05f604e611)
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