void UnixMurmur::handleSigHup() { qsnHup->setEnabled(false); char tmp; ssize_t len = ::read(iHupFd[1], &tmp, sizeof(tmp)); Q_UNUSED(len); if (! qfLog) { qWarning("Caught SIGHUP, but logfile not in use"); } else if (! qfLog->isOpen()) { qWarning("Caught SIGHUP, but logfile not in use -- interpreting as hint to quit"); QCoreApplication::instance()->quit(); } else { qWarning("Caught SIGHUP, will reopen %s", qPrintable(Meta::mp.qsLogfile)); QFile *newlog = new QFile(Meta::mp.qsLogfile); bool result = newlog->open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text); if (! result) { delete newlog; qCritical("Failed to reopen logfile for writing, keeping old log"); } else { QFile *oldlog = qfLog; newlog->setTextModeEnabled(true); qfLog = newlog; oldlog->close(); delete oldlog; qWarning("Log rotated successfully"); } } qsnHup->setEnabled(true); }