[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