Changeset 925 for lliurex-apt


Ignore:
Timestamp:
Mar 22, 2016, 11:29:08 AM (4 years ago)
Author:
mabarracus
Message:

Changed regex detection mode that fails into xenial, now using boost library, Glib crashes!

Location:
lliurex-apt/trunk/fuentes
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • lliurex-apt/trunk/fuentes/debian/control

    r923 r925  
    33Priority: extra
    44Maintainer: LliureX Team <lliurex@gva.es>
    5 Build-Depends: debhelper (>= 7),llxcfg-dev,zero-dev,cmake,libgtkmm-3.0-dev,libglibmm-2.4-dev,llxsrchelper
     5Build-Depends: debhelper (>= 7),llxcfg-dev,zero-dev,cmake,libgtkmm-3.0-dev,libglibmm-2.4-dev,llxsrchelper,libboost-regex-dev
    66Standards-Version: 3.9.3
    77
    88Package: lliurex-apt
    99Architecture: any
    10 Depends: ${misc:Depends}, ${shlibs:Depends} , aptdaemon, libgtkmm-3.0-1,libglibmm-2.4-1c2a
     10Depends: ${misc:Depends}, ${shlibs:Depends} , aptdaemon, libgtkmm-3.0-1v5,libglibmm-2.4-1v5,libboost-regex1.58.0
    1111Description: Lliurex apt source wizard
    1212 Lliurex apt is an apt-source wizard which is able
  • lliurex-apt/trunk/fuentes/src/CMakeLists.txt

    r923 r925  
    1212pkg_check_modules(GIOMM REQUIRED giomm-2.4)
    1313pkg_check_modules(GTKMM REQUIRED gtkmm-3.0)
     14set(Boost_USE_STATIC_LIBS OFF)
     15set(Boost_USE_MULTITHREADED ON)
     16set(Boost_USE_STATIC_RUNTIME OFF)
     17find_package(Boost REQUIRED COMPONENTS regex)
     18include_directories(${Boost_INCLUDE_DIRS})
    1419
    15 target_link_libraries(llx-apt-cmd ${GLIBMM_LIBRARIES} ${GIOMM_LIBRARIES})
    16 target_link_libraries(lliurex-apt ${GLIBMM_LIBRARIES} ${GIOMM_LIBRARIES} ${GTKMM_LIBRARIES})
    17 target_link_libraries(llx-apt-backend ${GLIBMM_LIBRARIES} ${GIOMM_LIBRARIES} )
     20target_link_libraries(llx-apt-cmd ${GLIBMM_LIBRARIES} ${GIOMM_LIBRARIES} ${Boost_LIBRARIES})
     21target_link_libraries(lliurex-apt ${GLIBMM_LIBRARIES} ${GIOMM_LIBRARIES} ${GTKMM_LIBRARIES} ${Boost_LIBRARIES})
     22target_link_libraries(llx-apt-backend ${GLIBMM_LIBRARIES} ${GIOMM_LIBRARIES} ${Boost_LIBRARIES} )
    1823
    1924include_directories(${GLIBMM_INCLUDE_DIRS} ${GIOMM_INCLUDE_DIRS} ${GTKMM_INCLUDE_DIRS})
    2025
    21 add_definitions(-std=c++11 -g -O2)
     26add_definitions(-std=c++14 -g )
    2227
    2328#add_custom_command(TARGET lliurex-apt POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/rsrc/interface.glade $<TARGET_FILE_DIR:lliurex-apt>)
  • lliurex-apt/trunk/fuentes/src/Sources.cpp

    r923 r925  
    1313#include <glibmm.h>
    1414
     15#include <boost/regex.hpp>
     16
    1517using namespace std;
    1618using namespace net::lliurex::apt;
    17 
     19using namespace boost;
    1820
    1921
     
    8486}
    8587
    86 
    87 string Sources::str_line="^(?<deb_type>deb|deb\\-src)\\s+(?<uri_type>http://|https://|file://|ftp://|cdrom:)(?<uri>\\[.+\\]/|\\S+)\\s+(?<dist>\\S+)(?<components>(\\s+\\S+)+)";
    88        
    89 string Sources::str_option="^#(?<key>\\w+)(\\[(?<locale>\\S+)\\])?\\s*=\\s*(?<value>.*)";
     88regex Sources::str_line("^(?<deb_type>deb|deb\\-src)\\s+(?<uri_type>http://|https://|file://|ftp://|cdrom:)(?<uri>\\[.+\\]/|\\S+)\\s+(?<dist>\\S+)(?<components>(\\s+\\S+)+)");
     89regex Sources::str_option("^#(?<key>\\w+)(\\[(?<locale>\\S+)\\])?\\s*=\\s*(?<value>.*)");
    9090
    9191const string Sources::SourcesList = "/etc/apt/sources.list";
     
    100100Sources::Sources(string filename)
    101101{
    102        
    103                
    104         Glib::RefPtr<Glib::Regex> regex_line = Glib::Regex::create(Sources::str_line);
    105         Glib::RefPtr<Glib::Regex> regex_option = Glib::Regex::create(Sources::str_option);
    106102       
    107103        ifstream file(filename);
     
    110106        optional=false;
    111107        name["C"]="noname";
    112                
     108
    113109        while(!file.eof())
    114110        {
    115111                string line;
    116112                getline(file,line);//read a single line from the file
    117                
    118                 Glib::MatchInfo info;
     113                match_results<std::string::const_iterator> what;
     114
    119115               
    120116                //have we got a match?
    121                 if(regex_line->match(line,info))
     117                if (regex_search(line,what,Sources::str_line))
    122118                {
    123119                       
     
    129125                        vector<string> vcmp;
    130126                       
    131                         //fetch matching groups
    132                         type = info.fetch_named("deb_type");
    133                         uri_type=info.fetch_named("uri_type");
    134                         uri=info.fetch_named("uri");
    135                         dist = info.fetch_named("dist");
    136                                                
    137                        
    138                         components=info.fetch_named("components");
    139                        
     127                        type=what["deb_type"];
     128                        uri_type=what["uri_type"];
     129                        uri=what["uri"];
     130                        dist = what["dist"];
     131                        components=what["components"];
     132
    140133                        //split components
    141134                        string buf;
     
    176169                else
    177170                {
    178                         if(regex_option->match(line,info))
    179                         {
    180                                
    181                                 string key=info.fetch_named("key");
    182                                 string value=info.fetch_named("value");
    183                                 string locale=info.fetch_named("locale");
    184                                
     171                        if (regex_search(line,what,Sources::str_option))
     172                        {
     173                                string key=what["key"];
     174                                string value=what["value"];
     175                                string locale=what["locale"];
     176
    185177                                if(key=="optional")
    186178                                {
     
    193185                                        name[locale]=value;
    194186                                }
     187
    195188                               
    196                                
    197189                        }
    198190                }
     
    205197void Sources::Add(string line)
    206198{
    207         Glib::RefPtr<Glib::Regex> regex_line = Glib::Regex::create(Sources::str_line);
    208        
    209         Glib::MatchInfo info;
    210                
    211 
    212         if(regex_line->match(line,info))
     199        match_results<std::string::const_iterator> what;
     200
     201        if (regex_search(line,what,Sources::str_line))
    213202        {
    214203                string type;
     
    219208                vector<string> vcmp;
    220209               
    221                 //fetch matching groups
    222                 type = info.fetch_named("deb_type");
    223                 uri_type=info.fetch_named("uri_type");
    224                 uri=info.fetch_named("uri");
    225                 dist = info.fetch_named("dist");
    226                
    227                 components=info.fetch_named("components");
    228                
     210                type=what["deb_type"];
     211                uri_type=what["uri_type"];
     212                uri=what["uri"];
     213                dist = what["dist"];
     214                components=what["components"];
     215                       
    229216                //split components
    230217                string buf;
  • lliurex-apt/trunk/fuentes/src/Sources.hpp

    r923 r925  
    66#include <vector>
    77#include <map>
     8#include <boost/regex.hpp>
    89
    910namespace net
     
    4142                                protected:
    4243                               
    43                                 static std::string str_line;
    44                                 static std::string str_option;
     44                                static boost::regex str_line;
     45                                static boost::regex str_option;
    4546                                                               
    4647                                public:
Note: See TracChangeset for help on using the changeset viewer.