Changeset 620

Show
Ignore:
Timestamp:
09/06/07 13:09:35 (13 years ago)
Author:
wagi
Message:

- one tokenize function is enough. currently in serialize.h defined, this might change
- saveCache code workover. The cache is now created in ~/.ffado/cache. It is actived since it should break
things. Otherwise it needs fixing.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libffado/src/bebob/bebob_avdevice.cpp

    r618 r620  
    446446    Glib::ustring cachePath; 
    447447    char* pCachePath; 
    448     if ( asprintf( &pCachePath, "%s/cache/libffado/",  CACHEDIR ) < 0 ) { 
     448    if ( asprintf( &pCachePath, "%s/cache/",  CACHEDIR ) < 0 ) { 
    449449        debugError( "Could not create path string for cache pool (trying '/var/cache/libffado' instead)\n" ); 
    450450        cachePath == "/var/cache/libffado/"; 
     
    487487AvDevice::saveCache() 
    488488{ 
    489 //     // the path looks like this: 
    490 //     // PATH_TO_CACHE + GUID + CONFIGURATION_ID 
    491 // 
    492 //     Glib::ustring sDevicePath = getCachePath() + m_pConfigRom->getGuidString(); 
    493 //     struct stat buf; 
    494 //     if ( stat( sDevicePath.c_str(), &buf ) == 0 ) { 
    495 //         if ( !S_ISDIR( buf.st_mode ) ) { 
    496 //             debugError( "\"%s\" is not a directory\n",  sDevicePath.c_str() ); 
    497 //             return false; 
    498 //         } 
    499 //     } else { 
    500 //         if (  mkdir( sDevicePath.c_str(), S_IRWXU | S_IRWXG ) != 0 ) { 
    501 //             debugError( "Could not create \"%s\" directory\n", sDevicePath.c_str() ); 
    502 //             return false; 
    503 //         } 
    504 //     } 
    505 // 
    506 //     char* configId; 
    507 //     asprintf(&configId, "%08x", BeBoB::AvDevice::getConfigurationId() ); 
    508 //     if ( !configId ) { 
    509 //         debugError( "Could not create id string\n" ); 
    510 //         return false; 
    511 //     } 
    512 //     Glib::ustring sFileName = sDevicePath + "/" + configId + ".xml"; 
    513 //     free( configId ); 
    514 //     debugOutput( DEBUG_LEVEL_NORMAL, "filename %s\n", sFileName.c_str() ); 
    515 // 
    516 //     Util::XMLSerialize ser( sFileName ); 
    517 //     return serialize( "", ser ); 
    518     return false; 
     489    // the path looks like this: 
     490    // PATH_TO_CACHE + GUID + CONFIGURATION_ID 
     491    string tmp_path = getCachePath() + m_pConfigRom->getGuidString(); 
     492 
     493    // the following piece should do something like 'mkdir -p some/path/with/some/dirs/which/do/not/exist' 
     494    vector<string> tokens; 
     495    tokenize( tmp_path, tokens, "/" ); 
     496    string path; 
     497    for ( vector<string>::const_iterator it = tokens.begin(); 
     498          it != tokens.end(); 
     499          ++it ) 
     500    { 
     501        if ( path == "" ) { 
     502            if ( *it == "~" ) 
     503                path = getenv( "HOME" ); 
     504            else 
     505                path = *it; 
     506        } else { 
     507            path = path + "/" + *it; 
     508        } 
     509 
     510        struct stat buf; 
     511        if ( stat( path.c_str(), &buf ) == 0 ) { 
     512            if ( !S_ISDIR( buf.st_mode ) ) { 
     513                debugError( "\"%s\" is not a directory\n",  path.c_str() ); 
     514                return false; 
     515            } 
     516        } else { 
     517            if (  mkdir( path.c_str(), S_IRWXU | S_IRWXG ) != 0 ) { 
     518                debugError( "Could not create \"%s\" directory\n", path.c_str() ); 
     519                return false; 
     520            } 
     521        } 
     522    } 
     523 
     524    // come up with an unique file name for the current settings 
     525    char* configId; 
     526    asprintf(&configId, "%08x", BeBoB::AvDevice::getConfigurationId() ); 
     527    if ( !configId ) { 
     528        debugError( "Could not create id string\n" ); 
     529        return false; 
     530    } 
     531    string filename = path + "/" + configId + ".xml"; 
     532    free( configId ); 
     533    debugOutput( DEBUG_LEVEL_NORMAL, "filename %s\n", filename.c_str() ); 
     534 
     535    Util::XMLSerialize ser( filename ); 
     536    return serialize( "", ser ); 
    519537} 
    520538 
  • trunk/libffado/src/genericavc/avc_vendormodel.cpp

    r607 r620  
    2323 
    2424#include "genericavc/avc_vendormodel.h" 
     25#include "libutil/serialize.h" 
    2526 
    2627#include <fstream> 
     
    3435using namespace std; 
    3536 
    36 static void 
    37 tokenize(const string& str, 
    38          vector<string>& tokens, 
    39          const string& delimiters = " ") 
    40 { 
    41     // Skip delimiters at beginning. 
    42     string::size_type lastPos = str.find_first_not_of(delimiters, 0); 
    43     // Find first "non-delimiter". 
    44     string::size_type pos     = str.find_first_of(delimiters, lastPos); 
    45  
    46     while (string::npos != pos || string::npos != lastPos) 
    47     { 
    48         // Found a token, add it to the vector. 
    49         tokens.push_back(str.substr(lastPos, pos - lastPos)); 
    50         // Skip delimiters.  Note the "not_of" 
    51         lastPos = str.find_first_not_of(delimiters, pos); 
    52         // Find next "non-delimiter" 
    53         pos = str.find_first_of(delimiters, lastPos); 
    54     } 
    55 } 
    56  
    57 //------------------------------------------------- 
    58  
    5937GenericAVC::VendorModelEntry::VendorModelEntry() 
    6038    : vendor_id( 0 ) 
     
    8967{ 
    9068    bool equal=true; 
    91      
     69 
    9270    equal &= (vendor_id   == rhs.vendor_id); 
    9371    equal &= (model_id    == rhs.model_id); 
     
    216194    if ( it != m_vendorModelEntries.end() ) 
    217195        return *it; 
    218          
     196 
    219197    struct VendorModelEntry invalid; 
    220198    return invalid; 
  • trunk/libffado/src/libutil/serialize.cpp

    r516 r620  
    2626using namespace std; 
    2727 
    28 void tokenize(const string& str, 
    29               vector<string>& tokens, 
    30               const string& delimiters = " ") 
    31 { 
    32     // Skip delimiters at beginning. 
    33     string::size_type lastPos = str.find_first_not_of(delimiters, 0); 
    34     // Find first "non-delimiter". 
    35     string::size_type pos     = str.find_first_of(delimiters, lastPos); 
    36  
    37     while (string::npos != pos || string::npos != lastPos) { 
    38         // Found a token, add it to the vector. 
    39         tokens.push_back(str.substr(lastPos, pos - lastPos)); 
    40         // Skip delimiters.  Note the "not_of" 
    41         lastPos = str.find_first_not_of(delimiters, pos); 
    42         // Find next "non-delimiter" 
    43         pos = str.find_first_of(delimiters, lastPos); 
    44     } 
    45 } 
    46  
    47 ///////////////////////////////// 
    4828 
    4929IMPL_DEBUG_MODULE( Util::XMLSerialize,   XMLSerialize,   DEBUG_LEVEL_NORMAL ); 
     
    302282    return nodeSet.size() > 0; 
    303283} 
     284 
     285void 
     286tokenize(const string& str, 
     287         vector<string>& tokens, 
     288         const string& delimiters) 
     289{ 
     290    // Skip delimiters at beginning. 
     291    string::size_type lastPos = str.find_first_not_of(delimiters, 0); 
     292    // Find first "non-delimiter". 
     293    string::size_type pos     = str.find_first_of(delimiters, lastPos); 
     294 
     295    while (string::npos != pos || string::npos != lastPos) 
     296    { 
     297        // Found a token, add it to the vector. 
     298        tokens.push_back(str.substr(lastPos, pos - lastPos)); 
     299        // Skip delimiters.  Note the "not_of" 
     300        lastPos = str.find_first_not_of(delimiters, pos); 
     301        // Find next "non-delimiter" 
     302        pos = str.find_first_of(delimiters, lastPos); 
     303    } 
     304} 
  • trunk/libffado/src/libutil/serialize.h

    r516 r620  
    122122} 
    123123 
     124void tokenize(const std::string& str, std::vector<std::string>& tokens, const std::string& delimiters = " "); 
     125 
    124126#endif