Add OS/2 driver courtesy of KO Myung-Hun. Security: Add "%s" to cdparanoia's fprintfs

This commit is contained in:
R. Bernstein
2009-02-08 05:52:49 -05:00
parent 7c497a2c73
commit 58d87158cf
13 changed files with 1650 additions and 15 deletions

3
THANKS
View File

@@ -22,6 +22,9 @@ Justin B. Ruggles <jruggle at earthlink.net>
Justin F. Hallett <thesin at southofheaven.org>
Fink packaging and matters OSX
KO Myung-Hun <komh@chollian.net>
OS2 Driver
Kris Verbeeck <airborne at advalvas.be>:
CDDB library support from libcddb http://libcddb.sourceforge.net
Gentoo ebuild-file

View File

@@ -440,6 +440,13 @@ int has_timeout=sizeof(test.timeout);],
# LIBS="$LIBS -lcam"
cd_drivers="${cd_drivers}, NetBSD "
;;
os2*)
AC_DEFINE([HAVE_OS2_CDROM], [1],
[Define 1 if you have OS/2 CD-ROM support])
LT_NO_UNDEFINED="-no-undefined"
LDFLAGS="$LDFLAGS -Zbin-files"
cd_drivers="${cd_drivers}, OS2 "
;;
*)
AC_MSG_WARN([Don't have OS CD-reading support for ${host_os}...])
AC_MSG_WARN([Will use generic support.])
@@ -474,6 +481,7 @@ AC_SUBST(HAVE_FREEBSD_CDROM)
AC_SUBST(HAVE_LINUX_CDROM)
AC_SUBST(HAVE_SOLARIS_CDROM)
AC_SUBST(HAVE_WIN32_CDROM)
AC_SUBST(HAVE_OS2_CDROM)
LIBCDIO_SOURCE_PATH="`pwd`"
AC_DEFINE_UNQUOTED(LIBCDIO_SOURCE_PATH, "$LIBCDIO_SOURCE_PATH",

View File

@@ -1,7 +1,7 @@
/* -*- c -*-
$Id: device.h,v 1.39 2008/03/28 01:28:50 rocky Exp $
Copyright (C) 2005, 2006, 2008 Rocky Bernstein <rocky@gnu.org>
Copyright (C) 2005, 2006, 2008, 2009 Rocky Bernstein <rocky@gnu.org>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -157,6 +157,7 @@ extern "C" {
DRIVER_NETBSD, /**< NetBSD Driver. */
DRIVER_LINUX, /**< GNU/Linux Driver */
DRIVER_SOLARIS, /**< Sun Solaris Driver */
DRIVER_OS2, /**< IBM OS/2 Driver */
DRIVER_OSX, /**< Apple OSX Driver */
DRIVER_WIN32, /**< Microsoft Windows Driver. Includes ASPI and
ioctl access. */
@@ -575,7 +576,7 @@ extern "C" {
CdIo_t * cdio_open_aix (const char *psz_source);
/*! Return a string containing the default device name that the
BSDI driver would use when none is specified.
AIX driver would use when none is specified.
@return the cdio object for subsequent operations.
NULL on error or there is no AIX driver.
@@ -810,6 +811,44 @@ extern "C" {
char **cdio_get_devices_win32(void);
/*! Set up CD-ROM for reading using the IBM OS/2 driver. The
device_name is the some sort of device name.
NULL is returned on error or there is no OS/2 driver.
In some situations of drivers or OS's we can't find a CD device if
there is no media in it and it is possible for this routine to return
NULL even though there may be a hardware CD-ROM.
@see cdio_open_cd, cdio_open
*/
CdIo_t * cdio_open_os2 (const char *psz_source);
/*! Set up CD-ROM for reading using the IBM OS/2 driver. The
device_name is the some sort of device name.
NULL is returned on error or there is no OS/2 driver.
@see cdio_open_cd, cdio_open
*/
CdIo_t * cdio_open_am_os2 (const char *psz_source,
const char *psz_access_mode);
/*! Return a string containing the default device name that the
OS/2 driver would use when none is specified. A scan is made
for CD-ROM drives with CDs in them.
In some situations of drivers or OS's we can't find a CD device if
there is no media in it and it is possible for this routine to return
NULL even though there may be a hardware CD-ROM.
*/
char * cdio_get_default_device_os2(void);
/*! Return a list of all of the CD-ROM devices that the OS/2 driver
can find.
*/
char **cdio_get_devices_os2(void);
/*! Set up CD-ROM for reading using the Nero driver. The
device_name is the some sort of device name.

View File

@@ -1,7 +1,7 @@
/*
$Id: common_interface.h,v 1.7 2008/04/16 17:00:40 karl Exp $
Copyright (C) 2004, 2005, 2008 Rocky Bernstein <rocky@gnu.org>
Copyright (C) 2004, 2005, 2008, 2009 Rocky Bernstein <rocky@gnu.org>
Copyright (C) 1998 Monty xiphmont@mit.edu
This program is free software: you can redistribute it and/or modify
@@ -28,7 +28,7 @@
#include <cdio/types.h>
#include "low_interface.h"
#if defined(HAVE_LSTAT) && !defined(HAVE_WIN32_CDROM)
#if defined(HAVE_LSTAT) && !defined(HAVE_WIN32_CDROM) && !defined(HAVE_OS2_CDROM)
/* Define this if the CD-ROM device is a file in the filesystem
that can be lstat'd
*/

View File

@@ -1,6 +1,6 @@
# $Id: Makefile.am,v 1.28 2008/10/20 01:25:15 rocky Exp $
#
# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008
# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009
# Rocky Bernstein <rocky@gnu.org>
#
# This program is free software: you can redistribute it and/or modify
@@ -42,7 +42,7 @@
# public release, then set AGE to 0. A changed interface means an
# incompatibility with previous versions.
libcdio_la_CURRENT = 10
libcdio_la_CURRENT = 11
libcdio_la_REVISION = 0
libcdio_la_AGE = 0
@@ -89,6 +89,7 @@ libcdio_sources = \
MSWindows/win32.c \
MSWindows/win32.h \
netbsd.c \
os2.c \
osx.c \
read.c \
sector.c \

View File

@@ -1,7 +1,7 @@
/*
$Id: cdio_private.h,v 1.37 2008/04/22 15:29:11 karl Exp $
Copyright (C) 2003, 2004, 2005, 2008 Rocky Bernstein <rocky@gnu.org>
Copyright (C) 2003, 2004, 2005, 2008, 2009 Rocky Bernstein <rocky@gnu.org>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -485,6 +485,7 @@ extern "C" {
driver_return_code_t close_tray_freebsd (const char *psz_drive);
driver_return_code_t close_tray_linux (const char *psz_drive);
driver_return_code_t close_tray_netbsd (const char *psz_drive);
driver_return_code_t close_tray_os2 (const char *psz_drive);
driver_return_code_t close_tray_osx (const char *psz_drive);
driver_return_code_t close_tray_solaris (const char *psz_drive);
driver_return_code_t close_tray_win32 (const char *psz_drive);
@@ -523,6 +524,10 @@ extern "C" {
True if Sun Solaris driver is available. */
bool cdio_have_solaris (void);
/*! DEPRICATED: use cdio_have_driver().
True if IBM OS2 driver is available. */
bool cdio_have_os2 (void);
/*! DEPRICATED: use cdio_have_driver().
True if Apple OSX driver is available. */
bool cdio_have_osx (void);

View File

@@ -47,7 +47,8 @@
/* The below array gives of the drivers that are currently available for
on a particular host. */
CdIo_driver_t CdIo_driver[CDIO_MAX_DRIVER] = { {0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL} };
CdIo_driver_t CdIo_driver[CDIO_MAX_DRIVER] = {
{0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL} };
/* The last valid entry of Cdio_driver.
-1 or (CDIO_DRIVER_UNINIT) means uninitialzed.
@@ -67,6 +68,8 @@ const driver_id_t cdio_os_driver = DRIVER_FREEBSD;
const driver_id_t cdio_os_driver = DRIVER_LINUX;
#elif HAVE_DARWIN_CDROM
const driver_id_t cdio_os_driver = DRIVER_OSX;
#elif HAVE_OS2_CDROM
const driver_id_t cdio_os_driver = DRIVER_OS2;
#elif HAVE_SOLARIS_CDROM
const driver_id_t cdio_os_driver = DRIVER_SOLARIS;
#elif HAVE_WIN32_CDROM
@@ -187,6 +190,19 @@ CdIo_driver_t CdIo_all_drivers[CDIO_MAX_DRIVER+1] = {
&close_tray_solaris
},
{DRIVER_OS2,
CDIO_SRC_IS_DEVICE_MASK|CDIO_SRC_IS_NATIVE_MASK|CDIO_SRC_IS_SCSI_MASK,
"OS2",
"IBM OS/2 driver",
&cdio_have_os2,
&cdio_open_os2,
&cdio_open_am_os2,
&cdio_get_default_device_os2,
&cdio_is_device_os2,
&cdio_get_devices_os2,
&close_tray_os2
},
{DRIVER_OSX,
CDIO_SRC_IS_DEVICE_MASK|CDIO_SRC_IS_NATIVE_MASK|CDIO_SRC_IS_SCSI_MASK,
"OS X",
@@ -942,6 +958,7 @@ cdio_open_am (const char *psz_orig_source, driver_id_t driver_id,
case DRIVER_SOLARIS:
case DRIVER_WIN32:
case DRIVER_OSX:
case DRIVER_OS2:
case DRIVER_NRG:
case DRIVER_BINCUE:
case DRIVER_CDRDAO:

View File

@@ -134,6 +134,12 @@ extern "C" {
*/
bool cdio_is_device_win32(const char *source_name);
/*!
Return true if source_name could be a device containing a CD-ROM on
OS/2
*/
bool cdio_is_device_os2(const char *source_name);
/*!
Return true if source_name could be a device containing a CD-ROM on

1552
lib/driver/os2.c Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
/*
$Id: cd-paranoia.c,v 1.37 2008/06/19 15:44:30 flameeyes Exp $
Copyright (C) 2004, 2005, 2006, 2007, 2008 Rocky Bernstein <rocky@gnu.org>
Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Rocky Bernstein <rocky@gnu.org>
(C) 1998 Monty <xiphmont@mit.edu>
This program is free software: you can redistribute it and/or modify
@@ -528,10 +528,10 @@ callback(long int inpos, paranoia_cb_mode_t function)
buffer[aheadposition+19]='>';
}
fprintf(stderr,buffer);
fprintf(stderr, "%s", buffer);
if (logfile != NULL && function==-1) {
fprintf(logfile,buffer+1);
fprintf(logfile, "%s", buffer+1);
fprintf(logfile,"\n\n");
fflush(logfile);
}

View File

@@ -36,7 +36,7 @@ void
report(const char *s)
{
if (!quiet) {
fprintf(stderr,s);
fprintf(stderr, "%s", s);
fputc('\n',stderr);
}
}

View File

@@ -1,7 +1,7 @@
/*
$Id: cdda-player.c,v 1.50 2008/06/19 15:44:14 flameeyes Exp $
Copyright (C) 2005, 2006, 2008 Rocky Bernstein <rocky@gnu.org>
Copyright (C) 2005, 2006, 2008, 2009 Rocky Bernstein <rocky@gnu.org>
Adapted from Gerd Knorr's player.c program <kraxel@bytesex.org>
Copyright (C) 1997, 1998
@@ -110,7 +110,9 @@ static bool b_verbose = false;
static bool debug = false;
static bool b_interactive = true;
static bool b_prefer_cdtext = true;
#ifdef CDDB_ADDED
static bool b_cddb = false; /* CDDB database present */
#endif
static bool b_db = false; /* we have a database at all */
static bool b_record = false; /* we have a record for
static the inserted CD */
@@ -143,7 +145,9 @@ static char year[5];
static bool b_cdtext_title; /* true if from CD-Text, false if from CDDB */
static bool b_cdtext_artist; /* true if from CD-Text, false if from CDDB */
static bool b_cdtext_genre; /* true if from CD-Text, false if from CDDB */
#ifdef CDTEXT_CATEGORY_ADDED
static bool b_cdtext_category; /* true if from CD-Text, false if from CDDB */
#endif
static bool b_cdtext_year; /* true if from CD-Text, false if from CDDB */
static cdio_audio_volume_t audio_volume;

View File

@@ -1,7 +1,7 @@
/*
$Id: util.c,v 1.54 2008/04/14 17:30:27 karl Exp $
Copyright (C) 2003, 2004, 2005, 2007, 2008 Rocky Bernstein <rocky@gnu.org>
Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009 Rocky Bernstein <rocky@gnu.org>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -160,7 +160,7 @@ open_input(const char *psz_source, source_image_t source_image,
char *
fillout_device_name(const char *device_name)
{
#if defined(HAVE_WIN32_CDROM)
#if defined(HAVE_WIN32_CDROM) || defined(HAVE_OS2_CDROM)
return strdup(device_name);
#else
unsigned int prefix_len = strlen(DEV_PREFIX);