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

📄 file.c

📁 oci的源码,可以在任何平台上编译,相当方便实用
💻 C
📖 第 1 页 / 共 2 页
字号:
        (
            res, file->con, 
            
            OCILobRead(file->con->cxt, file->con->err,
                       file->handle,  &size_out, offset, 
                       buffer, size_in, (dvoid *) NULL, 
                       NULL, (ub2) 0, (ub1) SQLCS_IMPLICIT)
        )
    }

    if (res == TRUE)
        file->offset += (big_uint) size_out;

    OCI_RESULT(res);

    return size_out;
}

/* ------------------------------------------------------------------------ *
 * OCI_FileGetType
 * ------------------------------------------------------------------------ */

unsigned int OCI_API OCI_FileGetType(OCI_File *file)
{
    OCI_CHECK_PTR(OCI_IPC_FILE, file, 0);

    OCI_RESULT(TRUE);

    return file->type;
}

/* ------------------------------------------------------------------------ *
 * OCI_FileGetSize
 * ------------------------------------------------------------------------ */

big_uint OCI_API OCI_FileGetSize(OCI_File *file)
{
    boolean res   = TRUE;
    big_uint size = 0;

    OCI_CHECK_PTR(OCI_IPC_FILE, file, 0);
 
#ifdef OCI_LOB2_API_ENABLED

    if (OCILib.use_lob_ub8)
    {
        OCI_CALL2
        (
            res, file->con, 
            
            OCILobGetLength2(file->con->cxt, file->con->err,
                             file->handle, (ub8 *) &size)
        )

    }
    else

#endif
 
    {
        ub4 size32 = (ub4) size;
   
        OCI_CALL2
        (
            res, file->con, 
            
            OCILobGetLength(file->con->cxt, file->con->err,
                            file->handle, &size32)
        )

        size = (big_uint) size32;
    }

    OCI_RESULT(res);

    return size;
}

/* ------------------------------------------------------------------------ *
 * OCI_LobFileExists
 * ------------------------------------------------------------------------ */

boolean OCI_API OCI_FileExists(OCI_File *file)
{
    boolean res   = TRUE;
    boolean value = FALSE;

    OCI_CHECK_PTR(OCI_IPC_FILE, file, FALSE);

    OCI_CALL2
    (
        res, file->con, 
        
        OCILobFileExists(file->con->cxt, file->con->err, file->handle, &value)
    )

    OCI_RESULT(res);

    return value;
}

/* ------------------------------------------------------------------------ *
 * OCI_FileSetName
 * ------------------------------------------------------------------------ */

boolean OCI_API OCI_FileSetName(OCI_File *file, const mtext *dir, 
                                const mtext *name)
{
    void *ostr1 = NULL;
    void *ostr2 = NULL;
    int osize1  = -1;
    int osize2  = -1;
    boolean res  = TRUE;

    OCI_CHECK_PTR(OCI_IPC_FILE, file, FALSE);

    ostr1 = OCI_GetInputMetaString(dir,  &osize1);
    ostr2 = OCI_GetInputMetaString(name, &osize2);

    OCI_CALL2
    (
        res, file->con, 
        
        OCILobFileSetName(OCILib.env, file->con->err,
                                          &file->handle,
                                          (OraText *) ostr1, (ub2) osize1,
                                          (OraText *) ostr2, (ub2) osize2)
    )

    OCI_ReleaseMetaString(ostr1);
    OCI_ReleaseMetaString(ostr2);
 
    if (res == TRUE)
        res = OCI_FileGetInfo(file);

    OCI_RESULT(res);

    return res;
}

/* ------------------------------------------------------------------------ *
 * OCI_FileGetDirectory
 * ------------------------------------------------------------------------ */

const mtext * OCI_API OCI_FileGetDirectory(OCI_File *file)
{
    boolean res = TRUE;

    OCI_CHECK_PTR(OCI_IPC_FILE, file, NULL);

    if ((file->dir == NULL) || (file->dir[0] == 0))
        res = OCI_FileGetInfo(file);


    return file->dir;
}

