示例#1
0
文件: locks.c 项目: shaunamarie/core
bool InvalidateLockTime(const char *lock_id)
{
    time_t epoch = 0;

    CF_DB *dbp = OpenLock();

    if (dbp == NULL)
    {
        return false;
    }

    LockData lock_data;

    if(!ReadDB(dbp, lock_id, &lock_data, sizeof(lock_data)))
    {
        CloseLock(dbp);
        return true;  /* nothing to invalidate */
    }

    lock_data.time = epoch;

    bool result = WriteLockData(dbp, lock_id, &lock_data);

    CloseLock(dbp);

    return result;
}
示例#2
0
文件: locks.c 项目: shaunamarie/core
bool AcquireLockByID(const char *lock_id, int acquire_after_minutes)
{
    CF_DB *dbp = OpenLock();

    if(dbp == NULL)
    {
        return false;
    }

    bool result;
    LockData lock_data;

    if (ReadDB(dbp, lock_id, &lock_data, sizeof(lock_data)))
    {
        if(lock_data.time + (acquire_after_minutes * SECONDS_PER_MINUTE) < time(NULL))
        {
            result = WriteLockDataCurrent(dbp, lock_id);
        }
        else
        {
            result = false;
        }
    }
    else
    {
        result = WriteLockDataCurrent(dbp, lock_id);
    }

    CloseLock(dbp);

    return result;
}
示例#3
0
文件: locks.c 项目: shaunamarie/core
static pid_t FindLockPid(char *name)
{
    CF_DB *dbp;
    LockData entry;

    if ((dbp = OpenLock()) == NULL)
    {
        return -1;
    }

    if (ReadDB(dbp, name, &entry, sizeof(entry)))
    {
        CloseLock(dbp);
        return entry.pid;
    }
    else
    {
        CloseLock(dbp);
        return -1;
    }
}
示例#4
0
文件: locks.c 项目: shaunamarie/core
time_t FindLockTime(char *name)
{
    CF_DB *dbp;
    LockData entry;

    CfDebug("FindLockTime(%s)\n", name);

    if ((dbp = OpenLock()) == NULL)
    {
        return -1;
    }

    if (ReadDB(dbp, name, &entry, sizeof(entry)))
    {
        CloseLock(dbp);
        return entry.time;
    }
    else
    {
        CloseLock(dbp);
        return -1;
    }
}
示例#5
0
文件: locks.c 项目: shaunamarie/core
static int RemoveLock(char *name)
{
    CF_DB *dbp;

    if ((dbp = OpenLock()) == NULL)
    {
        return -1;
    }

    ThreadLock(cft_lock);
    DeleteDB(dbp, name);
    ThreadUnlock(cft_lock);

    CloseLock(dbp);
    return 0;
}
示例#6
0
//-----------------------------------------------------------------------------
//! Helper to obtain and verify lock code
//-----------------------------------------------------------------------------
bool tSiriusController::Authorize( const QString customMsg )
{
    bool shouldUnlock = true;
    if( m_UnlockDialogShowing == false )
    {
        if (m_LockOpened)
        {
            shouldUnlock = true;
        }
        else
        {
            bool accepted = false;

            QString msg = tr("Enter lock code");
            if (customMsg != "")
            {
                msg = customMsg;
            }

            m_UnlockDialogShowing = true;
            int verifyCode = tInputDialog::GetInteger( 0, msg, tr("4-digit number"), m_InitialLockCode, m_MinimumLockCode, m_MaximumLockCode, &accepted );

            if (accepted == false)
            {
                shouldUnlock = false; // User cancelled
            }
            else if (verifyCode != tAudioSettings::Instance()->LockCode())
            {
                tMessageBox::Error( 0, tr("Lock code"), tr("Invalid lock code"), tMessageBox::CLOSE );
                shouldUnlock = false;
            }
            else
            {
                // Authorization effective for a while
                m_LockOpened = true;
                QTimer::singleShot( m_cLockOpenMillis , this, SLOT(CloseLock()));
            }
        }
    }

    m_UnlockDialogShowing = false;
    return shouldUnlock;
}