mirror of https://github.com/cutefishos/calamares
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.6 KiB
C++
43 lines
1.6 KiB
C++
/*
|
|
* SPDX-FileCopyrightText: 2001-2010 Klaralvdalens Datakonsult AB.
|
|
* SPDX-License-Identifier: LGPL-2.0-only
|
|
*
|
|
* The KD Tools Library is Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB.
|
|
*/
|
|
#include "kdtoolsglobal.h"
|
|
|
|
#include <QByteArray>
|
|
|
|
#include <algorithm>
|
|
|
|
namespace {
|
|
struct Version {
|
|
unsigned char v[3];
|
|
};
|
|
|
|
static inline bool operator<( const Version & lhs, const Version & rhs ) {
|
|
return std::lexicographical_compare( lhs.v, lhs.v + 3, rhs.v, rhs.v + 3 );
|
|
}
|
|
static inline bool operator==( const Version & lhs, const Version & rhs ) {
|
|
return std::equal( lhs.v, lhs.v + 3, rhs.v );
|
|
}
|
|
KDTOOLS_MAKE_RELATION_OPERATORS( Version, static inline )
|
|
}
|
|
|
|
static Version kdParseQtVersion( const char * const version ) {
|
|
if ( !version || qstrlen( version ) < 5 || version[1] != '.' || version[3] != '.' || ( version[5] != 0 && version[5] != '.' && version[5] != '-' ) )
|
|
return Version(); // parse error
|
|
const Version result = { { static_cast< unsigned char >( version[0] - '0' ),
|
|
static_cast< unsigned char >( version[2] - '0' ),
|
|
static_cast< unsigned char >( version[4] - '0' ) } };
|
|
return result;
|
|
}
|
|
|
|
bool _kdCheckQtVersion_impl( unsigned int major, unsigned int minor, unsigned int patchlevel ) {
|
|
static const Version actual = kdParseQtVersion( qVersion() ); // do this only once each run...
|
|
const Version requested = { { static_cast< unsigned char >( major ),
|
|
static_cast< unsigned char >( minor ),
|
|
static_cast< unsigned char >( patchlevel ) } };
|
|
return actual >= requested;
|
|
}
|