Default logger now allows level to be set and we use a reasonable setting, e.g. no DEBUG

This commit is contained in:
rocky
2003-10-05 14:47:45 +00:00
parent 998b4bb30f
commit b2656fd6ce
3 changed files with 187 additions and 16 deletions

View File

@@ -1,5 +1,5 @@
/* /*
$Id: logging.h,v 1.2 2003/04/21 14:13:54 hvr Exp $ $Id: logging.h,v 1.3 2003/10/05 14:48:07 rocky Exp $
Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org> Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org>
@@ -31,6 +31,8 @@ typedef enum {
CDIO_LOG_ASSERT CDIO_LOG_ASSERT
} cdio_log_level_t; } cdio_log_level_t;
extern int cdio_loglevel_default;
void void
cdio_log (cdio_log_level_t level, const char format[], ...) GNUC_PRINTF(2, 3); cdio_log (cdio_log_level_t level, const char format[], ...) GNUC_PRINTF(2, 3);

View File

@@ -1,5 +1,5 @@
/* /*
$Id: _cdio_osx.c,v 1.9 2003/10/04 20:11:27 rocky Exp $ $Id: _cdio_osx.c,v 1.10 2003/10/05 14:47:45 rocky Exp $
Copyright (C) 2003 Rocky Bernstein <rocky@panix.com> from vcdimager code Copyright (C) 2003 Rocky Bernstein <rocky@panix.com> from vcdimager code
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org> Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
@@ -31,7 +31,7 @@
# include "config.h" # include "config.h"
#endif #endif
static const char _rcsid[] = "$Id: _cdio_osx.c,v 1.9 2003/10/04 20:11:27 rocky Exp $"; static const char _rcsid[] = "$Id: _cdio_osx.c,v 1.10 2003/10/05 14:47:45 rocky Exp $";
#include <cdio/sector.h> #include <cdio/sector.h>
#include <cdio/util.h> #include <cdio/util.h>
@@ -603,7 +603,7 @@ _cdio_get_track_green(void *env, track_t track_num)
return ((_obj->tocent[track_num-1].cdte_ctrl & 2) != 0); return ((_obj->tocent[track_num-1].cdte_ctrl & 2) != 0);
#else #else
/* FIXME! Figure out how to do. */ /* FIXME! Figure out how to do. */
return false; return true;
#endif #endif
} }
@@ -612,10 +612,166 @@ _cdio_get_track_green(void *env, track_t track_num)
/*! /*!
Return a string containing the default CD device if none is specified. Return a string containing the default CD device if none is specified.
*/ */
char * char **
cdio_get_default_device_osx() cdio_get_devices_osx(void)
{ {
return strdup(DEFAULT_CDIO_DEVICE); #ifndef HAVE_DARWIN_CDROM
return NULL;
#else
io_object_t next_media;
mach_port_t master_port;
kern_return_t kern_result;
io_iterator_t media_iterator;
CFMutableDictionaryRef classes_to_match;
char **drives = NULL;
unsigned int num_drives=0;
kern_result = IOMasterPort( MACH_PORT_NULL, &master_port );
if( kern_result != KERN_SUCCESS )
{
return( nil );
}
classes_to_match = IOServiceMatching( kIOCDMediaClass );
if( classes_to_match == NULL )
{
return( nil );
}
CFDictionarySetValue( classes_to_match, CFSTR(kIOMediaEjectable),
kCFBooleanTrue );
kern_result = IOServiceGetMatchingServices( master_port,
classes_to_match,
&media_iterator );
if( kern_result != KERN_SUCCESS )
{
return( nil );
}
next_media = IOIteratorNext( media_iterator );
if( next_media != 0 )
{
char psz_buf[0x32];
size_t dev_path_length;
CFTypeRef str_bsd_path;
do
{
str_bsd_path = IORegistryEntryCreateCFProperty( next_media,
CFSTR( kIOBSDName ),
kCFAllocatorDefault,
0 );
if( str_bsd_path == NULL )
{
IOObjectRelease( next_media );
continue;
}
snprintf( psz_buf, sizeof(psz_buf), "%s%c", _PATH_DEV, 'r' );
dev_path_length = strlen( psz_buf );
if( CFStringGetCString( str_bsd_path,
(char*)&psz_buf + dev_path_length,
sizeof(psz_buf) - dev_path_length,
kCFStringEncodingASCII ) )
{
CFRelease( str_bsd_path );
IOObjectRelease( next_media );
IOObjectRelease( media_iterator );
cdio_add_device_list(&drives, psz_buf, &num_drives);
}
CFRelease( str_bsd_path );
IOObjectRelease( next_media );
} while( ( next_media = IOIteratorNext( media_iterator ) ) != 0 );
}
IOObjectRelease( media_iterator );
cdio_add_device_list(&drives, NULL, &num_drives);
return drives;
#endif /* HAVE_DARWIN_CDROM */
}
/*!
Return a string containing the default CD device if none is specified.
*/
char *
cdio_get_default_device_osx(void)
{
#ifndef HAVE_DARWIN_CDROM
return NULL;
#else
io_object_t next_media;
mach_port_t master_port;
kern_return_t kern_result;
io_iterator_t media_iterator;
CFMutableDictionaryRef classes_to_match;
kern_result = IOMasterPort( MACH_PORT_NULL, &master_port );
if( kern_result != KERN_SUCCESS )
{
return( nil );
}
classes_to_match = IOServiceMatching( kIOCDMediaClass );
if( classes_to_match == NULL )
{
return( nil );
}
CFDictionarySetValue( classes_to_match, CFSTR(kIOMediaEjectable),
kCFBooleanTrue );
kern_result = IOServiceGetMatchingServices( master_port,
classes_to_match,
&media_iterator );
if( kern_result != KERN_SUCCESS )
{
return( nil );
}
next_media = IOIteratorNext( media_iterator );
if( next_media != 0 )
{
char psz_buf[0x32];
size_t dev_path_length;
CFTypeRef str_bsd_path;
do
{
str_bsd_path = IORegistryEntryCreateCFProperty( next_media,
CFSTR( kIOBSDName ),
kCFAllocatorDefault,
0 );
if( str_bsd_path == NULL )
{
IOObjectRelease( next_media );
continue;
}
snprintf( psz_buf, sizeof(psz_buf), "%s%c", _PATH_DEV, 'r' );
dev_path_length = strlen( psz_buf );
if( CFStringGetCString( str_bsd_path,
(char*)&psz_buf + dev_path_length,
sizeof(psz_buf) - dev_path_length,
kCFStringEncodingASCII ) )
{
CFRelease( str_bsd_path );
IOObjectRelease( next_media );
IOObjectRelease( media_iterator );
return strdup( psz_buf );
}
CFRelease( str_bsd_path );
IOObjectRelease( next_media );
} while( ( next_media = IOIteratorNext( media_iterator ) ) != 0 );
}
IOObjectRelease( media_iterator );
return NULL;
#endif /* HAVE_DARWIN_CDROM */
} }
/*! /*!
@@ -636,6 +792,7 @@ cdio_open_osx (const char *source_name)
.free = _cdio_osx_free, .free = _cdio_osx_free,
.get_arg = _cdio_get_arg, .get_arg = _cdio_get_arg,
.get_default_device = cdio_get_default_device_osx, .get_default_device = cdio_get_default_device_osx,
.get_devices = cdio_get_devices_osx,
.get_first_track_num= _cdio_get_first_track_num, .get_first_track_num= _cdio_get_first_track_num,
.get_mcn = NULL, /*there is a readMCN, but how to use? */ .get_mcn = NULL, /*there is a readMCN, but how to use? */
.get_num_tracks = _cdio_get_num_tracks, .get_num_tracks = _cdio_get_num_tracks,