/* ------------------------------------------------------------------------ *
 * OCI_FileGetName
 * ------------------------------------------------------------------------ */

const mtext * OCI_API OCI_FileGetName(OCI_File *file)
{
    boolean res = TRUE;

    OCI_CHECK_PTR(OCI_IPC_FILE, file, NULL);

    if ((file->name == NULL) || (file->name[0] == 0))
        res = OCI_FileGetInfo(file);

    OCI_RESULT(res);

    return file->name;
}

/* ------------------------------------------------------------------------ *
 * OCI_FileOpen
 * ------------------------------------------------------------------------ */

boolean OCI_API OCI_FileOpen(OCI_File *file)
{
    boolean res = TRUE;

    OCI_CHECK_PTR(OCI_IPC_FILE, file, FALSE);

    OCI_CALL2
    (
        res, file->con, 
        
        OCILobFileOpen(file->con->cxt, file->con->err,
                       file->handle, (ub1) OCI_LOB_READONLY)
    )
    
    if (res == TRUE)
        file->con->nb_files++;

    OCI_RESULT(res);

    return res;
}

/* ------------------------------------------------------------------------ *
 * OCI_LobFileIsOpen
 * ------------------------------------------------------------------------ */

boolean OCI_API OCI_FileIsOpen(OCI_File *file)
{
    boolean res   = TRUE;
    boolean value = FALSE;

    OCI_CHECK_PTR(OCI_IPC_FILE, file, FALSE);

    OCI_CALL2
    (
        res, file->con, 
        
        OCILobFileIsOpen(file->con->cxt, file->con->err, file->handle, &value)
    )

    OCI_RESULT(res);

    return value;
}

/* ------------------------------------------------------------------------ *
 * OCI_FileClose
 * ------------------------------------------------------------------------ */

boolean OCI_API OCI_FileClose(OCI_File *file)
{
    boolean res = TRUE;

    OCI_CHECK_PTR(OCI_IPC_FILE, file, FALSE);

    OCI_CALL2
    (
        res, file->con, 
        
        OCILobFileClose(file->con->cxt, file->con->err, file->handle)
    )

    if (res == TRUE)
        file->con->nb_files--;

    OCI_RESULT(res);

    return res;
}

/* ------------------------------------------------------------------------ *
 * OCI_FileIsEqual
 * ------------------------------------------------------------------------ */

boolean OCI_API OCI_FileIsEqual(OCI_File *file, OCI_File *file2)
{
    boolean res   = TRUE;
    boolean value = FALSE;

    OCI_CHECK_PTR(OCI_IPC_FILE, file,  FALSE);
    OCI_CHECK_PTR(OCI_IPC_FILE, file2, FALSE);

    OCI_CALL2
    (
        res, file->con, 
        
        OCILobIsEqual(OCILib.env, file->handle, file2->handle, &value)
    )

    OCI_RESULT(res);

    return value;
}

/* ------------------------------------------------------------------------ *
 * OCI_FileAssign
 * ------------------------------------------------------------------------ */

boolean OCI_API OCI_FileAssign(OCI_File *file, OCI_File *file_src)
{
    boolean res = TRUE;

    OCI_CHECK_PTR(OCI_IPC_FILE, file,     FALSE);
    OCI_CHECK_PTR(OCI_IPC_FILE, file_src, FALSE);

    if (file->hstate == OCI_OBJECT_ALLOCATED)
    {
        OCI_CALL2
        (
            res, file->con, 
            
            OCILobLocatorAssign(file->con->cxt, file->con->err,
                                file_src->handle, &file->handle)
        )
  
    }
    else
    {
        OCI_CALL2
        (
            res, file->con, 
            
            OCILobAssign(OCILib.env, file->con->err,
                         file_src->handle, &file->handle)
        )
    }

    if (res == TRUE)
        OCI_FileGetInfo(file);

    OCI_RESULT(res);

    return res;
}

⌨️ 快捷键说明

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