mirror of
https://github.com/xiaoyifang/goldendict-ng.git
synced 2024-11-23 20:14:05 +00:00
FsEncoding has got a basename() function. The Lsa module now uses it instead
of the system/local one. The implementation of FsEncoding::dirname() was also changed to stop relying on the system version.
This commit is contained in:
parent
4c29464c09
commit
e9799ba248
|
@ -5,7 +5,6 @@
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <libgen.h>
|
|
||||||
|
|
||||||
namespace FsEncoding {
|
namespace FsEncoding {
|
||||||
|
|
||||||
|
@ -26,11 +25,22 @@ char separator()
|
||||||
|
|
||||||
string dirname( string const & str )
|
string dirname( string const & str )
|
||||||
{
|
{
|
||||||
std::vector< char > tmp( str.size() + 1 );
|
size_t x = str.rfind( separator() );
|
||||||
|
|
||||||
memcpy( &tmp.front(), str.c_str(), tmp.size() );
|
if ( x == string::npos )
|
||||||
|
return string( "." );
|
||||||
|
|
||||||
return ::dirname( &tmp.front() );
|
return string( str, 0, x );
|
||||||
|
}
|
||||||
|
|
||||||
|
string basename( string const & str )
|
||||||
|
{
|
||||||
|
size_t x = str.rfind( separator() );
|
||||||
|
|
||||||
|
if ( x == string::npos )
|
||||||
|
return str;
|
||||||
|
|
||||||
|
return string( str, x + 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,9 @@ char separator();
|
||||||
/// Returns the directory part of the given filename.
|
/// Returns the directory part of the given filename.
|
||||||
string dirname( string const & );
|
string dirname( string const & );
|
||||||
|
|
||||||
|
/// Returns the name part of the given filename.
|
||||||
|
string basename( string const & );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
22
src/lsa.cc
22
src/lsa.cc
|
@ -7,6 +7,7 @@
|
||||||
#include "folding.hh"
|
#include "folding.hh"
|
||||||
#include "utf8.hh"
|
#include "utf8.hh"
|
||||||
#include "btreeidx.hh"
|
#include "btreeidx.hh"
|
||||||
|
#include "fsencoding.hh"
|
||||||
#include <set>
|
#include <set>
|
||||||
#include <vorbis/vorbisfile.h>
|
#include <vorbis/vorbisfile.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -131,23 +132,6 @@ Entry::Entry( File::Class & f )
|
||||||
read * sizeof( uint16_t ) );
|
read * sizeof( uint16_t ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __WIN32
|
|
||||||
|
|
||||||
// Win32 features the usual Posix basename() which may modify its input. We
|
|
||||||
// provide our local implementation here instead.
|
|
||||||
|
|
||||||
char const * basename( char const * n )
|
|
||||||
{
|
|
||||||
char const * lastSep = strrchr( n, '\\' );
|
|
||||||
|
|
||||||
if ( !lastSep )
|
|
||||||
return n;
|
|
||||||
|
|
||||||
return lastSep + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
class LsaDictionary: public BtreeIndexing::BtreeDictionary
|
class LsaDictionary: public BtreeIndexing::BtreeDictionary
|
||||||
{
|
{
|
||||||
File::Class idx;
|
File::Class idx;
|
||||||
|
@ -159,7 +143,7 @@ public:
|
||||||
vector< string > const & dictionaryFiles );
|
vector< string > const & dictionaryFiles );
|
||||||
|
|
||||||
virtual string getName() throw()
|
virtual string getName() throw()
|
||||||
{ return basename( string( getDictionaryFilenames()[ 0 ] ).c_str() ); }
|
{ return FsEncoding::basename( getDictionaryFilenames()[ 0 ] ); }
|
||||||
|
|
||||||
virtual map< Dictionary::Property, string > getProperties() throw()
|
virtual map< Dictionary::Property, string > getProperties() throw()
|
||||||
{ return map< Dictionary::Property, string >(); }
|
{ return map< Dictionary::Property, string >(); }
|
||||||
|
@ -479,7 +463,7 @@ vector< sptr< Dictionary::Class > > Format::makeDictionaries(
|
||||||
{
|
{
|
||||||
// Building the index
|
// Building the index
|
||||||
|
|
||||||
initializing.indexingDictionary( basename( i->c_str() ) );
|
initializing.indexingDictionary( FsEncoding::basename( *i ) );
|
||||||
|
|
||||||
File::Class idx( indexFile, "wb" );
|
File::Class idx( indexFile, "wb" );
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue