internal.c

来自「db.* (pronounced dee-be star) is an adva」· C语言 代码 · 共 542 行 · 第 1/2 页

C
542
字号
/*************************************************************************** *                                                                         * * db.*                                                                    * * open source database kernel                                             * *                                                                         * * 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.                                      *  *                                                                         * **************************************************************************/#include "db.star.h"#include "internal.h"/* ======================================================================    Return a value from an internal variable*/int INTERNAL_FCN dinternals(    DB_TASK      *task,    int           topic,    int           id,    int           elem,    void         *ptr,    unsigned      size){    int  stat;    long num;    if (ptr == NULL)        return (dberr(S_INVPTR));    switch (topic)    {        case TOPIC_GLOBALS:            switch (id)            {                case ID_DB_STATUS:                    memcpy(ptr, &task->db_status, size);                    break;                case ID_DBOPEN:                    memcpy(ptr, &task->dbopen, size);                    break;                case ID_DBUSERID:                    vtstrncpy(ptr, task->dbuserid, size / sizeof(DB_TCHAR));                    break;                case ID_DBDPATH:                    vtstrncpy(ptr, task->dbdpath, size / sizeof(DB_TCHAR));                    break;                case ID_DBFPATH:                    vtstrncpy(ptr, task->dbfpath, size / sizeof(DB_TCHAR));                    break;                case ID_DBNAME:                    vtstrncpy(ptr, task->curr_db_table->db_name, size / sizeof(DB_TCHAR));                    break;                case ID_CACHE_OVFL:                    memcpy(ptr, &task->cache_ovfl, size);                    break;                case ID_NO_OF_KEYS:                    memcpy(ptr, &task->no_of_keys, size);                    break;                case ID_KEY_INFO:                    if (task->key_info == NULL)                        break;                    memcpy(ptr, &task->key_info[elem], size);                    break;                case ID_KEY_TYPE:                    memcpy(ptr, &task->key_type, size);                    break;                case ID_LMC_STATUS:                    break;                case ID_DBOPTIONS:                    memcpy(ptr, &task->dboptions, size);                    break;                case ID_OV_INITADDR:                    memcpy(ptr, &task->ov_initaddr, size);                    break;                case ID_OV_ROOTADDR:                    memcpy(ptr, &task->ov_rootaddr, size);                    break;                case ID_OV_NEXTADDR:                    memcpy(ptr, &task->ov_nextaddr, size);                    break;                case ID_ROOT_IX:                    if (task->root_ix == NULL)                        break;                    memcpy(ptr, &task->root_ix[elem], size);                    break;                case ID_REN_LIST:                    memcpy(ptr, &task->ren_list, size);                    break;                case ID_PAGE_SIZE:                    memcpy(ptr, &task->page_size, size);                    break;                case ID_CURR_REC:                    memcpy(ptr, &task->curr_rec, size);                    break;                case ID_OV_FILE:                    memcpy(ptr, &task->ov_file, size);                    break;                case ID_SIZE_FT:                    memcpy(ptr, &task->size_ft, size);                    break;                case ID_SIZE_RT:                    memcpy(ptr, &task->size_rt, size);                    break;                case ID_SIZE_ST:                    memcpy(ptr, &task->size_st, size);                    break;                case ID_SIZE_MT:                    memcpy(ptr, &task->size_mt, size);                    break;                case ID_SIZE_SRT:                    memcpy(ptr, &task->size_srt, size);                    break;                case ID_SIZE_FD:                    memcpy(ptr, &task->size_fd, size);                    break;                case ID_SIZE_KT:                    memcpy(ptr, &task->size_kt, size);                    break;                case ID_LOCK_LVL:                    memcpy(ptr, &task->lock_lvl, size);                    break;                case ID_LOCK_STACK:                    memcpy(ptr, task->lock_stack, size);                    break;                case ID_SK_LIST:                    memcpy(ptr, &task->sk_list, size);                    break;                case ID_ERROR_FUNC:                    memcpy(ptr, &task->error_func, size);                    break;                case ID_COUNTRY_TBL:                    if (task->country_tbl == NULL)                        break;                    memcpy(ptr, &task->country_tbl, size);                    break;                case ID_CTBL_ACTIV:                    memcpy(ptr, &task->ctbl_activ, size);                    break;                case ID_CTBPATH:                    vtstrncpy(ptr, task->ctbpath, size / sizeof(DB_TCHAR));                    break;                case ID_CR_TIME:                    memcpy(ptr, &task->cr_time, size);                    break;                case ID_CO_TIME:                    if (task->co_time == NULL)                        break;                    memcpy(ptr, &task->co_time[elem], size);                    break;                case ID_CM_TIME:                    if (task->cm_time == NULL)                        break;                    memcpy(ptr, &task->cm_time[elem], size);                    break;                case ID_CS_TIME:                    if (task->cs_time == NULL)                        break;                    memcpy(ptr, &task->cs_time[elem], size);                    break;                case ID_DB_TSRECS:                    memcpy(ptr, &task->db_tsrecs, size);                    break;                case ID_DB_TSSETS:                    memcpy(ptr, &task->db_tssets, size);                    break;                case ID_CURR_DB:                    memcpy(ptr, &task->curr_db, size);                    break;                case ID_CURR_DB_TABLE:                    memcpy(ptr, task->curr_db_table, size);                    break;                case ID_SET_DB:                    memcpy(ptr, &task->set_db, size);                    break;                case ID_NO_OF_DBS:                    memcpy(ptr, &task->no_of_dbs, size);                    break;                case ID_RN_TABLE:                    if (task->rn_table == NULL)                        break;                    memcpy(ptr, &task->rn_table[elem], size);                    break;                case ID_CURR_RN_TABLE:                    memcpy(ptr, &task->curr_rn_table, size);                    break;                case ID_TRANS_ID:                    vtstrncpy(ptr, task->trans_id, size / sizeof(DB_TCHAR));                    break;                case ID_DBLOG:                    vtstrncpy(ptr, task->dblog, size / sizeof(DB_TCHAR));                    break;                case ID_DBWAIT_TIME:                    memcpy(ptr, &task->dbwait_time, size);                    break;                case ID_DB_TIMEOUT:                    memcpy(ptr, &task->db_timeout, size);                    break;                case ID_DB_LOCKMGR:                    memcpy(ptr, &task->db_lockmgr, size);                    break;                case ID_READLOCKSECS:                     memcpy(ptr, &task->readlocksecs,size);                     break;                case ID_WRITELOCKSECS:                     memcpy(ptr, &task->writelocksecs,size);                     break;                case ID_KEYL_CNT:                    memcpy(ptr, &task->keyl_cnt, size);                    break;

⌨️ 快捷键说明

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