⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 miscfcns.c

📁 db.* (pronounced dee-be star) is an advanced, high performance, small footprint embedded database fo
💻 C
字号:
/*************************************************************************** *                                                                         * * db.*                                                                    * * open source database, ida utility                                       * *                                                                         * * Copyright (c) 2000 Centura Software Corporation. All rights reserved.   * *                                                                         * * Use of this software, whether in source code format, or in executable,  * * binary object code form, is governed by the CENTURA OPEN SOURCE LICENSE * * which is fully described in the LICENSE.TXT file, included within this  * * distribution of source code files.                                      *  *                                                                         * **************************************************************************//*--------------------------------------------------------------------------    IDA - Miscellaneous Information Functions--------------------------------------------------------------------------*/#include "db.star.h"#include "internal.h"#include "ddlnms.h"#include "ida.h"/* ========================================================================    Display database file status*/void mffcn(){    char                 slots[20];    int                  cnt;    register short       i;    extern char          dbname[];    PGZERO               pgz;    tprintf("@m0400@E@SDatabase name:@s %s\n", dbname);    tprintf("@SAccess type  :@s %s\n",          task->dbopen == 1 ? "shared" : (task->dbopen == 2 ? "exclusive" : "closed"));    if (task->trans_id[0])        tprintf("@m0600@STransaction  :@s %s", task->trans_id);    tprintf("@m0800@SFILE  SLOTS TYPE STATUS        @s");    if (task->dbopen == 1)        tprintf("@SRW EX@s ");    tprintf("@SNAME@s\n");    for (cnt = i = 0; (i < task->size_ft) && (task->file_table[i].ft_type != 'o'); ++i)    {        int rn, cn;        rn = cnt + 9;        cn = 0;        tprintf("@M@e%3d  ", &rn, &cn, i);        d_internals(task, TOPIC_PGZERO_TABLE, 0, i, &pgz, sizeof(pgz));        sprintf(slots, "%6ld", pgz.pz_next - 1);        tprintf("%s %s %s-%s ", slots,                  (task->file_table[i].ft_type == DATA) ? "data" :                  ((task->file_table[i].ft_type == KEY) ? "key " : "stat"),                  (task->file_table[i].ft_status == OPEN) ? "open  " : "closed",                  (task->dbopen == 2 || task->app_locks[i] || task->excl_locks[i]) ? "locked" : "free  ");        if (task->dbopen == 1)        {            tprintf("%2d ", task->app_locks[i]);            tprintf("%2d ", task->excl_locks[i]);        }        tprintf("%s", task->file_table[i].ft_name);        if (cnt++ == 12 && i < task->size_ft - 1)        {            usererr("more");            tprintf("@m0900@E");            cnt = 0;        }    }}/* ========================================================================    Display set/record lock status*/void mlfcn(){    register int i, cnt;    int rn, cn;    if (task->dbopen == 2)    {        usererr("Exclusive database access");    }    else    {        tprintf("@m0400@E@SRECORD NAME             LOCK STATUS@s\n");        for (cnt = i = 0; i < task->size_rt; ++i)        {            rn = cnt + 5;            cn = 0;            tprintf("@M@e%s", &rn, &cn, task->record_names[i]);            cn = 23;            tprintf("@M@e ", &rn, &cn);            switch (task->rec_locks[i].fl_type)            {                case 'r':   tprintf("read  ");   break;                case 'w':   tprintf("write ");   break;                case 'f':   tprintf("free  ");   break;                case 'x':   tprintf("excl  ");   break;                default:    break;            }            if (task->rec_locks[i].fl_kept)                tprintf("and keep");            if (cnt++ == 17 && i < task->size_rt - 1)            {                usererr("more");                tprintf("@m0500@E");                cnt = 0;            }        }        if (task->size_st)        {            usererr("more");            tprintf("@m0400@E@SSET NAME                LOCK STATUS@s\n");            for (cnt = i = 0; i < task->size_st; ++i)            {                rn = cnt + 5;                cn = 0;                tprintf("@M@e%s", &rn, &cn, task->set_names[i]);                cn = 23;                tprintf("@M@e ", &rn, &cn);                switch (task->set_locks[i].fl_type)                {                    case 'r':   tprintf("read  ");   break;                    case 'w':   tprintf("write ");   break;                    case 'f':   tprintf("free  ");   break;                    case 'x':   tprintf("excl  ");   break;                }                if (task->set_locks[i].fl_kept)                    tprintf("and keep");                if (cnt++ == 17 && i < task->size_st - 1)                {                    usererr("more");                    tprintf("@m0500@E");                    cnt = 0;                }            }        }        if (tot_keys)        {            usererr("more");            tprintf("@m0400@E@SKEY NAME@s\n");            tprintf("@m0434@SLOCK STATUS@s\n");            for (cnt = i = 0; i < tot_keys; ++i)            {                rn = cnt + 5;                cn = 0;                tprintf("@M@e%s", &rn, &cn, keynames[i]);                cn = 33;                tprintf("@M@e ", &rn, &cn);                switch (task->key_locks[i].fl_type)                {                    case 'r':   tprintf("read  ");   break;                    case 'w':   tprintf("write ");   break;                    case 'f':   tprintf("free  ");   break;                    case 'x':   tprintf("excl  ");   break;                }                if (task->key_locks[i].fl_kept)                    tprintf("and keep");                if (cnt++ == 17 && i < task->size_st - 1)                {                    usererr("more");                    tprintf("@m0500@E");                    cnt = 0;                }            }        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -