X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Finterface%2Fintf_eject.c;h=4031d99d75e5116501973499be4e00426257ceb4;hb=922b5784b451e815c1c9626eb4537a7f6d4b9836;hp=6f3bd04f5fcfb9f9dd5fda5a2e2a6deea071cac4;hpb=402252afb6ed22e64ca80ba6625a3635ad6fddb2;p=vlc diff --git a/src/interface/intf_eject.c b/src/interface/intf_eject.c index 6f3bd04f5f..4031d99d75 100644 --- a/src/interface/intf_eject.c +++ b/src/interface/intf_eject.c @@ -1,13 +1,13 @@ /***************************************************************************** * intf_eject.c: CD/DVD-ROM ejection handling functions ***************************************************************************** - * Copyright (C) 2001, 2002 VideoLAN - * $Id: intf_eject.c,v 1.21 2003/09/18 17:54:02 zorglub Exp $ + * Copyright (C) 2001-2004 the VideoLAN team + * $Id$ * - * Author: Julien Blache for the Linux part - * with code taken from the Linux "eject" command - * Jon Lech Johansen for Darwin - * Gildas Bazin for Win32 + * Authors: Julien Blache for the Linux part + * with code taken from the Linux "eject" command + * Jon Lech Johansen for Darwin + * Gildas Bazin for Win32 * * 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 @@ -21,7 +21,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ /** @@ -29,17 +29,16 @@ * This file contain functions to eject CD and DVD drives */ -#include +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif -#include -#include +#include #ifdef HAVE_UNISTD_H # include #endif -#include - #ifdef HAVE_FCNTL_H # include #endif @@ -48,7 +47,7 @@ # include #endif -#if defined(SYS_LINUX) && defined(HAVE_LINUX_VERSION_H) +#if defined(__linux__) && defined(HAVE_LINUX_VERSION_H) # include /* handy macro found in 2.1 kernels, but not in older ones */ # ifndef KERNEL_VERSION @@ -56,7 +55,6 @@ # endif # include -# include # include # include @@ -76,20 +74,16 @@ # include #endif +#include + /***************************************************************************** * Local prototypes *****************************************************************************/ -#if defined(SYS_LINUX) && defined(HAVE_LINUX_VERSION_H) +#if defined(__linux__) && defined(HAVE_LINUX_VERSION_H) static int EjectSCSI ( int i_fd ); #endif -/***************************************************************************** - * intf_Eject: eject the CDRom - ***************************************************************************** - * returns 0 on success - * returns 1 on failure - * returns -1 if not implemented - *****************************************************************************/ +#undef intf_Eject /** * \brief Ejects the CD /DVD * \ingroup vlc_interface @@ -97,11 +91,12 @@ static int EjectSCSI ( int i_fd ); * \param psz_device the CD/DVD to eject * \return 0 on success, 1 on failure, -1 if not implemented */ -int __intf_Eject( vlc_object_t *p_this, const char *psz_device ) +int intf_Eject( vlc_object_t *p_this, const char *psz_device ) { + VLC_UNUSED(p_this); int i_ret = VLC_SUCCESS; -#ifdef SYS_DARWIN +#ifdef __APPLE__ FILE *p_eject; char *psz_disk; char sz_cmd[32]; @@ -110,7 +105,7 @@ int __intf_Eject( vlc_object_t *p_this, const char *psz_device ) * The only way to cleanly unmount the disc under MacOS X * is to use the 'disktool' command line utility. It uses * the non-public Disk Arbitration API, which can not be - * used by Cocoa or Carbon applications. + * used by Cocoa or Carbon applications. */ if( ( psz_disk = (char *)strstr( psz_device, "disk" ) ) != NULL && @@ -165,13 +160,13 @@ int __intf_Eject( vlc_object_t *p_this, const char *psz_device ) i_flags = MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID | MCI_OPEN_ELEMENT | MCI_OPEN_SHAREABLE; - if( !mciSendCommand( 0, MCI_OPEN, i_flags, (unsigned long)&op ) ) + if( !mciSendCommand( 0, MCI_OPEN, i_flags, (uintptr_t)&op ) ) { st.dwItem = MCI_STATUS_READY; - /* Eject disc */ + /* Eject disc */ i_ret = mciSendCommand( op.wDeviceID, MCI_SET, MCI_SET_DOOR_OPEN, 0 ); - /* Release access to the device */ - mciSendCommand( op.wDeviceID, MCI_CLOSE, MCI_WAIT, 0 ); + /* Release access to the device */ + mciSendCommand( op.wDeviceID, MCI_CLOSE, MCI_WAIT, 0 ); } else i_ret = VLC_EGENERIC; @@ -183,14 +178,14 @@ int __intf_Eject( vlc_object_t *p_this, const char *psz_device ) /* This code could be extended to support CD/DVD-ROM chargers */ i_fd = open( psz_device, O_RDONLY | O_NONBLOCK ); - + if( i_fd == -1 ) { msg_Err( p_this, "could not open device %s", psz_device ); return VLC_EGENERIC; } -#if defined(SYS_LINUX) && defined(HAVE_LINUX_VERSION_H) +#if defined(__linux__) && defined(HAVE_LINUX_VERSION_H) /* Try a simple ATAPI eject */ i_ret = ioctl( i_fd, CDROMEJECT, 0 ); @@ -208,7 +203,7 @@ int __intf_Eject( vlc_object_t *p_this, const char *psz_device ) i_ret = ioctl( i_fd, CDROMEJECT, 0 ); #else - msg_Warn( p_this, "CD-Rom ejection unsupported on this platform" ); + msg_Warn( p_this, "CD-ROM ejection unsupported on this platform" ); i_ret = -1; #endif @@ -220,7 +215,7 @@ int __intf_Eject( vlc_object_t *p_this, const char *psz_device ) /* The following functions are local */ -#if defined(SYS_LINUX) && defined(HAVE_LINUX_VERSION_H) +#if defined(__linux__) && defined(HAVE_LINUX_VERSION_H) /***************************************************************************** * Eject using SCSI commands. Return 0 if successful *****************************************************************************/ @@ -269,7 +264,7 @@ static int EjectSCSI( int i_fd ) { return VLC_EGENERIC; } - + scsi_cmd.inlen = 0; scsi_cmd.outlen = 0; scsi_cmd.cmd[0] = START_STOP; @@ -283,10 +278,10 @@ static int EjectSCSI( int i_fd ) { return VLC_EGENERIC; } - + /* Force kernel to reread partition table when new disc inserted */ i_status = ioctl( i_fd, BLKRRPART ); - + return i_status; } #endif