renfile.c

来自「db.* (pronounced dee-be star) is an adva」· C语言 代码 · 共 95 行

C
95
字号
/*************************************************************************** *                                                                         * * 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"/* ======================================================================    Rename database file*/int INTERNAL_FCN drenfile(    const DB_TCHAR *dbn,  /* database containing file to be renamed */    FILE_NO         fno,  /* file id number for file to be renamed */    const DB_TCHAR *fnm,  /* new file name */    DB_TASK        *task){    REN_ENTRY *rp;    /* make sure this database is not opened yet */    if (ddbnum(dbn, task) != S_INVDB)        return (dberr(S_DBOPEN));    task->db_status = S_OKAY;     /* set by ddbnum() */    ll_access(&task->ren_list);    while ((rp = (REN_ENTRY *) ll_next(&task->ren_list)) != NULL)    {        if (vtstrcmp(rp->ren_db_name, dbn) == 0 && rp->file_no == fno)        {            psp_freeMemory(rp->file_name, 0);            rp->file_name = psp_getMemory((vtstrlen(fnm) + 1) * sizeof(DB_TCHAR), 0);            if (rp->file_name == NULL)                return (dberr(S_NOMEMORY));            vtstrcpy(rp->file_name, fnm);            ll_deaccess(&task->ren_list);            return (task->db_status);        }    }    rp = (REN_ENTRY *) psp_getMemory(sizeof(REN_ENTRY), 0);    if (rp == NULL)        return (dberr(S_NOMEMORY));    if (ll_append(&task->ren_list, (char *) rp, task) != S_OKAY)        return (task->db_status);    rp->ren_db_name = psp_getMemory((vtstrlen(dbn) + 1) * sizeof(DB_TCHAR), 0);    rp->file_name = psp_getMemory((vtstrlen(fnm) + 1) * sizeof(DB_TCHAR), 0);    if (!rp->ren_db_name || !rp->file_name)        return (dberr(S_NOMEMORY));    vtstrcpy(rp->ren_db_name, dbn);    vtstrcpy(rp->file_name, fnm);    rp->file_no = fno;    ll_deaccess(&task->ren_list);    return (task->db_status);}/* ======================================================================    Clean up renamed file table*/int INTERNAL_FCN drenclean(DB_TASK *task){    REN_ENTRY *rp;    if (ll_access(&task->ren_list))    {        while ((rp = (REN_ENTRY *) ll_next(&task->ren_list)) != NULL)        {            psp_freeMemory(rp->ren_db_name, 0);            psp_freeMemory(rp->file_name, 0);            psp_freeMemory(rp, 0);        }    }    ll_deaccess(&task->ren_list);    ll_free(&task->ren_list, task);    return (task->db_status);}

⌨️ 快捷键说明

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