changeset 7746:15ce89ba92cf

Don't start a CDDB request to the CDDB server if there is no CD in the drive, plus some compilation warning fixes
author bertrand
date Wed, 16 Oct 2002 08:14:42 +0000
parents 1d3a3dc1f488
children ff5d9b3815b5
files libmpdemux/cddb.c
diffstat 1 files changed, 20 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/libmpdemux/cddb.c	Wed Oct 16 01:49:40 2002 +0000
+++ b/libmpdemux/cddb.c	Wed Oct 16 08:14:42 2002 +0000
@@ -180,7 +180,7 @@
 	unsigned int i, t = 0, n = 0;
 
 	i = 0;
-	while (i < tot_trks) {
+	while (i < (unsigned int)tot_trks) {
 		n = n + cddb_sum((cdtoc[i].min * 60) + cdtoc[i].sec);
 		i++;
 	}
@@ -290,7 +290,7 @@
 	struct stat file_stat;
 	char file_name[100];
 	int file_fd, ret;
-	size_t wrote=0;
+	int wrote=0;
 
 	if( cddb_data==NULL || cddb_data->cache_dir==NULL ) return -1;
 
@@ -320,7 +320,7 @@
 		close(file_fd);
 		return -1;
 	}
-	if( wrote!=cddb_data->xmcd_file_size ) {
+	if( (unsigned int)wrote!=cddb_data->xmcd_file_size ) {
 		printf("Not all the xmcd file has been written\n");
 		close(file_fd);
 		return -1;
@@ -521,7 +521,7 @@
 int
 cddb_freedb_sites_parse(HTTP_header_t *http_hdr, cddb_data_t *cddb_data) {
 	int ret, status;
-	
+
 	ret = sscanf( http_hdr->body, "%d ", &status);
 	if( ret!=1 ) {
 		printf("Parse error\n");
@@ -530,7 +530,8 @@
 
 	switch(status) {
 		case 210:
-			// Parse the sites
+			// TODO: Parse the sites
+			ret = cddb_data->anonymous;	// For gcc complaining about unused parameter.
 			return 0;
 		case 401:
 			printf("No sites information available\n");
@@ -572,7 +573,8 @@
 cddb_retrieve(cddb_data_t *cddb_data) {
 	char offsets[1024], command[1024];
 	char *ptr;
-	int i, time_len;
+	unsigned int i, time_len;
+	int ret;
 
 	ptr = offsets;
 	for( i=0; i<cddb_data->tracks ; i++ ) {
@@ -593,8 +595,8 @@
 	//cddb_get_freedb_sites(&cddb_data);
 
 	sprintf(command, "cddb+query+%08lx+%d+%s%d", cddb_data->disc_id, cddb_data->tracks, offsets, time_len );
-	i = cddb_http_request(command, cddb_query_parse, cddb_data);
-	if( i<0 ) return -1;
+	ret = cddb_http_request(command, cddb_query_parse, cddb_data);
+	if( ret<0 ) return -1;
 
 	if( cddb_data->cache_dir!=NULL ) {
 		free(cddb_data->cache_dir);
@@ -611,6 +613,13 @@
 	cddb_data.tracks = read_toc();
 	cddb_data.disc_id = cddb_discid(cddb_data.tracks);
 	cddb_data.anonymous = 1;	// Don't send user info by default
+
+	// Check if there is a CD in the drive
+	// FIXME: That's not really a good way to check
+	if( cddb_data.disc_id==8256 ) {
+		printf("No CD in the drive\n");
+		return -1;
+	}
 	
 	home_dir = getenv("HOME");
 	if( home_dir==NULL ) {
@@ -761,6 +770,9 @@
 	int ret;
 	
 	ret = cddb_resolve(&xmcd_file);
+	if( ret<0 ) {
+		return NULL;
+	}
 	if( ret==0 ) {
 		cd_info = cddb_parse_xmcd(xmcd_file);
 		free(xmcd_file);