[libfreebob] Fix build against gcc-4.7 Minor changes to comply with recent guidelines and cosmetics
Orcan Ogetbil
oget at fedoraproject.org
Thu Jan 12 01:48:00 UTC 2012
commit 91b21c587fa6f7de44c2c4c3367ad34087222da6
Author: Orcan Ogetbil <oget.fedora at gmail.com>
Date: Wed Jan 11 20:47:57 2012 -0500
Fix build against gcc-4.7
Minor changes to comply with recent guidelines and cosmetics
libfreebob-1.0.11-includes.patch | 94 ----
libfreebob-gcc46.patch | 66 ---
libfreebob-gcc47.patch | 1016 ++++++++++++++++++++++++++++++++++++++
libfreebob.spec | 42 +-
4 files changed, 1034 insertions(+), 184 deletions(-)
---
diff --git a/libfreebob-gcc47.patch b/libfreebob-gcc47.patch
new file mode 100644
index 0000000..1327495
--- /dev/null
+++ b/libfreebob-gcc47.patch
@@ -0,0 +1,1016 @@
+diff -rupN libfreebob-1.0.11.old/src/debugmodule/debugmodule.cpp libfreebob-1.0.11/src/debugmodule/debugmodule.cpp
+--- libfreebob-1.0.11.old/src/debugmodule/debugmodule.cpp 2007-10-15 14:15:09.000000000 -0400
++++ libfreebob-1.0.11/src/debugmodule/debugmodule.cpp 2012-01-11 20:27:22.621943311 -0500
+@@ -24,6 +24,7 @@
+ #include <netinet/in.h>
+
+ #include <iostream>
++#include <cstdio>
+
+ using namespace std;
+
+diff -rupN libfreebob-1.0.11.old/src/libfreebobavc/avc_extended_plug_info.cpp libfreebob-1.0.11/src/libfreebobavc/avc_extended_plug_info.cpp
+--- libfreebob-1.0.11.old/src/libfreebobavc/avc_extended_plug_info.cpp 2007-10-15 14:15:08.000000000 -0400
++++ libfreebob-1.0.11/src/libfreebobavc/avc_extended_plug_info.cpp 2012-01-11 20:27:29.357903411 -0500
+@@ -23,6 +23,8 @@
+ #include "ieee1394service.h"
+
+ #include <cstdlib>
++#include <cstdio>
++#include <cstring>
+ #include <netinet/in.h>
+ #include <iostream>
+
+@@ -120,7 +122,7 @@ ExtendedPlugInfoPlugNameSpecificData::de
+ return true;
+ }
+
+-ExtendedPlugInfoPlugNameSpecificData::ExtendedPlugInfoPlugNameSpecificData*
++typename ExtendedPlugInfoPlugNameSpecificData::ExtendedPlugInfoPlugNameSpecificData*
+ ExtendedPlugInfoPlugNameSpecificData::clone() const
+ {
+ return new ExtendedPlugInfoPlugNameSpecificData( *this );
+@@ -156,7 +158,7 @@ ExtendedPlugInfoPlugNumberOfChannelsSpec
+ return true;
+ }
+
+-ExtendedPlugInfoPlugNumberOfChannelsSpecificData::ExtendedPlugInfoPlugNumberOfChannelsSpecificData*
++typename ExtendedPlugInfoPlugNumberOfChannelsSpecificData::ExtendedPlugInfoPlugNumberOfChannelsSpecificData*
+ ExtendedPlugInfoPlugNumberOfChannelsSpecificData::clone() const
+ {
+ return new ExtendedPlugInfoPlugNumberOfChannelsSpecificData( *this );
+@@ -229,7 +231,7 @@ ExtendedPlugInfoPlugChannelPositionSpeci
+ return true;
+ }
+
+-ExtendedPlugInfoPlugChannelPositionSpecificData::ExtendedPlugInfoPlugChannelPositionSpecificData*
++typename ExtendedPlugInfoPlugChannelPositionSpecificData::ExtendedPlugInfoPlugChannelPositionSpecificData*
+ ExtendedPlugInfoPlugChannelPositionSpecificData::clone() const
+ {
+ return new ExtendedPlugInfoPlugChannelPositionSpecificData( *this );
+@@ -287,7 +289,7 @@ ExtendedPlugInfoPlugChannelNameSpecificD
+ return true;
+ }
+
+-ExtendedPlugInfoPlugChannelNameSpecificData::ExtendedPlugInfoPlugChannelNameSpecificData*
++typename ExtendedPlugInfoPlugChannelNameSpecificData::ExtendedPlugInfoPlugChannelNameSpecificData*
+ ExtendedPlugInfoPlugChannelNameSpecificData::clone() const
+ {
+ return new ExtendedPlugInfoPlugChannelNameSpecificData( *this );
+@@ -334,7 +336,7 @@ ExtendedPlugInfoPlugInputSpecificData::d
+ return m_plugAddress->deserialize( de );
+ }
+
+-ExtendedPlugInfoPlugInputSpecificData::ExtendedPlugInfoPlugInputSpecificData*
++typename ExtendedPlugInfoPlugInputSpecificData::ExtendedPlugInfoPlugInputSpecificData*
+ ExtendedPlugInfoPlugInputSpecificData::clone() const
+ {
+ return new ExtendedPlugInfoPlugInputSpecificData( *this );
+@@ -410,7 +412,7 @@ ExtendedPlugInfoPlugOutputSpecificData::
+ return true;
+ }
+
+-ExtendedPlugInfoPlugOutputSpecificData::ExtendedPlugInfoPlugOutputSpecificData*
++typename ExtendedPlugInfoPlugOutputSpecificData::ExtendedPlugInfoPlugOutputSpecificData*
+ ExtendedPlugInfoPlugOutputSpecificData::clone() const
+ {
+ return new ExtendedPlugInfoPlugOutputSpecificData( *this );
+@@ -472,7 +474,7 @@ ExtendedPlugInfoClusterInfoSpecificData:
+ return true;
+ }
+
+-ExtendedPlugInfoClusterInfoSpecificData::ExtendedPlugInfoClusterInfoSpecificData*
++typename ExtendedPlugInfoClusterInfoSpecificData::ExtendedPlugInfoClusterInfoSpecificData*
+ ExtendedPlugInfoClusterInfoSpecificData::clone() const
+ {
+ return new ExtendedPlugInfoClusterInfoSpecificData( *this );
+diff -rupN libfreebob-1.0.11.old/src/libfreebobavc/avc_extended_plug_info.cpp.orig libfreebob-1.0.11/src/libfreebobavc/avc_extended_plug_info.cpp.orig
+--- libfreebob-1.0.11.old/src/libfreebobavc/avc_extended_plug_info.cpp.orig 1969-12-31 19:00:00.000000000 -0500
++++ libfreebob-1.0.11/src/libfreebobavc/avc_extended_plug_info.cpp.orig 2012-01-11 20:27:22.622943305 -0500
+@@ -0,0 +1,856 @@
++/* avc_extended_plug_info.cpp
++ * Copyright (C) 2005 by Daniel Wagner
++ *
++ * This file is part of FreeBoB.
++ *
++ * FreeBoB is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ * FreeBoB is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with FreeBoB; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA.
++ */
++
++#include "avc_extended_plug_info.h"
++#include "serialize.h"
++#include "ieee1394service.h"
++
++#include <cstdlib>
++#include <cstdio>
++#include <cstring>
++#include <netinet/in.h>
++#include <iostream>
++
++using namespace std;
++
++/////////////////////////////////////////
++/////////////////////////////////////////
++
++ExtendedPlugInfoPlugTypeSpecificData::ExtendedPlugInfoPlugTypeSpecificData( EExtendedPlugInfoPlugType ePlugType )
++ : IBusData()
++ , m_plugType( ePlugType )
++{
++}
++
++ExtendedPlugInfoPlugTypeSpecificData::~ExtendedPlugInfoPlugTypeSpecificData()
++{
++}
++
++bool
++ExtendedPlugInfoPlugTypeSpecificData::serialize( IOSSerialize& se )
++{
++ se.write( m_plugType, "ExtendedPlugInfoPlugTypeSpecificData plugType" );
++ return true;
++}
++
++
++bool
++ExtendedPlugInfoPlugTypeSpecificData::deserialize( IISDeserialize& de )
++{
++ de.read( &m_plugType );
++ return true;
++}
++
++ExtendedPlugInfoPlugTypeSpecificData* ExtendedPlugInfoPlugTypeSpecificData::clone() const
++{
++ return new ExtendedPlugInfoPlugTypeSpecificData( *this );
++}
++
++const char* extendedPlugInfoPlugTypeStrings[] =
++{
++ "IsoStream",
++ "AsyncStream",
++ "Midi",
++ "Sync",
++ "Analog",
++ "Digital",
++ "Unknown",
++};
++
++const char* extendedPlugInfoPlugTypeToString( plug_type_t plugType )
++{
++ if ( plugType > sizeof( extendedPlugInfoPlugTypeStrings ) ) {
++ return "Unknown";
++ } else {
++ return extendedPlugInfoPlugTypeStrings[plugType];
++ }
++}
++
++/////////////////////////////////////////
++/////////////////////////////////////////
++
++ExtendedPlugInfoPlugNameSpecificData::ExtendedPlugInfoPlugNameSpecificData()
++ : IBusData()
++{
++}
++
++ExtendedPlugInfoPlugNameSpecificData::~ExtendedPlugInfoPlugNameSpecificData()
++{
++}
++
++bool
++ExtendedPlugInfoPlugNameSpecificData::serialize( IOSSerialize& se )
++{
++ byte_t length = strlen( m_name.c_str() );
++ se.write( length,
++ "ExtendedPlugInfoPlugNameSpecificData: string length" );
++ for ( unsigned int i = 0; i < length; ++i ) {
++ se.write( static_cast<byte_t>( m_name[i] ),
++ "ExtendedPlugInfoPlugNameSpecificData: char" );
++ }
++
++ return true;
++}
++
++bool
++ExtendedPlugInfoPlugNameSpecificData::deserialize( IISDeserialize& de )
++{
++ byte_t length;
++ de.read( &length );
++ m_name.clear();
++ char* name;
++ de.read( &name, length );
++ m_name = name;
++
++ return true;
++}
++
++ExtendedPlugInfoPlugNameSpecificData::ExtendedPlugInfoPlugNameSpecificData*
++ExtendedPlugInfoPlugNameSpecificData::clone() const
++{
++ return new ExtendedPlugInfoPlugNameSpecificData( *this );
++}
++
++
++/////////////////////////////////////////
++/////////////////////////////////////////
++
++ExtendedPlugInfoPlugNumberOfChannelsSpecificData::ExtendedPlugInfoPlugNumberOfChannelsSpecificData()
++ : IBusData()
++ , m_nrOfChannels( 0 )
++{
++}
++
++ExtendedPlugInfoPlugNumberOfChannelsSpecificData::~ExtendedPlugInfoPlugNumberOfChannelsSpecificData()
++{
++}
++
++bool
++ExtendedPlugInfoPlugNumberOfChannelsSpecificData::serialize( IOSSerialize& se )
++{
++ se.write( m_nrOfChannels,
++ "ExtendedPlugInfoPlugNumberOfChannelsSpecificData: "
++ "number of channels" );
++ return true;
++}
++
++bool
++ExtendedPlugInfoPlugNumberOfChannelsSpecificData::deserialize( IISDeserialize& de )
++{
++ de.read( &m_nrOfChannels );
++ return true;
++}
++
++ExtendedPlugInfoPlugNumberOfChannelsSpecificData::ExtendedPlugInfoPlugNumberOfChannelsSpecificData*
++ExtendedPlugInfoPlugNumberOfChannelsSpecificData::clone() const
++{
++ return new ExtendedPlugInfoPlugNumberOfChannelsSpecificData( *this );
++}
++
++/////////////////////////////////////////
++/////////////////////////////////////////
++
++ExtendedPlugInfoPlugChannelPositionSpecificData::ExtendedPlugInfoPlugChannelPositionSpecificData()
++ : IBusData()
++ , m_nrOfClusters( 0 )
++{
++}
++
++ExtendedPlugInfoPlugChannelPositionSpecificData::~ExtendedPlugInfoPlugChannelPositionSpecificData()
++{
++}
++
++bool
++ExtendedPlugInfoPlugChannelPositionSpecificData::serialize( IOSSerialize& se )
++{
++ se.write( m_nrOfClusters,
++ "ExtendedPlugInfoPlugChannelPositionSpecificData: "
++ "number of clusters" );
++
++ for ( ClusterInfoVector::const_iterator it = m_clusterInfos.begin();
++ it != m_clusterInfos.end();
++ ++it )
++ {
++ const ClusterInfo* clusterInfo = &( *it );
++
++ se.write( clusterInfo->m_nrOfChannels,
++ "ExtendedPlugInfoPlugChannelPositionSpecificData: "
++ "number of channels" );
++ for ( ChannelInfoVector::const_iterator cit
++ = clusterInfo->m_channelInfos.begin();
++ cit != clusterInfo->m_channelInfos.end();
++ ++cit )
++ {
++ const ChannelInfo* channelInfo = &( *cit );
++ se.write( channelInfo->m_streamPosition,
++ "ExtendedPlugInfoPlugChannelPositionSpecificData: "
++ "stream position" );
++ se.write( channelInfo->m_location,
++ "ExtendedPlugInfoPlugChannelPositionSpecificData: "
++ "location" );
++ }
++ }
++
++ return true;
++}
++
++bool
++ExtendedPlugInfoPlugChannelPositionSpecificData::deserialize( IISDeserialize& de )
++{
++ m_clusterInfos.clear();
++
++ de.read( &m_nrOfClusters );
++ for ( int i = 0; i < m_nrOfClusters; ++i ) {
++ ClusterInfo clusterInfo;
++ de.read ( &clusterInfo.m_nrOfChannels );
++ for ( int j = 0; j < clusterInfo.m_nrOfChannels; ++j ) {
++ ChannelInfo channelInfo;
++ de.read( &channelInfo.m_streamPosition );
++ de.read( &channelInfo.m_location );
++ clusterInfo.m_channelInfos.push_back( channelInfo );
++ }
++ m_clusterInfos.push_back( clusterInfo );
++ }
++ return true;
++}
++
++ExtendedPlugInfoPlugChannelPositionSpecificData::ExtendedPlugInfoPlugChannelPositionSpecificData*
++ExtendedPlugInfoPlugChannelPositionSpecificData::clone() const
++{
++ return new ExtendedPlugInfoPlugChannelPositionSpecificData( *this );
++}
++
++/////////////////////////////////////////
++/////////////////////////////////////////
++
++ExtendedPlugInfoPlugChannelNameSpecificData::ExtendedPlugInfoPlugChannelNameSpecificData()
++ : IBusData()
++ , m_streamPosition( 0 )
++ , m_stringLength( 0xff )
++{
++}
++
++ExtendedPlugInfoPlugChannelNameSpecificData::~ExtendedPlugInfoPlugChannelNameSpecificData()
++{
++}
++
++bool
++ExtendedPlugInfoPlugChannelNameSpecificData::serialize( IOSSerialize& se )
++{
++ se.write( m_streamPosition,
++ "ExtendedPlugInfoPlugChannelNameSpecificData: stream position" );
++ se.write( m_stringLength,
++ "ExtendedPlugInfoPlugChannelNameSpecificData: string length" );
++ for ( unsigned int i = 0; i < m_plugChannelName.size(); ++i ) {
++ se.write( static_cast<byte_t>( m_plugChannelName[i] ),
++ "ExtendedPlugInfoPlugChannelNameSpecificData: char" );
++ }
++
++ return true;
++}
++
++bool
++ExtendedPlugInfoPlugChannelNameSpecificData::deserialize( IISDeserialize& de )
++{
++ de.read( &m_streamPosition );
++ de.read( &m_stringLength );
++
++ char* name = new char[m_stringLength+1];
++ for ( int i = 0; i < m_stringLength; ++i ) {
++ byte_t c;
++ de.read( &c );
++ // \todo do correct encoding
++ if ( c == '&' ) {
++ c = '+';
++ }
++ name[i] = c;
++ }
++ name[m_stringLength] = '\0';
++ m_plugChannelName = name;
++ delete[] name;
++
++ return true;
++}
++
++ExtendedPlugInfoPlugChannelNameSpecificData::ExtendedPlugInfoPlugChannelNameSpecificData*
++ExtendedPlugInfoPlugChannelNameSpecificData::clone() const
++{
++ return new ExtendedPlugInfoPlugChannelNameSpecificData( *this );
++}
++
++/////////////////////////////////////////
++/////////////////////////////////////////
++ExtendedPlugInfoPlugInputSpecificData::ExtendedPlugInfoPlugInputSpecificData()
++ : IBusData()
++{
++ UnitPlugSpecificDataPlugAddress
++ unitPlug( UnitPlugSpecificDataPlugAddress::ePT_PCR, 0x00 );
++ m_plugAddress
++ = new PlugAddressSpecificData( PlugAddressSpecificData::ePD_Output,
++ PlugAddressSpecificData::ePAM_Unit,
++ unitPlug );
++}
++
++ExtendedPlugInfoPlugInputSpecificData::ExtendedPlugInfoPlugInputSpecificData(const ExtendedPlugInfoPlugInputSpecificData& rhs )
++{
++ m_plugAddress = rhs.m_plugAddress->clone();
++}
++
++
++ExtendedPlugInfoPlugInputSpecificData::~ExtendedPlugInfoPlugInputSpecificData()
++{
++ delete m_plugAddress;
++ m_plugAddress = 0;
++}
++
++bool
++ExtendedPlugInfoPlugInputSpecificData::serialize( IOSSerialize& se )
++{
++ if ( m_plugAddress ) {
++ return m_plugAddress->serialize( se );
++ } else {
++ return false;
++ }
++}
++
++bool
++ExtendedPlugInfoPlugInputSpecificData::deserialize( IISDeserialize& de )
++{
++ return m_plugAddress->deserialize( de );
++}
++
++ExtendedPlugInfoPlugInputSpecificData::ExtendedPlugInfoPlugInputSpecificData*
++ExtendedPlugInfoPlugInputSpecificData::clone() const
++{
++ return new ExtendedPlugInfoPlugInputSpecificData( *this );
++}
++
++/////////////////////////////////////////
++/////////////////////////////////////////
++
++ExtendedPlugInfoPlugOutputSpecificData::ExtendedPlugInfoPlugOutputSpecificData()
++ : IBusData()
++ , m_nrOfOutputPlugs( 0 )
++{
++}
++
++ExtendedPlugInfoPlugOutputSpecificData::ExtendedPlugInfoPlugOutputSpecificData( const ExtendedPlugInfoPlugOutputSpecificData& rhs)
++ : IBusData()
++ , m_nrOfOutputPlugs( rhs.m_nrOfOutputPlugs )
++{
++ for ( PlugAddressVector::const_iterator it = rhs.m_outputPlugAddresses.begin();
++ it != rhs.m_outputPlugAddresses.end();
++ ++it )
++ {
++ m_outputPlugAddresses.push_back( ( *it )->clone() );
++ }
++
++}
++
++
++ExtendedPlugInfoPlugOutputSpecificData::~ExtendedPlugInfoPlugOutputSpecificData()
++{
++ for ( PlugAddressVector::iterator it = m_outputPlugAddresses.begin();
++ it != m_outputPlugAddresses.end();
++ ++it )
++ {
++ delete *it;
++ }
++}
++
++bool
++ExtendedPlugInfoPlugOutputSpecificData::serialize( IOSSerialize& se )
++{
++ se.write( m_nrOfOutputPlugs, "ExtendedPlugInfoPlugOutputSpecificData: number of output plugs" );
++ for ( PlugAddressVector::const_iterator it = m_outputPlugAddresses.begin();
++ it != m_outputPlugAddresses.end();
++ ++it )
++ {
++ ( *it )->serialize( se );
++ }
++
++ return true;
++}
++
++bool
++ExtendedPlugInfoPlugOutputSpecificData::deserialize( IISDeserialize& de )
++{
++ de.read( &m_nrOfOutputPlugs );
++
++ for ( int i = 0; i < m_nrOfOutputPlugs; ++i )
++ {
++ UnitPlugSpecificDataPlugAddress
++ unitPlug( UnitPlugSpecificDataPlugAddress::ePT_PCR, 0x00 );
++ PlugAddressSpecificData* plugAddress
++ = new PlugAddressSpecificData( PlugAddressSpecificData::ePD_Output,
++ PlugAddressSpecificData::ePAM_Unit,
++ unitPlug );
++ if ( !plugAddress->deserialize( de ) ) {
++ return false;
++ }
++
++ m_outputPlugAddresses.push_back( plugAddress );
++ }
++
++ return true;
++}
++
++ExtendedPlugInfoPlugOutputSpecificData::ExtendedPlugInfoPlugOutputSpecificData*
++ExtendedPlugInfoPlugOutputSpecificData::clone() const
++{
++ return new ExtendedPlugInfoPlugOutputSpecificData( *this );
++}
++
++/////////////////////////////////////////
++/////////////////////////////////////////
++ExtendedPlugInfoClusterInfoSpecificData::ExtendedPlugInfoClusterInfoSpecificData()
++ : IBusData()
++ , m_clusterIndex( 0 )
++ , m_portType( ePT_NoType )
++ , m_stringLength( 0xff )
++{
++}
++
++ExtendedPlugInfoClusterInfoSpecificData::~ExtendedPlugInfoClusterInfoSpecificData()
++{
++}
++
++bool
++ExtendedPlugInfoClusterInfoSpecificData::serialize( IOSSerialize& se )
++{
++ se.write( m_clusterIndex,
++ "ExtendedPlugInfoClusterInfoSpecificData: cluster index" );
++ se.write( m_portType,
++ "ExtendedPlugInfoClusterInfoSpecificData: port type" );
++ se.write( m_stringLength,
++ "ExtendedPlugInfoClusterInfoSpecificData: string length" );
++ for ( unsigned int i = 0; i < m_clusterName.length(); ++i ) {
++ se.write( static_cast<byte_t>( m_clusterName[i] ),
++ "ExtendedPlugInfoClusterInfoSpecificData: char" );
++ }
++
++ return true;
++}
++
++bool
++ExtendedPlugInfoClusterInfoSpecificData::deserialize( IISDeserialize& de )
++{
++
++ de.read( &m_clusterIndex );
++ de.read( &m_portType );
++ de.read( &m_stringLength );
++
++ char* name = new char[m_stringLength+1];
++ for ( int i = 0; i < m_stringLength; ++i ) {
++ byte_t c;
++ de.read( &c );
++ // \todo do correct encoding
++ if ( c == '&' ) {
++ c = '+';
++ }
++ name[i] = c;
++ }
++ name[m_stringLength] = '\0';
++ m_clusterName = name;
++ delete[] name;
++
++ return true;
++}
++
++ExtendedPlugInfoClusterInfoSpecificData::ExtendedPlugInfoClusterInfoSpecificData*
++ExtendedPlugInfoClusterInfoSpecificData::clone() const
++{
++ return new ExtendedPlugInfoClusterInfoSpecificData( *this );
++}
++
++const char* extendedPlugInfoPortTypeStrings[] =
++{
++ "Speaker",
++ "Headphone",
++ "Microphone",
++ "Line",
++ "SPDIF",
++ "ADAT",
++ "TDIF",
++ "MADI",
++ "Analog",
++ "Digital",
++ "MIDI",
++};
++
++const char* extendedPlugInfoClusterInfoPortTypeToString( port_type_t portType )
++{
++ if ( portType > ( ( sizeof( extendedPlugInfoPortTypeStrings ) )
++ / ( sizeof( extendedPlugInfoPortTypeStrings[0] ) ) ) ) {
++ return "Unknown";
++ } else {
++ return extendedPlugInfoPortTypeStrings[portType];
++ }
++}
++
++/////////////////////////////////////////
++/////////////////////////////////////////
++/////////////////////////////////////////
++/////////////////////////////////////////
++
++ExtendedPlugInfoInfoType::ExtendedPlugInfoInfoType(EInfoType eInfoType)
++ : IBusData()
++ , m_infoType( eInfoType )
++ , m_plugType( 0 )
++ , m_plugName( 0 )
++ , m_plugNrOfChns( 0 )
++ , m_plugChannelPosition( 0 )
++ , m_plugChannelName( 0 )
++ , m_plugInput( 0 )
++ , m_plugOutput( 0 )
++ , m_plugClusterInfo( 0 )
++{
++}
++
++ExtendedPlugInfoInfoType::ExtendedPlugInfoInfoType( const ExtendedPlugInfoInfoType& rhs )
++ : IBusData()
++ , m_infoType( rhs.m_infoType )
++ , m_plugType( 0 )
++ , m_plugName( 0 )
++ , m_plugNrOfChns( 0 )
++ , m_plugChannelPosition( 0 )
++ , m_plugChannelName( 0 )
++ , m_plugInput( 0 )
++ , m_plugOutput( 0 )
++ , m_plugClusterInfo( 0 )
++{
++ switch( m_infoType ) {
++ case eIT_PlugType:
++ m_plugType =
++ new ExtendedPlugInfoPlugTypeSpecificData( *rhs.m_plugType );
++ break;
++ case eIT_PlugName:
++ m_plugName =
++ new ExtendedPlugInfoPlugNameSpecificData( *rhs.m_plugName );
++ break;
++ case eIT_NoOfChannels:
++ m_plugNrOfChns =
++ new ExtendedPlugInfoPlugNumberOfChannelsSpecificData( *rhs.m_plugNrOfChns );
++ break;
++ case eIT_ChannelPosition:
++ m_plugChannelPosition =
++ new ExtendedPlugInfoPlugChannelPositionSpecificData( *rhs.m_plugChannelPosition );
++ break;
++ case eIT_ChannelName:
++ m_plugChannelName =
++ new ExtendedPlugInfoPlugChannelNameSpecificData( *rhs.m_plugChannelName );
++ break;
++ case eIT_PlugInput:
++ m_plugInput =
++ new ExtendedPlugInfoPlugInputSpecificData( *rhs.m_plugInput );
++ break;
++ case eIT_PlugOutput:
++ m_plugOutput =
++ new ExtendedPlugInfoPlugOutputSpecificData( *rhs.m_plugOutput );
++ break;
++ case eIT_ClusterInfo:
++ m_plugClusterInfo =
++ new ExtendedPlugInfoClusterInfoSpecificData( *rhs.m_plugClusterInfo );
++ break;
++ }
++}
++
++ExtendedPlugInfoInfoType::~ExtendedPlugInfoInfoType()
++{
++ delete( m_plugType );
++ delete( m_plugName );
++ delete( m_plugNrOfChns );
++ delete( m_plugChannelPosition );
++ delete( m_plugChannelName );
++ delete( m_plugInput );
++ delete( m_plugOutput );
++ delete( m_plugClusterInfo );
++ }
++
++bool
++ExtendedPlugInfoInfoType::initialize()
++{
++ switch ( m_infoType ) {
++ case eIT_PlugType:
++ m_plugType = new ExtendedPlugInfoPlugTypeSpecificData;
++ break;
++ case eIT_PlugName:
++ m_plugName = new ExtendedPlugInfoPlugNameSpecificData;
++ break;
++ case eIT_NoOfChannels:
++ m_plugNrOfChns = new ExtendedPlugInfoPlugNumberOfChannelsSpecificData;
++ break;
++ case eIT_ChannelPosition:
++ m_plugChannelPosition = new ExtendedPlugInfoPlugChannelPositionSpecificData;
++ break;
++ case eIT_ChannelName:
++ m_plugChannelName = new ExtendedPlugInfoPlugChannelNameSpecificData;
++ break;
++ case eIT_PlugInput:
++ m_plugInput = new ExtendedPlugInfoPlugInputSpecificData;
++ break;
++ case eIT_PlugOutput:
++ m_plugOutput = new ExtendedPlugInfoPlugOutputSpecificData;
++ break;
++ case eIT_ClusterInfo:
++ m_plugClusterInfo = new ExtendedPlugInfoClusterInfoSpecificData;
++ break;
++ default:
++ return false;
++ }
++
++ return true;
++}
++
++bool
++ExtendedPlugInfoInfoType::serialize( IOSSerialize& se )
++{
++ // XXX \todo improve IOSSerialize::write interface
++ char* buf;
++ asprintf( &buf, "ExtendedPlugInfoInfoType infoType (%s)",
++ extendedPlugInfoInfoTypeToString( m_infoType ) );
++ se.write( m_infoType, buf );
++
++ free(buf);
++
++ switch ( m_infoType ) {
++ case eIT_PlugType:
++ if ( m_plugType ) {
++ m_plugType->serialize( se );
++ }
++ break;
++ case eIT_PlugName:
++ if ( m_plugName ) {
++ m_plugName->serialize( se );
++ }
++ break;
++ case eIT_NoOfChannels:
++ if ( m_plugNrOfChns ) {
++ m_plugNrOfChns->serialize( se );
++ }
++ break;
++ case eIT_ChannelPosition:
++ if ( m_plugChannelPosition ) {
++ m_plugChannelPosition->serialize( se );
++ }
++ break;
++ case eIT_ChannelName:
++ if ( m_plugChannelName ) {
++ m_plugChannelName->serialize( se );
++ }
++ break;
++ case eIT_PlugInput:
++ if ( m_plugInput ) {
++ m_plugInput->serialize( se );
++ }
++ break;
++ case eIT_PlugOutput:
++ if ( m_plugOutput ) {
++ m_plugOutput->serialize( se );
++ }
++ break;
++ case eIT_ClusterInfo:
++ if ( m_plugClusterInfo ) {
++ m_plugClusterInfo->serialize( se );
++ }
++ break;
++ default:
++ return false;
++ }
++
++ return true;
++}
++
++bool
++ExtendedPlugInfoInfoType::deserialize( IISDeserialize& de )
++{
++ bool status = false;
++
++ de.read( &m_infoType );
++
++ switch ( m_infoType ) {
++ case eIT_PlugType:
++ if ( !m_plugType ) {
++ m_plugType = new ExtendedPlugInfoPlugTypeSpecificData;
++ }
++ status = m_plugType->deserialize( de );
++ break;
++ case eIT_PlugName:
++ if ( !m_plugName ) {
++ m_plugName = new ExtendedPlugInfoPlugNameSpecificData;
++ }
++ status = m_plugName->deserialize( de );
++ break;
++ case eIT_NoOfChannels:
++ if ( !m_plugNrOfChns ) {
++ m_plugNrOfChns =
++ new ExtendedPlugInfoPlugNumberOfChannelsSpecificData;
++ }
++ status = m_plugNrOfChns->deserialize( de );
++ break;
++ case eIT_ChannelPosition:
++ if ( !m_plugChannelPosition ) {
++ m_plugChannelPosition =
++ new ExtendedPlugInfoPlugChannelPositionSpecificData;
++ }
++ status = m_plugChannelPosition->deserialize( de );
++ break;
++ case eIT_ChannelName:
++ if ( !m_plugChannelName ) {
++ m_plugChannelName =
++ new ExtendedPlugInfoPlugChannelNameSpecificData;
++ }
++ status = m_plugChannelName->deserialize( de );
++ break;
++ case eIT_PlugInput:
++ if ( !m_plugInput ) {
++ m_plugInput = new ExtendedPlugInfoPlugInputSpecificData;
++ }
++ status = m_plugInput->deserialize( de );
++ break;
++ case eIT_PlugOutput:
++ if ( !m_plugOutput ) {
++ m_plugOutput = new ExtendedPlugInfoPlugOutputSpecificData;
++ }
++ status = m_plugOutput->deserialize( de );
++ break;
++ case eIT_ClusterInfo:
++ if ( !m_plugClusterInfo ) {
++ m_plugClusterInfo = new ExtendedPlugInfoClusterInfoSpecificData;
++ }
++ status =m_plugClusterInfo->deserialize( de );
++ break;
++ default:
++ return false;
++ }
++
++ return status;
++}
++
++ExtendedPlugInfoInfoType*
++ExtendedPlugInfoInfoType::clone() const
++{
++ ExtendedPlugInfoInfoType* extPlugInfoInfoType
++ = new ExtendedPlugInfoInfoType( *this );
++ extPlugInfoInfoType->initialize();
++ return extPlugInfoInfoType;
++}
++
++const char* extendedPlugInfoInfoTypeStrings[] =
++{
++ "PlugType",
++ "PlugName",
++ "NoOfChannels",
++ "ChannelPosition",
++ "ChannelName",
++ "PlugInput",
++ "PlugOutput",
++ "ClusterInfo",
++};
++
++const char* extendedPlugInfoInfoTypeToString( info_type_t infoType )
++{
++ if ( infoType > ( ( sizeof( extendedPlugInfoInfoTypeStrings ) )
++ / ( sizeof( extendedPlugInfoInfoTypeStrings[0] ) ) ) ) {
++ return "Unknown";
++ } else {
++ return extendedPlugInfoInfoTypeStrings[infoType];
++ }
++}
++
++
++//////////////////////////////////////////////
++
++ExtendedPlugInfoCmd::ExtendedPlugInfoCmd( Ieee1394Service* ieee1394service,
++ ESubFunction eSubFunction )
++ : AVCCommand( ieee1394service, AVC1394_CMD_PLUG_INFO )
++{
++ setSubFunction( eSubFunction );
++ UnitPlugAddress unitPlugAddress( UnitPlugAddress::ePT_PCR, 0x00 );
++ m_plugAddress = new PlugAddress( PlugAddress::ePD_Output,
++ PlugAddress::ePAM_Unit,
++ unitPlugAddress );
++ m_infoType =
++ new ExtendedPlugInfoInfoType( ExtendedPlugInfoInfoType::eIT_PlugType );
++ m_infoType->initialize();
++}
++
++ExtendedPlugInfoCmd::ExtendedPlugInfoCmd( const ExtendedPlugInfoCmd& rhs )
++ : AVCCommand( rhs )
++{
++ m_subFunction = rhs.m_subFunction;
++ m_plugAddress = new PlugAddress( *rhs.m_plugAddress );
++ m_infoType = new ExtendedPlugInfoInfoType( *rhs.m_infoType );
++}
++
++ExtendedPlugInfoCmd::~ExtendedPlugInfoCmd()
++{
++ delete m_plugAddress;
++ m_plugAddress = 0;
++ delete m_infoType;
++ m_infoType = 0;
++}
++
++bool
++ExtendedPlugInfoCmd::serialize( IOSSerialize& se )
++{
++ bool status = false;
++ AVCCommand::serialize( se );
++ se.write( m_subFunction, "ExtendedPlugInfoCmd subFunction" );
++ status = m_plugAddress->serialize( se );
++ status &= m_infoType->serialize( se );
++
++ return status;
++}
++
++bool
++ExtendedPlugInfoCmd::deserialize( IISDeserialize& de )
++{
++ bool status = false;
++ AVCCommand::deserialize( de );
++ de.read( &m_subFunction );
++ status = m_plugAddress->deserialize( de );
++ status &= m_infoType->deserialize( de );
++
++ return status;
++}
++
++bool
++ExtendedPlugInfoCmd::setPlugAddress( const PlugAddress& plugAddress )
++{
++ delete m_plugAddress;
++ m_plugAddress = plugAddress.clone();
++ return true;
++}
++
++bool
++ExtendedPlugInfoCmd::setSubFunction( ESubFunction subFunction )
++{
++ m_subFunction = subFunction;
++ return true;
++}
++
++bool
++ExtendedPlugInfoCmd::setInfoType( const ExtendedPlugInfoInfoType& infoType )
++{
++ delete m_infoType;
++ m_infoType = infoType.clone();
++ return true;
++}
+diff -rupN libfreebob-1.0.11.old/src/libfreebobavc/avc_extended_stream_format.cpp libfreebob-1.0.11/src/libfreebobavc/avc_extended_stream_format.cpp
+--- libfreebob-1.0.11.old/src/libfreebobavc/avc_extended_stream_format.cpp 2007-10-15 14:15:08.000000000 -0400
++++ libfreebob-1.0.11/src/libfreebobavc/avc_extended_stream_format.cpp 2012-01-11 20:27:22.622943305 -0500
+@@ -23,6 +23,7 @@
+ #include "ieee1394service.h"
+
+ #include <netinet/in.h>
++#include <cstdio>
+
+ ///////////////////////////////////////////////////////////
+ std::ostream& operator<<( std::ostream& stream, StreamFormatInfo info )
+diff -rupN libfreebob-1.0.11.old/src/libfreebobavc/avc_generic.cpp libfreebob-1.0.11/src/libfreebobavc/avc_generic.cpp
+--- libfreebob-1.0.11.old/src/libfreebobavc/avc_generic.cpp 2007-10-15 14:15:08.000000000 -0400
++++ libfreebob-1.0.11/src/libfreebobavc/avc_generic.cpp 2012-01-11 20:30:36.719793489 -0500
+@@ -24,6 +24,9 @@
+
+ #include <cstdlib>
+ #include <netinet/in.h>
++#include <cstring>
++#include <cstdio>
++#include <unistd.h>
+
+ #define DEBUG_EXTRA_VERBOSE 2
+
+diff -rupN libfreebob-1.0.11.old/src/libfreebobavc/ieee1394service.cpp libfreebob-1.0.11/src/libfreebobavc/ieee1394service.cpp
+--- libfreebob-1.0.11.old/src/libfreebobavc/ieee1394service.cpp 2007-10-15 14:15:08.000000000 -0400
++++ libfreebob-1.0.11/src/libfreebobavc/ieee1394service.cpp 2012-01-11 20:27:22.623943299 -0500
+@@ -25,6 +25,7 @@
+ #include <netinet/in.h>
+
+ #include <iostream>
++#include <cstdio>
+
+ using namespace std;
+
+diff -rupN libfreebob-1.0.11.old/src/libfreebobavc/serialize.cpp libfreebob-1.0.11/src/libfreebobavc/serialize.cpp
+--- libfreebob-1.0.11.old/src/libfreebobavc/serialize.cpp 2007-10-15 14:15:08.000000000 -0400
++++ libfreebob-1.0.11/src/libfreebobavc/serialize.cpp 2012-01-11 20:27:22.623943299 -0500
+@@ -22,6 +22,7 @@
+
+ #include <iostream>
+ #include <iomanip>
++#include <cstdio>
+
+ #include <netinet/in.h>
+
+diff -rupN libfreebob-1.0.11.old/tests/test-extplugcmd.cpp libfreebob-1.0.11/tests/test-extplugcmd.cpp
+--- libfreebob-1.0.11.old/tests/test-extplugcmd.cpp 2007-10-15 14:15:07.000000000 -0400
++++ libfreebob-1.0.11/tests/test-extplugcmd.cpp 2012-01-11 20:27:22.624943293 -0500
+@@ -24,6 +24,7 @@
+ #include "libfreebobavc/ieee1394service.h"
+
+ #include <argp.h>
++#include <cstdlib>
+
+ using namespace std;
+
+diff -rupN libfreebob-1.0.11.old/tests/test-volume.cpp libfreebob-1.0.11/tests/test-volume.cpp
+--- libfreebob-1.0.11.old/tests/test-volume.cpp 2007-10-15 14:15:07.000000000 -0400
++++ libfreebob-1.0.11/tests/test-volume.cpp 2012-01-11 20:27:22.624943293 -0500
+@@ -22,6 +22,9 @@
+ #include "libfreebobavc/serialize.h"
+ #include "libfreebobavc/ieee1394service.h"
+
++#include <cstdlib>
++#include <cstdio>
++
+ const bool bVerbose = false;
+
+ short int
diff --git a/libfreebob.spec b/libfreebob.spec
index 594be92..8548d41 100644
--- a/libfreebob.spec
+++ b/libfreebob.spec
@@ -1,67 +1,61 @@
Summary: FreeBoB firewire audio driver library
Name: libfreebob
Version: 1.0.11
-Release: 8%{?dist}
+Release: 10%{?dist}
License: GPLv2+
-Group: System Environment/Libraries
-Source0: http://surfnet.dl.sourceforge.net/sourceforge/freebob/libfreebob-%{version}.tar.gz
-Patch1: libfreebob-1.0.11-includes.patch
-Patch2: libfreebob-gcc46.patch
-URL: http://freebob.sourceforge.net
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-BuildRequires: libavc1394-devel >= 0.5.3, libiec61883-devel, libraw1394-devel
-BuildRequires: alsa-lib-devel libxml2-devel autoconf
-ExcludeArch: s390 s390x
+Source0: http://download.sourceforge.net/freebob/libfreebob-%{version}.tar.gz
+Patch0: libfreebob-gcc47.patch
+URL: http://sourceforge.net/projects/freebob/
+BuildRequires: alsa-lib-devel
+BuildRequires: libavc1394-devel
+BuildRequires: libiec61883-devel
+BuildRequires: libraw1394-devel
+BuildRequires: libxml2-devel
%description
libfreebob implements a userland driver for BeBoB-based fireware audio
devices.
%package devel
-Summary: Libraries, includes etc to develop with libfreebob
-Group: Development/Libraries
-Requires: %{name} = %{version}-%{release}
-Requires: pkgconfig
+Summary: Libraries, includes etc to develop with libfreebob
+Requires: %{name} = %{version}-%{release}
%description devel
Libraries, includes etc to develop with libfreebob.
%prep
%setup -q
-%patch1 -p1
-%patch2 -p1
+%patch0 -p1
-# Tweak libiec61883 build requirements.
-perl -pi -e 's/1.1.0/1.0.0/' configure
%build
%configure --disable-static
make %{?_smp_mflags}
%install
-rm -rf $RPM_BUILD_ROOT
make DESTDIR=$RPM_BUILD_ROOT install
rm -f ${RPM_BUILD_ROOT}%{_libdir}/*.la
-%clean
-rm -rf $RPM_BUILD_ROOT
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%files
-%defattr(-,root,root,-)
-%doc AUTHORS COPYING ChangeLog NEWS README
+%doc AUTHORS COPYING NEWS README
%{_libdir}/lib*.so.*
%files devel
-%defattr(-,root,root,-)
+%doc ChangeLog TODO
%{_libdir}/lib*.so
%{_libdir}/pkgconfig/libfreebob.pc
%{_includedir}/*
%changelog
+* Wed Jan 11 2012 Orcan Ogettbil <oget[DOT]fedora[AT]gmail[DOT]com> - 1.0.11-10
+- Fix build against gcc-4.7
+- Minor changes to comply with recent guidelines and cosmetics
+
* Wed Feb 09 2011 Orcan Ogettbil <oget[DOT]fedora[AT]gmail[DOT]com> - 1.0.11-9
- Fix build against gcc-4.6
More information about the scm-commits
mailing list