Default logger now allows level to be set and we use a reasonable setting, e.g. no DEBUG
This commit is contained in:
@@ -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);
|
||||||
|
|
||||||
|
|||||||
169
lib/_cdio_osx.c
169
lib/_cdio_osx.c
@@ -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,
|
||||||
|
|||||||
@@ -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:
|
||||||
|
if (level >= cdio_loglevel_default) {
|
||||||
fprintf (stderr, "**ERROR: %s\n", message);
|
fprintf (stderr, "**ERROR: %s\n", message);
|
||||||
fflush (stderr);
|
fflush (stderr);
|
||||||
|
}
|
||||||
exit (EXIT_FAILURE);
|
exit (EXIT_FAILURE);
|
||||||
break;
|
break;
|
||||||
case CDIO_LOG_DEBUG:
|
case CDIO_LOG_DEBUG:
|
||||||
|
if (level >= cdio_loglevel_default) {
|
||||||
fprintf (stdout, "--DEBUG: %s\n", message);
|
fprintf (stdout, "--DEBUG: %s\n", message);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case CDIO_LOG_WARN:
|
case CDIO_LOG_WARN:
|
||||||
|
if (level >= cdio_loglevel_default) {
|
||||||
fprintf (stdout, "++ WARN: %s\n", message);
|
fprintf (stdout, "++ WARN: %s\n", message);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case CDIO_LOG_INFO:
|
case CDIO_LOG_INFO:
|
||||||
|
if (level >= cdio_loglevel_default) {
|
||||||
fprintf (stdout, " INFO: %s\n", message);
|
fprintf (stdout, " INFO: %s\n", message);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case CDIO_LOG_ASSERT:
|
case CDIO_LOG_ASSERT:
|
||||||
|
if (level >= cdio_loglevel_default) {
|
||||||
fprintf (stderr, "!ASSERT: %s\n", message);
|
fprintf (stderr, "!ASSERT: %s\n", message);
|
||||||
fflush (stderr);
|
fflush (stderr);
|
||||||
|
}
|
||||||
abort ();
|
abort ();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
Reference in New Issue
Block a user