diff options
author | Slávek Banko <[email protected]> | 2013-05-09 09:50:34 -0500 |
---|---|---|
committer | Timothy Pearson <[email protected]> | 2013-05-09 09:50:34 -0500 |
commit | f08ddb4652c6658ce3ad294509e101da468c1af6 (patch) | |
tree | c268c5c1197ff8995f56b54f4985cc1845bc71b8 | |
parent | ecc6ff1e72c37905aaecbe7708df08dbd6a21f8f (diff) | |
download | tdebase-f08ddb4652c6658ce3ad294509e101da468c1af6.tar.gz tdebase-f08ddb4652c6658ce3ad294509e101da468c1af6.zip |
Add lz/lzma compression support to tdeio_man tdeioslave
This resolves Bug 1493
-rw-r--r-- | tdeioslave/filter/CMakeLists.txt | 2 | ||||
-rw-r--r-- | tdeioslave/filter/Makefile.am | 8 | ||||
-rw-r--r-- | tdeioslave/man/tdeio_man.cpp | 28 |
3 files changed, 30 insertions, 8 deletions
diff --git a/tdeioslave/filter/CMakeLists.txt b/tdeioslave/filter/CMakeLists.txt index 587a89fb6..fb9942eea 100644 --- a/tdeioslave/filter/CMakeLists.txt +++ b/tdeioslave/filter/CMakeLists.txt @@ -22,7 +22,7 @@ link_directories( ##### other data ################################ -install( FILES gzip.protocol bzip.protocol bzip2.protocol DESTINATION ${SERVICES_INSTALL_DIR} ) +install( FILES gzip.protocol bzip.protocol bzip2.protocol xz.protocol lzma.protocol DESTINATION ${SERVICES_INSTALL_DIR} ) ##### tdeio_filter (module) ####################### diff --git a/tdeioslave/filter/Makefile.am b/tdeioslave/filter/Makefile.am index d4e58d7f8..2a972960c 100644 --- a/tdeioslave/filter/Makefile.am +++ b/tdeioslave/filter/Makefile.am @@ -16,6 +16,12 @@ protocoldir = $(kde_servicesdir) if include_BZIP2 BZIP2FILES=bzip.protocol bzip2.protocol endif +if include_XZ +XZPROTOCOL=xz.protocol +endif +if include_LZMA +LZMAPROTOCOL=lzma.protocol +endif -protocol_DATA = gzip.protocol $(BZIP2FILES) +protocol_DATA = gzip.protocol $(BZIP2FILES) $(XZPROTOCOL) $(LZMAPROTOCOL) diff --git a/tdeioslave/man/tdeio_man.cpp b/tdeioslave/man/tdeio_man.cpp index 07636c0a3..d6574f064 100644 --- a/tdeioslave/man/tdeio_man.cpp +++ b/tdeioslave/man/tdeio_man.cpp @@ -70,6 +70,10 @@ void stripExtension( TQString *name ) pos -= 4; else if ( name->find(".bz", -3) != -1 ) pos -= 3; + else if ( name->find(".xz", -3) != -1 ) + pos -= 3; + else if ( name->find(".lzma", -5) != -1 ) + pos -= 5; if ( pos > 0 ) pos = name->findRev('.', pos-1); @@ -476,13 +480,19 @@ void MANProtocol::get(const KURL& url ) { pageFound=false; //check for the case that there is foo.1 and foo.1.gz found: - // ### TODO make it more generic (other extensions) - if ((foundPages.count()==2) && - (((foundPages[0]+".gz") == foundPages[1]) || - (foundPages[0] == (foundPages[1]+".gz")))) - pageFound=true; - else + if (foundPages.count()==2) { + TQString foundPage0 = foundPages[0]; + TQString foundPage1 = foundPages[1]; + + stripExtension(&foundPage0); + stripExtension(&foundPage1); + if(foundPage0 == foundPage1) { + pageFound=true; + } + } + if (!pageFound) { outputMatchingPages(foundPages); + } } //yes, we found exactly one man page @@ -1335,6 +1345,12 @@ void MANProtocol::showIndex(const TQString& section) end -= 2; else if ( len >= 4 && strcmp( end-3, ".bz2" ) == 0 ) end -= 4; + else if ( len >= 3 && strcmp( end-2, ".bz" ) == 0 ) + end -= 3; + else if ( len >= 3 && strcmp( end-2, ".xz" ) == 0 ) + end -= 3; + else if ( len >= 5 && strcmp( end-4, ".lzma" ) == 0 ) + end -= 5; while ( end >= begin && *end != '.' ) end--; |