View File

@@ -1,5 +1,5 @@
/* /*
$Id: logging.c,v 1.2 2003/04/22 12:09:09 rocky Exp $ $Id: logging.c,v 1.3 2003/10/05 14:47:45 rocky Exp $
Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org> Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org>
@@ -30,7 +30,9 @@
#include "cdio_assert.h" #include "cdio_assert.h"
static const char _rcsid[] = "$Id: logging.c,v 1.2 2003/04/22 12:09:09 rocky Exp $"; static const char _rcsid[] = "$Id: logging.c,v 1.3 2003/10/05 14:47:45 rocky Exp $";
int cdio_loglevel_default = CDIO_LOG_WARN;
static void static void
default_cdio_log_handler (cdio_log_level_t level, const char message[]) default_cdio_log_handler (cdio_log_level_t level, const char message[])
@@ -38,22 +40,32 @@ default_cdio_log_handler (cdio_log_level_t level, const char message[])
switch (level) switch (level)
{ {
case CDIO_LOG_ERROR: case CDIO_LOG_ERROR:
fprintf (stderr, "**ERROR: %s\n", message); if (level >= cdio_loglevel_default) {
fflush (stderr); fprintf (stderr, "**ERROR: %s\n", message);
fflush (stderr);
}
exit (EXIT_FAILURE); exit (EXIT_FAILURE);
break; break;
case CDIO_LOG_DEBUG: case CDIO_LOG_DEBUG:
fprintf (stdout, "--DEBUG: %s\n", message); if (level >= cdio_loglevel_default) {
fprintf (stdout, "--DEBUG: %s\n", message);
}
break; break;
case CDIO_LOG_WARN: case CDIO_LOG_WARN:
fprintf (stdout, "++ WARN: %s\n", message); if (level >= cdio_loglevel_default) {
fprintf (stdout, "++ WARN: %s\n", message);
}
break; break;
case CDIO_LOG_INFO: case CDIO_LOG_INFO:
fprintf (stdout, " INFO: %s\n", message); if (level >= cdio_loglevel_default) {
fprintf (stdout, " INFO: %s\n", message);
}
break; break;
case CDIO_LOG_ASSERT: case CDIO_LOG_ASSERT:
fprintf (stderr, "!ASSERT: %s\n", message); if (level >= cdio_loglevel_default) {
fflush (stderr); fprintf (stderr, "!ASSERT: %s\n", message);
fflush (stderr);
}
abort (); abort ();
break; break;
default: default: