本文整理汇总了C++中QByteArray::isEmpty方法的典型用法代码示例。如果您正苦于以下问题:C++ QByteArray::isEmpty方法的具体用法?C++ QByteArray::isEmpty怎么用?C++ QByteArray::isEmpty使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QByteArray
的用法示例。
在下文中一共展示了QByteArray::isEmpty方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: pluginLoader
PlatformPlugin *FactoryPrivate::platformPlugin()
{
if (m_platformPlugin) {
return m_platformPlugin;
}
if (m_noPlatformPlugin) {
return 0;
}
#ifndef QT_NO_DBUS
if (!QCoreApplication::instance() || QCoreApplication::applicationName().isEmpty()) {
pWarning() << "Phonon needs QCoreApplication::applicationName to be set to export audio output names through the DBUS interface";
}
#endif
Q_ASSERT(QCoreApplication::instance());
const QByteArray platform_plugin_env = qgetenv("PHONON_PLATFORMPLUGIN");
if (!platform_plugin_env.isEmpty()) {
QPluginLoader pluginLoader(QString::fromLocal8Bit(platform_plugin_env.constData()));
if (pluginLoader.load()) {
m_platformPlugin = qobject_cast<PlatformPlugin *>(pluginLoader.instance());
if (m_platformPlugin) {
return m_platformPlugin;
}
}
}
const QString suffix(QLatin1String("/phonon_platform/"));
ensureLibraryPathSet();
QDir dir;
dir.setNameFilters(
!qgetenv("KDE_FULL_SESSION").isEmpty() ? QStringList(QLatin1String("kde.*")) :
(!qgetenv("GNOME_DESKTOP_SESSION_ID").isEmpty() ? QStringList(QLatin1String("gnome.*")) :
QStringList())
);
dir.setFilter(QDir::Files);
const QStringList libPaths = QCoreApplication::libraryPaths();
forever {
for (int i = 0; i < libPaths.count(); ++i) {
const QString libPath = libPaths.at(i) + suffix;
dir.setPath(libPath);
if (!dir.exists()) {
continue;
}
const QStringList files = dir.entryList(QDir::Files);
for (int i = 0; i < files.count(); ++i) {
QPluginLoader pluginLoader(libPath + files.at(i));
if (!pluginLoader.load()) {
pDebug() << Q_FUNC_INFO << " platform plugin load failed:"
<< pluginLoader.errorString();
continue;
}
pDebug() << pluginLoader.instance();
QObject *qobj = pluginLoader.instance();
m_platformPlugin = qobject_cast<PlatformPlugin *>(qobj);
pDebug() << m_platformPlugin;
if (m_platformPlugin) {
connect(qobj, SIGNAL(objectDescriptionChanged(ObjectDescriptionType)),
SLOT(objectDescriptionChanged(ObjectDescriptionType)));
return m_platformPlugin;
} else {
delete qobj;
pDebug() << Q_FUNC_INFO << dir.absolutePath() << "exists but the platform plugin was not loadable:" << pluginLoader.errorString();
pluginLoader.unload();
}
}
}
if (dir.nameFilters().isEmpty()) {
break;
}
dir.setNameFilters(QStringList());
}
pDebug() << Q_FUNC_INFO << "platform plugin could not be loaded";
m_noPlatformPlugin = true;
return 0;
}
示例2: addTTFile
QStringList QBasicFontDatabase::addTTFile(const QByteArray &fontData, const QByteArray &file, QSupportedWritingSystems *supportedWritingSystems)
{
FT_Library library = qt_getFreetype();
int index = 0;
int numFaces = 0;
QStringList families;
do {
FT_Face face;
FT_Error error;
if (!fontData.isEmpty()) {
error = FT_New_Memory_Face(library, (const FT_Byte *)fontData.constData(), fontData.size(), index, &face);
} else {
error = FT_New_Face(library, file.constData(), index, &face);
}
if (error != FT_Err_Ok) {
qDebug() << "FT_New_Face failed with index" << index << ":" << hex << error;
break;
}
numFaces = face->num_faces;
QFont::Weight weight = QFont::Normal;
QFont::Style style = QFont::StyleNormal;
if (face->style_flags & FT_STYLE_FLAG_ITALIC)
style = QFont::StyleItalic;
if (face->style_flags & FT_STYLE_FLAG_BOLD)
weight = QFont::Bold;
bool fixedPitch = (face->face_flags & FT_FACE_FLAG_FIXED_WIDTH);
QSupportedWritingSystems writingSystems;
// detect symbol fonts
for (int i = 0; i < face->num_charmaps; ++i) {
FT_CharMap cm = face->charmaps[i];
if (cm->encoding == FT_ENCODING_ADOBE_CUSTOM
|| cm->encoding == FT_ENCODING_MS_SYMBOL) {
writingSystems.setSupported(QFontDatabase::Symbol);
if (supportedWritingSystems)
supportedWritingSystems->setSupported(QFontDatabase::Symbol);
break;
}
}
TT_OS2 *os2 = (TT_OS2 *)FT_Get_Sfnt_Table(face, ft_sfnt_os2);
if (os2) {
quint32 unicodeRange[4] = {
quint32(os2->ulUnicodeRange1),
quint32(os2->ulUnicodeRange2),
quint32(os2->ulUnicodeRange3),
quint32(os2->ulUnicodeRange4)
};
quint32 codePageRange[2] = {
quint32(os2->ulCodePageRange1),
quint32(os2->ulCodePageRange2)
};
writingSystems = QPlatformFontDatabase::writingSystemsFromTrueTypeBits(unicodeRange, codePageRange);
if (supportedWritingSystems)
*supportedWritingSystems = writingSystems;
if (os2->usWeightClass == 0)
;
else if (os2->usWeightClass < 350)
weight = QFont::Light;
else if (os2->usWeightClass < 450)
weight = QFont::Normal;
else if (os2->usWeightClass < 650)
weight = QFont::DemiBold;
else if (os2->usWeightClass < 750)
weight = QFont::Bold;
else if (os2->usWeightClass < 1000)
weight = QFont::Black;
if (os2->panose[2] >= 2) {
int w = os2->panose[2];
if (w <= 3)
weight = QFont::Light;
else if (w <= 5)
weight = QFont::Normal;
else if (w <= 7)
weight = QFont::DemiBold;
else if (w <= 8)
weight = QFont::Bold;
else if (w <= 10)
weight = QFont::Black;
}
}
QString family = QString::fromLatin1(face->family_name);
FontFile *fontFile = new FontFile;
fontFile->fileName = QFile::decodeName(file);
fontFile->indexValue = index;
QFont::Stretch stretch = QFont::Unstretched;
registerFont(family,QString::fromLatin1(face->style_name),QString(),weight,style,stretch,true,true,0,fixedPitch,writingSystems,fontFile);
families.append(family);
//.........这里部分代码省略.........
示例3: fromName
QHostInfo QHostInfoAgent::fromName(const QString &hostName)
{
QHostInfo results;
#if defined(QHOSTINFO_DEBUG)
qDebug("QHostInfoAgent::fromName(%s) looking up...",
hostName.toLatin1().constData());
#endif
// Load res_init on demand.
static volatile bool triedResolve = false;
if (!triedResolve) {
QMutexLocker locker(QMutexPool::globalInstanceGet(&local_res_init));
if (!triedResolve) {
resolveLibrary();
triedResolve = true;
}
}
// If res_init is available, poll it.
if (local_res_init)
local_res_init();
QHostAddress address;
if (address.setAddress(hostName)) {
// Reverse lookup
// Reverse lookups using getnameinfo are broken on darwin, use gethostbyaddr instead.
#if !defined (QT_NO_GETADDRINFO) && !defined (Q_OS_DARWIN)
sockaddr_in sa4;
#ifndef QT_NO_IPV6
sockaddr_in6 sa6;
#endif
sockaddr *sa = 0;
QT_SOCKLEN_T saSize = 0;
if (address.protocol() == QAbstractSocket::IPv4Protocol) {
sa = (sockaddr *)&sa4;
saSize = sizeof(sa4);
memset(&sa4, 0, sizeof(sa4));
sa4.sin_family = AF_INET;
sa4.sin_addr.s_addr = htonl(address.toIPv4Address());
}
#ifndef QT_NO_IPV6
else {
sa = (sockaddr *)&sa6;
saSize = sizeof(sa6);
memset(&sa6, 0, sizeof(sa6));
sa6.sin6_family = AF_INET6;
memcpy(sa6.sin6_addr.s6_addr, address.toIPv6Address().c, sizeof(sa6.sin6_addr.s6_addr));
}
#endif
char hbuf[NI_MAXHOST];
if (sa && getnameinfo(sa, saSize, hbuf, sizeof(hbuf), 0, 0, 0) == 0)
results.setHostName(QString::fromLatin1(hbuf));
#else
in_addr_t inetaddr = qt_safe_inet_addr(hostName.toLatin1().constData());
struct hostent *ent = gethostbyaddr((const char *)&inetaddr, sizeof(inetaddr), AF_INET);
if (ent)
results.setHostName(QString::fromLatin1(ent->h_name));
#endif
if (results.hostName().isEmpty())
results.setHostName(address.toString());
results.setAddresses(QList<QHostAddress>() << address);
return results;
}
// IDN support
QByteArray aceHostname = QUrl::toAce(hostName);
results.setHostName(hostName);
if (aceHostname.isEmpty()) {
results.setError(QHostInfo::HostNotFound);
results.setErrorString(hostName.isEmpty() ?
QCoreApplication::translate("QHostInfoAgent", "No host name given") :
QCoreApplication::translate("QHostInfoAgent", "Invalid hostname"));
return results;
}
#if !defined (QT_NO_GETADDRINFO)
// Call getaddrinfo, and place all IPv4 addresses at the start and
// the IPv6 addresses at the end of the address list in results.
addrinfo *res = 0;
struct addrinfo hints;
memset(&hints, 0, sizeof(hints));
hints.ai_family = PF_UNSPEC;
#ifdef Q_ADDRCONFIG
hints.ai_flags = Q_ADDRCONFIG;
#endif
int result = getaddrinfo(aceHostname.constData(), 0, &hints, &res);
# ifdef Q_ADDRCONFIG
if (result == EAI_BADFLAGS) {
// if the lookup failed with AI_ADDRCONFIG set, try again without it
hints.ai_flags = 0;
result = getaddrinfo(aceHostname.constData(), 0, &hints, &res);
}
# endif
if (result == 0) {
addrinfo *node = res;
//.........这里部分代码省略.........
示例4: addTTFile
QStringList QBasicUnixFontDatabase::addTTFile(const QByteArray &fontData, const QByteArray &file)
{
extern FT_Library qt_getFreetype();
FT_Library library = qt_getFreetype();
int index = 0;
int numFaces = 0;
QStringList families;
do {
FT_Face face;
FT_Error error;
if (!fontData.isEmpty()) {
error = FT_New_Memory_Face(library, (const FT_Byte *)fontData.constData(), fontData.size(), index, &face);
} else {
error = FT_New_Face(library, file.constData(), index, &face);
}
if (error != FT_Err_Ok) {
qDebug() << "FT_New_Face failed with index" << index << ":" << hex << error;
break;
}
numFaces = face->num_faces;
QFont::Weight weight = QFont::Normal;
QFont::Style style = QFont::StyleNormal;
if (face->style_flags & FT_STYLE_FLAG_ITALIC)
style = QFont::StyleItalic;
if (face->style_flags & FT_STYLE_FLAG_BOLD)
weight = QFont::Bold;
QSupportedWritingSystems writingSystems;
// detect symbol fonts
for (int i = 0; i < face->num_charmaps; ++i) {
FT_CharMap cm = face->charmaps[i];
if (cm->encoding == ft_encoding_adobe_custom
|| cm->encoding == ft_encoding_symbol) {
writingSystems.setSupported(QFontDatabase::Symbol);
break;
}
}
TT_OS2 *os2 = (TT_OS2 *)FT_Get_Sfnt_Table(face, ft_sfnt_os2);
if (os2) {
quint32 unicodeRange[4] = {
quint32(os2->ulUnicodeRange1), quint32(os2->ulUnicodeRange2),
quint32(os2->ulUnicodeRange3), quint32(os2->ulUnicodeRange4)
};
quint32 codePageRange[2] = {
quint32(os2->ulCodePageRange1), quint32(os2->ulCodePageRange2)
};
writingSystems = determineWritingSystemsFromTrueTypeBits(unicodeRange, codePageRange);
}
QString family = QString::fromAscii(face->family_name);
FontFile *fontFile = new FontFile;
fontFile->fileName = file;
fontFile->indexValue = index;
QFont::Stretch stretch = QFont::Unstretched;
registerFont(family,"",weight,style,stretch,true,true,0,writingSystems,fontFile);
families.append(family);
FT_Done_Face(face);
++index;
} while (index < numFaces);
return families;
}
示例5: macQueryInternal
QList<QNetworkProxy> macQueryInternal(const QNetworkProxyQuery &query)
{
QList<QNetworkProxy> result;
// obtain a dictionary to the proxy settings:
CFDictionaryRef dict = SCDynamicStoreCopyProxies(NULL);
if (!dict) {
qWarning("QNetworkProxyFactory::systemProxyForQuery: SCDynamicStoreCopyProxies returned NULL");
return result; // failed
}
if (isHostExcluded(dict, query.peerHostName())) {
CFRelease(dict);
return result; // no proxy for this host
}
// is there a PAC enabled? If so, use it first.
CFNumberRef pacEnabled;
if ((pacEnabled = (CFNumberRef)CFDictionaryGetValue(dict, kSCPropNetProxiesProxyAutoConfigEnable))) {
int enabled;
if (CFNumberGetValue(pacEnabled, kCFNumberIntType, &enabled) && enabled) {
// PAC is enabled
CFStringRef cfPacLocation = (CFStringRef)CFDictionaryGetValue(dict, kSCPropNetProxiesProxyAutoConfigURLString);
if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_5) {
QCFType<CFDataRef> pacData;
QCFType<CFURLRef> pacUrl = CFURLCreateWithString(kCFAllocatorDefault, cfPacLocation, NULL);
SInt32 errorCode;
if (!CFURLCreateDataAndPropertiesFromResource(kCFAllocatorDefault, pacUrl, &pacData, NULL, NULL, &errorCode)) {
QString pacLocation = QCFString::toQString(cfPacLocation);
qWarning("Unable to get the PAC script at \"%s\" (%s)", qPrintable(pacLocation), cfurlErrorDescription(errorCode));
return result;
}
QCFType<CFStringRef> pacScript = CFStringCreateFromExternalRepresentation(kCFAllocatorDefault, pacData, kCFStringEncodingISOLatin1);
if (!pacScript) {
// This should never happen, but the documentation says it may return NULL if there was a problem creating the object.
QString pacLocation = QCFString::toQString(cfPacLocation);
qWarning("Unable to read the PAC script at \"%s\"", qPrintable(pacLocation));
return result;
}
QByteArray encodedURL = query.url().toEncoded(); // converted to UTF-8
if (encodedURL.isEmpty()) {
return result; // Invalid URL, abort
}
QCFType<CFURLRef> targetURL = CFURLCreateWithBytes(kCFAllocatorDefault, (UInt8*)encodedURL.data(), encodedURL.size(), kCFStringEncodingUTF8, NULL);
if (!targetURL) {
return result; // URL creation problem, abort
}
QCFType<CFErrorRef> pacError;
QCFType<CFArrayRef> proxies = CFNetworkCopyProxiesForAutoConfigurationScript(pacScript, targetURL, &pacError);
if (!proxies) {
QString pacLocation = QCFString::toQString(cfPacLocation);
QCFType<CFStringRef> pacErrorDescription = CFErrorCopyDescription(pacError);
qWarning("Execution of PAC script at \"%s\" failed: %s", qPrintable(pacLocation), qPrintable(QCFString::toQString(pacErrorDescription)));
return result;
}
CFIndex size = CFArrayGetCount(proxies);
for (CFIndex i = 0; i < size; ++i) {
CFDictionaryRef proxy = (CFDictionaryRef)CFArrayGetValueAtIndex(proxies, i);
result << proxyFromDictionary(proxy);
}
return result;
} else {
QString pacLocation = QCFString::toQString(cfPacLocation);
qWarning("Mac system proxy: PAC script at \"%s\" not handled", qPrintable(pacLocation));
}
}
}
// no PAC, decide which proxy we're looking for based on the query
bool isHttps = false;
QString protocol = query.protocolTag().toLower();
// try the protocol-specific proxy
QNetworkProxy protocolSpecificProxy;
if (protocol == QLatin1String("ftp")) {
protocolSpecificProxy =
proxyFromDictionary(dict, QNetworkProxy::FtpCachingProxy,
kSCPropNetProxiesFTPEnable,
kSCPropNetProxiesFTPProxy,
kSCPropNetProxiesFTPPort);
} else if (protocol == QLatin1String("http")) {
protocolSpecificProxy =
proxyFromDictionary(dict, QNetworkProxy::HttpProxy,
kSCPropNetProxiesHTTPEnable,
kSCPropNetProxiesHTTPProxy,
kSCPropNetProxiesHTTPPort);
} else if (protocol == QLatin1String("https")) {
isHttps = true;
protocolSpecificProxy =
proxyFromDictionary(dict, QNetworkProxy::HttpProxy,
kSCPropNetProxiesHTTPSEnable,
kSCPropNetProxiesHTTPSProxy,
kSCPropNetProxiesHTTPSPort);
}
//.........这里部分代码省略.........
示例6: ensureConnection
bool QHttpNetworkConnectionChannel::ensureConnection()
{
QAbstractSocket::SocketState socketState = socket->state();
// resend this request after we receive the disconnected signal
if (socketState == QAbstractSocket::ClosingState) {
if (reply)
resendCurrent = true;
return false;
}
// already trying to connect?
if (socketState == QAbstractSocket::HostLookupState ||
socketState == QAbstractSocket::ConnectingState) {
return false;
}
// make sure that this socket is in a connected state, if not initiate
// connection to the host.
if (socketState != QAbstractSocket::ConnectedState) {
// connect to the host if not already connected.
state = QHttpNetworkConnectionChannel::ConnectingState;
pendingEncrypt = ssl;
// reset state
pipeliningSupported = PipeliningSupportUnknown;
authenticationCredentialsSent = false;
proxyCredentialsSent = false;
authenticator.detach();
QAuthenticatorPrivate *priv = QAuthenticatorPrivate::getPrivate(authenticator);
priv->hasFailed = false;
proxyAuthenticator.detach();
priv = QAuthenticatorPrivate::getPrivate(proxyAuthenticator);
priv->hasFailed = false;
// This workaround is needed since we use QAuthenticator for NTLM authentication. The "phase == Done"
// is the usual criteria for emitting authentication signals. The "phase" is set to "Done" when the
// last header for Authorization is generated by the QAuthenticator. Basic & Digest logic does not
// check the "phase" for generating the Authorization header. NTLM authentication is a two stage
// process & needs the "phase". To make sure the QAuthenticator uses the current username/password
// the phase is reset to Start.
priv = QAuthenticatorPrivate::getPrivate(authenticator);
if (priv && priv->phase == QAuthenticatorPrivate::Done)
priv->phase = QAuthenticatorPrivate::Start;
priv = QAuthenticatorPrivate::getPrivate(proxyAuthenticator);
if (priv && priv->phase == QAuthenticatorPrivate::Done)
priv->phase = QAuthenticatorPrivate::Start;
QString connectHost = connection->d_func()->hostName;
qint16 connectPort = connection->d_func()->port;
#ifndef QT_NO_NETWORKPROXY
// HTTPS always use transparent proxy.
if (connection->d_func()->networkProxy.type() != QNetworkProxy::NoProxy && !ssl) {
connectHost = connection->d_func()->networkProxy.hostName();
connectPort = connection->d_func()->networkProxy.port();
}
if (socket->proxy().type() == QNetworkProxy::HttpProxy) {
// Make user-agent field available to HTTP proxy socket engine (QTBUG-17223)
QByteArray value;
// ensureConnection is called before any request has been assigned, but can also be called again if reconnecting
if (request.url().isEmpty())
value = connection->d_func()->predictNextRequest().headerField("user-agent");
else
value = request.headerField("user-agent");
if (!value.isEmpty())
socket->setProperty("_q_user-agent", value);
}
#endif
if (ssl) {
#ifndef QT_NO_OPENSSL
QSslSocket *sslSocket = qobject_cast<QSslSocket*>(socket);
sslSocket->connectToHostEncrypted(connectHost, connectPort);
if (ignoreAllSslErrors)
sslSocket->ignoreSslErrors();
sslSocket->ignoreSslErrors(ignoreSslErrorsList);
// limit the socket read buffer size. we will read everything into
// the QHttpNetworkReply anyway, so let's grow only that and not
// here and there.
socket->setReadBufferSize(64*1024);
#else
connection->d_func()->emitReplyError(socket, reply, QNetworkReply::ProtocolUnknownError);
#endif
} else {
// In case of no proxy we can use the Unbuffered QTcpSocket
#ifndef QT_NO_NETWORKPROXY
if (connection->d_func()->networkProxy.type() == QNetworkProxy::NoProxy
&& connection->cacheProxy().type() == QNetworkProxy::NoProxy
&& connection->transparentProxy().type() == QNetworkProxy::NoProxy) {
#endif
socket->connectToHost(connectHost, connectPort, QIODevice::ReadWrite | QIODevice::Unbuffered);
// For an Unbuffered QTcpSocket, the read buffer size has a special meaning.
socket->setReadBufferSize(1*1024);
#ifndef QT_NO_NETWORKPROXY
} else {
socket->connectToHost(connectHost, connectPort);
// limit the socket read buffer size. we will read everything into
// the QHttpNetworkReply anyway, so let's grow only that and not
//.........这里部分代码省略.........
示例7: analyzeFile
const AudioFileModel AnalyzeTask::analyzeFile(const QString &filePath, int *type)
{
*type = fileTypeNormal;
AudioFileModel audioFile(filePath);
QFile readTest(filePath);
if(!readTest.open(QIODevice::ReadOnly))
{
*type = fileTypeDenied;
return audioFile;
}
if(checkFile_CDDA(readTest))
{
*type = fileTypeCDDA;
return audioFile;
}
readTest.close();
bool skipNext = false;
unsigned int id_val[2] = {UINT_MAX, UINT_MAX};
cover_t coverType = coverNone;
QByteArray coverData;
QStringList params;
params << QString("--Inform=file://%1").arg(QDir::toNativeSeparators(m_templateFile));
params << QDir::toNativeSeparators(filePath);
QProcess process;
lamexp_init_process(process, QFileInfo(m_mediaInfoBin).absolutePath());
process.start(m_mediaInfoBin, params);
if(!process.waitForStarted())
{
qWarning("MediaInfo process failed to create!");
qWarning("Error message: \"%s\"\n", process.errorString().toLatin1().constData());
process.kill();
process.waitForFinished(-1);
return audioFile;
}
while(process.state() != QProcess::NotRunning)
{
if(*m_abortFlag)
{
process.kill();
qWarning("Process was aborted on user request!");
break;
}
if(!process.waitForReadyRead())
{
if(process.state() == QProcess::Running)
{
qWarning("MediaInfo time out. Killing process and skipping file!");
process.kill();
process.waitForFinished(-1);
return audioFile;
}
}
QByteArray data;
while(process.canReadLine())
{
QString line = QString::fromUtf8(process.readLine().constData()).simplified();
if(!line.isEmpty())
{
//qDebug("Line:%s", QUTF8(line));
int index = line.indexOf('=');
if(index > 0)
{
QString key = line.left(index).trimmed();
QString val = line.mid(index+1).trimmed();
if(!key.isEmpty())
{
updateInfo(audioFile, &skipNext, id_val, &coverType, &coverData, key, val);
}
}
}
}
}
if(audioFile.metaInfo().title().isEmpty())
{
QString baseName = QFileInfo(filePath).fileName();
int index = baseName.lastIndexOf(".");
if(index >= 0)
{
baseName = baseName.left(index);
}
baseName = baseName.replace("_", " ").simplified();
index = baseName.lastIndexOf(" - ");
if(index >= 0)
{
baseName = baseName.mid(index + 3).trimmed();
//.........这里部分代码省略.........
示例8: validateCurrentPage
bool CertWizard::validateCurrentPage() {
if (currentPage() == qwpNew) {
if (! bValidDomain) {
QRegExp ereg(QLatin1String("(.+)@(.+)"), Qt::CaseInsensitive, QRegExp::RegExp2);
if (ereg.exactMatch(qleEmail->text())) {
const QString &domain = ereg.cap(2);
if (! domain.isEmpty()) {
qlError->setText(tr("Resolving domain %1.").arg(domain));
bPendingDns = true;
iLookupId = QHostInfo::lookupHost(domain, this, SLOT(lookedUp(QHostInfo)));
} else
bValidDomain = true;
} else
qlError->setText(tr("Unable to validate email.<br />Enter a valid (or blank) email to continue."));
if (! bValidDomain) {
qwpNew->setComplete(false);
return false;
}
} else {
kpNew = generateNewCert(qleName->text(), qleEmail->text());
if (! validateCert(kpNew)) {
qlError->setText(tr("There was an error generating your certificate.<br />Please try again."));
return false;
}
}
}
if (currentPage() == qwpExport) {
QByteArray qba = exportCert(kpNew);
if (qba.isEmpty()) {
QToolTip::showText(qleExportFile->mapToGlobal(QPoint(0,0)), tr("Your certificate and key could not be exported to PKCS#12 format. There might be an error in your certificate."), qleExportFile);
return false;
}
QFile f(qleExportFile->text());
if (! f.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Unbuffered)) {
QToolTip::showText(qleExportFile->mapToGlobal(QPoint(0,0)), tr("The file could not be opened for writing. Please use another file."), qleExportFile);
return false;
}
qint64 written = f.write(qba);
f.close();
if (written != qba.length()) {
QToolTip::showText(qleExportFile->mapToGlobal(QPoint(0,0)), tr("The file could not be written successfully. Please use another file."), qleExportFile);
return false;
}
}
if (currentPage() == qwpImport) {
QFile f(qleImportFile->text());
if (! f.open(QIODevice::ReadOnly | QIODevice::Unbuffered)) {
QToolTip::showText(qleImportFile->mapToGlobal(QPoint(0,0)), tr("The file could not be opened for reading. Please use another file."), qleImportFile);
return false;
}
QByteArray qba = f.readAll();
f.close();
if (qba.isEmpty()) {
QToolTip::showText(qleImportFile->mapToGlobal(QPoint(0,0)), tr("The file is empty or could not be read. Please use another file."), qleImportFile);
return false;
}
QPair<QList<QSslCertificate>, QSslKey> imp = importCert(qba, qlePassword->text());
if (! validateCert(imp)) {
QToolTip::showText(qleImportFile->mapToGlobal(QPoint(0,0)), tr("The file did not contain a valid certificate and key. Please use another file."), qleImportFile);
return false;
}
kpNew = imp;
}
if (currentPage() == qwpFinish) {
g.s.kpCertificate = kpNew;
}
return QWizard::validateCurrentPage();
}
示例9: resolve_types
// Update a C++ type so that any typedefs and registered ints are resolved.
QByteArray Chimera::resolve_types(const QByteArray &type)
{
// Split into a base type and a possible list of template arguments.
QByteArray resolved = type.simplified();
// Get the raw type, ie. without any "const", "&" or "*".
QByteArray raw_type;
int original_raw_start;
if (resolved.startsWith("const "))
original_raw_start = 6;
else
original_raw_start = 0;
raw_type = resolved.mid(original_raw_start);
while (raw_type.endsWith('&') || raw_type.endsWith('*') || raw_type.endsWith(' '))
raw_type.chop(1);
int original_raw_len = raw_type.size();
if (original_raw_len == 0)
return QByteArray();
// Get any template arguments.
QList<QByteArray> args;
int tstart = raw_type.indexOf('<');
if (tstart >= 0)
{
// Make sure the template arguments are terminated.
if (!raw_type.endsWith('>'))
return QByteArray();
// Split the template arguments taking nested templates into account.
int depth = 1, arg_start = tstart + 1;
for (int i = arg_start; i < raw_type.size(); ++i)
{
int arg_end = -1;
char ch = raw_type.at(i);
if (ch == '<')
{
++depth;
}
else if (ch == '>')
{
--depth;
if (depth < 0)
return QByteArray();
if (depth == 0)
arg_end = i;
}
else if (ch == ',' && depth == 1)
{
arg_end = i;
}
if (arg_end >= 0)
{
QByteArray arg = resolve_types(raw_type.mid(arg_start, arg_end - arg_start));
if (arg.isEmpty())
return QByteArray();
args.append(arg);
arg_start = arg_end + 1;
}
}
if (depth != 0)
return QByteArray();
// Remove the template arguments.
raw_type.truncate(tstart);
}
// Expand any typedef.
const char *base_type = sipResolveTypedef(raw_type.constData());
if (base_type)
raw_type = base_type;
// Do the same for any registered int types.
if (_registered_int_types.contains(raw_type))
raw_type = "int";
// Add any (now resolved) template arguments.
if (args.count() > 0)
{
raw_type.append('<');
for (QList<QByteArray>::const_iterator it = args.begin();;)
{
raw_type.append(*it);
//.........这里部分代码省略.........
示例10: parse_cpp_type
// Parse the given C++ type name.
bool Chimera::parse_cpp_type(const QByteArray &type)
{
_name = type;
// Resolve any types.
QByteArray resolved = resolve_types(type);
if (resolved.isEmpty())
return false;
// See if the type is known to Qt.
_metatype = QMetaType::type(resolved.constData());
// If not then use the PyQt_PyObject wrapper.
if (_metatype == QMetaType::Void)
_metatype = PyQt_PyObject::metatype;
// See if the type (without a pointer) is known to SIP.
bool is_ptr = resolved.endsWith('*');
if (is_ptr)
{
resolved.chop(1);
if (resolved.endsWith('*'))
return false;
}
_type = sipFindType(resolved.constData());
if (!_type)
{
// This is the only fundamental pointer type recognised by Qt.
if (_metatype == QMetaType::VoidStar)
return true;
// This is 'int', 'bool', etc.
if (_metatype != PyQt_PyObject::metatype && !is_ptr)
return true;
if ((resolved == "char" || resolved == "const char") && is_ptr)
{
// This is a special value meaning a (hopefully) '\0' terminated
// string.
_metatype = -1;
return true;
}
// This is an explicit 'PyQt_PyObject'.
if (resolved == "PyQt_PyObject" && !is_ptr)
return true;
return false;
}
if (sipTypeIsNamespace(_type))
return false;
if (sipTypeIsClass(_type))
{
set_flag();
if (is_ptr)
{
PyTypeObject *type_obj = sipTypeAsPyTypeObject(_type);
if (sipType_QWidget && PyType_IsSubtype(type_obj, sipTypeAsPyTypeObject(sipType_QWidget)))
{
_metatype = QMetaType::QWidgetStar;
}
else if (PyType_IsSubtype(type_obj, sipTypeAsPyTypeObject(sipType_QObject)))
{
_metatype = QMetaType::QObjectStar;
}
}
}
// We don't support pointers to enums.
if (sipTypeIsEnum(_type) && is_ptr)
_type = 0;
if (sipTypeIsEnum(_type) || isFlag())
_metatype = QMetaType::Int;
return true;
}
示例11: switch
// Parse a normalised C++ signature as a list of types.
Chimera::Signature *Chimera::parse(const QByteArray &sig, const char *context)
{
// Extract the argument list.
int start_idx = sig.indexOf('(');
if (start_idx < 0)
start_idx = 0;
else
++start_idx;
int end_idx = sig.lastIndexOf(')');
int len;
if (end_idx < start_idx)
len = -1;
else
len = end_idx - start_idx;
// Parse each argument type.
Chimera::Signature *parsed_sig = new Chimera::Signature(sig, true);
if (len > 0)
{
QByteArray args_str = sig.mid(start_idx, len);
// Check we haven't already done it.
QList<const Chimera *> parsed_args = _previously_parsed.value(args_str);
if (parsed_args.isEmpty())
{
int i, arg_start, template_level;
i = arg_start = template_level = 0;
// Extract each argument allowing for commas in templates.
for (;;)
{
char ch = (i < args_str.size() ? args_str.at(i) : '\0');
QByteArray arg;
switch (ch)
{
case '<':
++template_level;
break;
case '>':
--template_level;
break;
case '\0':
arg = args_str.mid(arg_start, i - arg_start);
break;
case ',':
if (template_level == 0)
{
arg = args_str.mid(arg_start, i - arg_start);
arg_start = i + 1;
}
break;
}
if (!arg.isEmpty())
{
Chimera *ct = new Chimera;
if (!ct->parse_cpp_type(arg))
{
delete ct;
delete parsed_sig;
qDeleteAll(parsed_args.constBegin(),
parsed_args.constEnd());
raiseParseException(arg.constData(), context);
return 0;
}
parsed_args.append(ct);
if (ch == '\0')
break;
}
++i;
}
// Only parse once.
_previously_parsed.insert(args_str, parsed_args);
}
parsed_sig->parsed_arguments = parsed_args;
}
return parsed_sig;
}
示例12: loadProfile
Profile* Profile::loadProfile(QString name, QString password)
{
if (ProfileLocker::hasLock())
{
qCritical() << "Tried to load profile "<<name<<", but another profile is already locked!";
return nullptr;
}
if (!ProfileLocker::lock(name))
{
qWarning() << "Failed to lock profile "<<name;
return nullptr;
}
// Check password
{
QString path = Settings::getInstance().getSettingsDirPath() + name + ".tox";
QFile saveFile(path);
qDebug() << "Loading tox save "<<path;
if (!saveFile.exists())
{
qWarning() << "The tox save file "<<path<<" was not found";
ProfileLocker::unlock();
return nullptr;
}
if (!saveFile.open(QIODevice::ReadOnly))
{
qCritical() << "The tox save file " << path << " couldn't' be opened";
ProfileLocker::unlock();
return nullptr;
}
qint64 fileSize = saveFile.size();
if (fileSize <= 0)
{
qWarning() << "The tox save file"<<path<<" is empty!";
ProfileLocker::unlock();
return nullptr;
}
QByteArray data = saveFile.readAll();
if (tox_is_data_encrypted((uint8_t*)data.data()))
{
if (password.isEmpty())
{
qCritical() << "The tox save file is encrypted, but we don't have a password!";
ProfileLocker::unlock();
return nullptr;
}
uint8_t salt[TOX_PASS_SALT_LENGTH];
tox_get_salt(reinterpret_cast<uint8_t *>(data.data()), salt);
auto tmpkey = *Core::createPasskey(password, salt);
data = Core::decryptData(data, tmpkey);
if (data.isEmpty())
{
qCritical() << "Failed to decrypt the tox save file";
ProfileLocker::unlock();
return nullptr;
}
}
else
{
if (!password.isEmpty())
qWarning() << "We have a password, but the tox save file is not encrypted";
}
}
return new Profile(name, password, false);
}
示例13: main
int main(int argc, char *argv[])
{
// FIXME: this can be considered a poor man's solution, as it's not
// directly obvious to a gui user. :)
// anyway, i vote against removing it even when we have a proper gui
// implementation. -- ossi
QByteArray duser = qgetenv("ADMIN_ACCOUNT");
if (duser.isEmpty())
duser = "root";
KAboutData aboutData("kdesu", 0, ki18n("KDE su"),
Version, ki18n("Runs a program with elevated privileges."),
KAboutData::License_Artistic,
ki18n("Copyright (c) 1998-2000 Geert Jansen, Pietro Iglio"));
aboutData.addAuthor(ki18n("Geert Jansen"), ki18n("Maintainer"),
"[email protected]", "http://www.stack.nl/~geertj/");
aboutData.addAuthor(ki18n("Pietro Iglio"), ki18n("Original author"),
"[email protected]");
aboutData.setProgramIconName("dialog-password");
KCmdLineArgs::init(argc, argv, &aboutData);
// NOTE: if you change the position of the -u switch, be sure to adjust it
// at the beginning of main()
KCmdLineOptions options;
options.add("!+command", ki18n("Specifies the command to run as separate arguments"));
options.add("c <command>", ki18n("Specifies the command to run as one string"));
options.add("f <file>", ki18n("Run command under target uid if <file> is not writable"));
options.add("u <user>", ki18n("Specifies the target uid"), duser);
options.add("n", ki18n("Do not keep password"));
options.add("s", ki18n("Stop the daemon (forgets all passwords)"));
options.add("t", ki18n("Enable terminal output (no password keeping)"));
options.add("p <prio>", ki18n("Set priority value: 0 <= prio <= 100, 0 is lowest"), "50");
options.add("r", ki18n("Use realtime scheduling"));
options.add("noignorebutton", ki18n("Do not display ignore button"));
options.add("i <icon name>", ki18n("Specify icon to use in the password dialog"));
options.add("d", ki18n("Do not show the command to be run in the dialog"));
#ifdef Q_WS_X11
/* KDialog originally used --embed for attaching the dialog box. However this is misleading and so we changed to --attach.
* For consistancy, we silently map --embed to --attach */
options.add("attach <winid>", ki18nc("Transient means that the kdesu app will be attached to the app specified by the winid so that it is like a dialog box rather than some separate program", "Makes the dialog transient for an X app specified by winid"));
options.add("embed <winid>");
#endif
KCmdLineArgs::addCmdLineOptions(options);
//KApplication::disableAutoDcopRegistration();
// kdesu doesn't process SM events, so don't even connect to ksmserver
QByteArray session_manager = qgetenv( "SESSION_MANAGER" );
if (!session_manager.isEmpty())
unsetenv( "SESSION_MANAGER" );
KApplication app;
// but propagate it to the started app
if (!session_manager.isEmpty())
setenv( "SESSION_MANAGER", session_manager.data(), 1 );
{
#ifdef Q_WS_X11
KStartupInfoId id;
id.initId( kapp->startupId());
id.setupStartupEnv(); // make DESKTOP_STARTUP_ID env. var. available again
#endif
}
int result = startApp();
if (result == 127)
{
KMessageBox::sorry(0, i18n("Cannot execute command '%1'.", QString::fromLocal8Bit(command)));
}
return result;
}
示例14: f
QList<Abi> Abi::abisOfBinary(const Utils::FileName &path)
{
QList<Abi> tmp;
if (path.isEmpty())
return tmp;
QFile f(path.toString());
if (!f.exists())
return tmp;
if (!f.open(QFile::ReadOnly))
return tmp;
QByteArray data = f.read(1024);
if (data.size() >= 67
&& getUint8(data, 0) == '!' && getUint8(data, 1) == '<' && getUint8(data, 2) == 'a'
&& getUint8(data, 3) == 'r' && getUint8(data, 4) == 'c' && getUint8(data, 5) == 'h'
&& getUint8(data, 6) == '>' && getUint8(data, 7) == 0x0a) {
// We got an ar file: possibly a static lib for ELF, PE or Mach-O
data = data.mid(8); // Cut of ar file magic
quint64 offset = 8;
while (!data.isEmpty()) {
if ((getUint8(data, 58) != 0x60 || getUint8(data, 59) != 0x0a)) {
qWarning() << path.toString() << ": Thought it was an ar-file, but it is not!";
break;
}
const QString fileName = QString::fromLocal8Bit(data.mid(0, 16));
quint64 fileNameOffset = 0;
if (fileName.startsWith(QLatin1String("#1/")))
fileNameOffset = fileName.mid(3).toInt();
const QString fileLength = QString::fromLatin1(data.mid(48, 10));
int toSkip = 60 + fileNameOffset;
offset += fileLength.toInt() + 60 /* header */;
tmp.append(abiOf(data.mid(toSkip)));
if (tmp.isEmpty() && fileName == QLatin1String("/0 "))
tmp = parseCoffHeader(data.mid(toSkip, 20)); // This might be windws...
if (!tmp.isEmpty()
&& tmp.at(0).binaryFormat() != Abi::MachOFormat)
break;
offset += (offset % 2); // ar is 2 byte aligned
f.seek(offset);
data = f.read(1024);
}
} else {
tmp = abiOf(data);
}
f.close();
// Remove duplicates:
QList<Abi> result;
foreach (const Abi &a, tmp) {
if (!result.contains(a))
result.append(a);
}
return result;
}
示例15: defined
int LdapOperation::LdapOperationPrivate::bind( const QByteArray &creds,
SASL_Callback_Proc *saslproc,
void *data, bool async )
{
Q_ASSERT( mConnection );
LDAP *ld = (LDAP *) mConnection->handle();
LdapServer server;
server = mConnection->server();
int ret;
if ( server.auth() == LdapServer::SASL ) {
#if defined( SASL2_FOUND ) && !defined( HAVE_WINLDAP_H )
sasl_conn_t *saslconn = (sasl_conn_t *)mConnection->saslHandle();
sasl_interact_t *client_interact = NULL;
const char *out = NULL;
uint outlen;
const char *mechusing = NULL;
struct berval ccred, *scred;
int saslresult;
QByteArray sdata = creds;
QString mech = server.mech();
if ( mech.isEmpty() ) {
mech = "DIGEST-MD5";
}
SASL_Data sasldata;
sasldata.proc = saslproc;
sasldata.data = data;
sasldata.creds.fields = 0;
sasldata.creds.realm = server.realm();
sasldata.creds.authname = server.user();
sasldata.creds.authzid = server.bindDn();
sasldata.creds.password = server.password();
do {
if ( sdata.isEmpty() ) {
do {
saslresult = sasl_client_start( saslconn, mech.toLatin1(),
&client_interact, &out, &outlen, &mechusing );
if ( saslresult == SASL_INTERACT ) {
if ( kldap_sasl_interact( client_interact, &sasldata ) != KLDAP_SUCCESS ) {
return KLDAP_SASL_ERROR;
}
}
kDebug() << "sasl_client_start mech: "
<< mechusing << " outlen " << outlen
<< " result: " << saslresult;
} while ( saslresult == SASL_INTERACT );
if ( saslresult != SASL_CONTINUE && saslresult != SASL_OK ) {
return KLDAP_SASL_ERROR;
}
} else {
kDebug() << "sasl_client_step";
do {
saslresult = sasl_client_step( saslconn, sdata.data(), sdata.size(),
&client_interact, &out, &outlen );
if ( saslresult == SASL_INTERACT ) {
if ( kldap_sasl_interact( client_interact, &sasldata ) != KLDAP_SUCCESS ) {
return KLDAP_SASL_ERROR;
}
}
} while ( saslresult == SASL_INTERACT );
kDebug() << "sasl_client_step result" << saslresult;
if ( saslresult != SASL_CONTINUE && saslresult != SASL_OK ) {
return KLDAP_SASL_ERROR;
}
}
ccred.bv_val = (char*) out;
ccred.bv_len = outlen;
if ( async ) {
kDebug() << "ldap_sasl_bind";
int msgid;
ret =
ldap_sasl_bind( ld, server.bindDn().toUtf8().data(), mech.toLatin1(),
&ccred, 0, 0, &msgid );
if ( ret == 0 ) {
ret = msgid;
}
kDebug() << "ldap_sasl_bind msgid" << ret;
} else {
kDebug() << "ldap_sasl_bind_s";
ret =
ldap_sasl_bind_s( ld, server.bindDn().toUtf8().data(), mech.toLatin1(),
&ccred, 0, 0, &scred );
kDebug() << "ldap_sasl_bind_s ret" << ret;
if ( scred ) {
sdata = QByteArray( scred->bv_val, scred->bv_len );
} else {
sdata = QByteArray();
}
}
} while ( !async && ret == KLDAP_SASL_BIND_IN_PROGRESS );
#else
kError() << "SASL authentication is not available "
//.........这里部分代码省略.........