本文整理汇总了C++中STRUCT_ASSIGN_MACRO函数的典型用法代码示例。如果您正苦于以下问题:C++ STRUCT_ASSIGN_MACRO函数的具体用法?C++ STRUCT_ASSIGN_MACRO怎么用?C++ STRUCT_ASSIGN_MACRO使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了STRUCT_ASSIGN_MACRO函数的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: opv_varnode
/*{
** Name: opv_varnode - make a range variable node
**
** Description:
** This procedure allocates and initializes a query tree PST_VAR node.
**
** Inputs:
** global ptr to global state variable
** datavalue datatype info of node to create
** variable range variable number - index
** into the global range table
** attribute dmf attribute of range variable to be
** assigned to var node.
**
** Outputs:
** Returns:
** ptr to PST_QNODE initialized to be a var node
** Exceptions:
** none
**
** Side Effects:
** none
**
** History:
** 8-apr-86 (seputis)
** initial creation
** 9-jul-91 (seputis)
** remove obsolete trace point
[@[email protected]]...
*/
PST_QNODE *
opv_varnode(
OPS_STATE *global,
DB_DATA_VALUE *datatype,
OPV_IGVARS variable,
DB_ATT_ID *dmfattr)
{
register PST_QNODE *qnode; /* ptr used for symbol allocation */
qnode = (PST_QNODE *) opu_memory( global, (i4) sizeof(PST_QNODE));
/* allocate storage for query tree node
** to be used for creation of var node
*/
qnode->pst_left = NULL;
qnode->pst_right = NULL;
qnode->pst_sym.pst_type = PST_VAR; /* create VAR node type */
STRUCT_ASSIGN_MACRO(*datatype, qnode->pst_sym.pst_dataval);
qnode->pst_sym.pst_dataval.db_data = NULL;
qnode->pst_sym.pst_len = sizeof(PST_VAR_NODE);
qnode->pst_sym.pst_value.pst_s_var.pst_vno = variable;
STRUCT_ASSIGN_MACRO(*dmfattr, qnode->pst_sym.pst_value.pst_s_var.pst_atno);
MEfill(sizeof(qnode->pst_sym.pst_value.pst_s_var.pst_atname), ' ',
(PTR)&qnode->pst_sym.pst_value.pst_s_var.pst_atname); /* init attribute
** name */
return( qnode );
}
示例2: opu_compare
/*{
** Name: opu_compare - compare two values with the same type
**
** Description:
** This routine will compare two values of the same type.
**
** Inputs:
** global ptr to global state variable
** vp1 ptr to first value
** vp2 ptr to second value
** datatype ptr to datatype info on values
**
** Outputs:
** Returns:
** -1 if vp1 < vp2
** 0 if vp1 = vp2
** 1 if vp1 > vp2
** Exceptions:
** none
**
** Side Effects:
** none
**
** History:
** 21-jun-86 (seputis)
** initial creation
[@[email protected]]...
*/
i4
opu_compare(
OPS_STATE *global,
PTR vp1,
PTR vp2,
DB_DATA_VALUE *datatype)
{
i4 adc_cmp_result;
DB_DATA_VALUE vpdv1;
DB_DATA_VALUE vpdv2;
DB_STATUS comparestatus;
STRUCT_ASSIGN_MACRO(*datatype, vpdv1);
STRUCT_ASSIGN_MACRO(vpdv1, vpdv2);
vpdv2.db_data = vp2;
vpdv1.db_data = vp1;
comparestatus = adc_compare(global->ops_adfcb, &vpdv1, &vpdv2,
&adc_cmp_result);
# ifdef E_OP078C_ADC_COMPARE
if (comparestatus != E_DB_OK)
opx_verror( comparestatus, E_OP078C_ADC_COMPARE,
global->ops_adfcb->adf_errcb.ad_errcode);
# endif
return (adc_cmp_result);
}
示例3: psy_create_synonym
/*{
** Name: psy_create_synonym - Insert a tuple into IISYNONYM.
**
** Description:
** Call RDF_UPDATE to insert a tuple into IISYNONYM.
** Inputs:
** psy_cb PSY control block.
** sess_cb PSF session control block.
** Outputs:
** Exceptions:
** none
** Returns:
** E_DB_OK synonym tuple has been inserted successfully;
** error status from RDF otherwise
**
** Side Effects:
** Modifies system catalogs.
**
** History:
** 19-apr-90 (andre)
** Created.
** 22-may-90 (teg)
** init rdr_instr to RDF_NO_INSTR
** 03-aug-92 (barbara)
** Invalidate base object's infoblk from the RDF cache.
** 10-aug-93 (andre)
** fixed causes of compiler warnings
*/
DB_STATUS
psy_create_synonym(
PSY_CB *psy_cb,
PSS_SESBLK *sess_cb)
{
RDF_CB rdf_cb;
register RDR_RB *rdf_rb = &rdf_cb.rdf_rb;
DB_STATUS status;
i4 err_code;
/* Initialize the RDF request block. */
pst_rdfcb_init(&rdf_cb, sess_cb);
STRUCT_ASSIGN_MACRO(sess_cb->pss_user, rdf_rb->rdr_owner);
rdf_rb->rdr_2types_mask = (RDF_TYPES) RDR2_SYNONYM;
rdf_rb->rdr_update_op = RDR_APPEND;
rdf_rb->rdr_qrytuple = psy_cb->psy_tupptr;
rdf_rb->rdr_tabid.db_tab_base = DM_B_SYNONYM_TAB_ID;
rdf_rb->rdr_tabid.db_tab_index = DM_I_SYNONYM_TAB_ID;
/* Insert a tuple into IISYNONYM */
status = rdf_call(RDF_UPDATE, (PTR) &rdf_cb);
if (DB_FAILURE_MACRO(status))
{
if (rdf_cb.rdf_error.err_code == E_RD0143_CREATE_SYNONYM)
{
DB_IISYNONYM *syn = (DB_IISYNONYM *) psy_cb->psy_tupptr;
(VOID) psf_error(E_PS0454_CREATE_SYN_ERROR, 0L, PSF_USERERR,
&err_code, &psy_cb->psy_error, 1,
psf_trmwhite(sizeof(DB_SYNNAME), (char *) &syn->db_synname),
&syn->db_synname);
}
else
{
(VOID) psf_rdf_error(RDF_UPDATE, &rdf_cb.rdf_error,
&psy_cb->psy_error);
}
return (status);
}
/* Invalidate the base object's info block from the RDF cache */
{
DB_IISYNONYM *syn_tuple = (DB_IISYNONYM *) psy_cb->psy_tupptr;
pst_rdfcb_init(&rdf_cb, sess_cb);
STRUCT_ASSIGN_MACRO(syn_tuple->db_syntab_id, rdf_rb->rdr_tabid);
status = rdf_call(RDF_INVALIDATE, (PTR) &rdf_cb);
if (DB_FAILURE_MACRO(status))
{
(VOID) psf_rdf_error(RDF_INVALIDATE, &rdf_cb.rdf_error,
&psy_cb->psy_error);
}
}
return (status);
}
示例4: opj_uvar
/*{
** Name: opj_uvar - get the attribute number of the union view var node
**
** Description:
** This routine will calculate the attribute number of the union view
** given the equivalence class of this var node
**
** Inputs:
** subquery ptr to subquery containing equivalence
** class of var node
** qual ptr to var node
**
** Outputs:
** attidp ptr to attribute ID for union view
** Returns:
** Exceptions:
** none
**
** Side Effects:
** none
**
** History:
** 28-jun-89 (seputis)
** initial creation
[@[email protected]]...
*/
static VOID
opj_uvar(
OPS_SUBQUERY *subquery,
PST_QNODE *qual,
OPV_IVARS varno,
DB_ATT_ID *attidp)
{
OPZ_BMATTS *attrmap; /* bit map of attributes in the
** equivalence class */
OPZ_IATTS attno; /* attribute currently being looked at */
OPZ_IATTS maxattr; /* maximum attribute */
OPZ_AT *abase;
maxattr = subquery->ops_attrs.opz_av;
abase = subquery->ops_attrs.opz_base; /* ptr to base of array of ptrs
** to joinop attributes */
attrmap = &subquery->ops_eclass.ope_base->ope_eqclist
[subquery->ops_attrs.opz_base->opz_attnums
[qual->pst_sym.pst_value.pst_s_var.pst_atno.db_att_id
]->opz_equcls
]->ope_attrmap;
for (attno = -1;
(attno = BTnext((i4)attno, (char *)attrmap, maxattr)
) >= 0;)
{
if (abase->opz_attnums[attno]->opz_varnm == varno)
{ /* found the union view attribute number so copy it in */
STRUCT_ASSIGN_MACRO(abase->opz_attnums[attno]->opz_attnm, *attidp);
break;
}
}
if (attno < 0)
opx_error(E_OP0384_NOATTS); /* attribute not found when
** expected */
}
示例5: psy_sqlview
/* PSY_SQLVIEW - IS THIS AN SQL VIEW
**
** Description:
** This routine takes a range entry and determines if it is an
** SQL view. This routine assumes that we know that the range entry
** refers to a view.
**
** History:
** 29-sep-92 (andre)
** RDF may choose to allocate a new info block and return its address
** in rdf_info_blk - we need to copy it over to pss_rdrinfo to avoid
** memory leak and other assorted unpleasantries
*/
DB_STATUS
psy_sqlview(
PSS_RNGTAB *rngvar,
PSS_SESBLK *sess_cb,
DB_ERROR *err_blk,
i4 *issql)
{
DB_STATUS status = E_DB_OK;
RDF_CB rdf_cb;
PST_PROCEDURE *pnode;
PST_QTREE *vtree;
i4 err_code;
*issql = FALSE;
pst_rdfcb_init(&rdf_cb, sess_cb);
STRUCT_ASSIGN_MACRO(rngvar->pss_tabid, rdf_cb.rdf_rb.rdr_tabid);
rdf_cb.rdf_rb.rdr_types_mask = RDR_VIEW | RDR_QTREE ;
rdf_cb.rdf_rb.rdr_qtuple_count = 1;
rdf_cb.rdf_info_blk = rngvar->pss_rdrinfo;
status = rdf_call(RDF_GETINFO, (PTR) &rdf_cb);
/*
** RDF may choose to allocate a new info block and return its address in
** rdf_info_blk - we need to copy it over to pss_rdrinfo to avoid memory
** leak and other assorted unpleasantries
*/
rngvar->pss_rdrinfo = rdf_cb.rdf_info_blk;
if (DB_FAILURE_MACRO(status))
{
if (rdf_cb.rdf_error.err_code == E_RD0002_UNKNOWN_TBL)
{
(VOID) psf_error(E_PS0903_TAB_NOTFOUND, rdf_cb.rdf_error.err_code,
PSF_INTERR, &err_code, err_blk, 1,
psf_trmwhite(sizeof(DB_TAB_NAME),
(char *) &rngvar->pss_tabname),
&rngvar->pss_tabname);
}
else
{
(VOID) psf_rdf_error(RDF_GETINFO, &rdf_cb.rdf_error, err_blk);
}
return (status);
}
pnode = (PST_PROCEDURE *) rdf_cb.rdf_info_blk->rdr_view->qry_root_node;
vtree = pnode->pst_stmts->pst_specific.pst_tree;
if (vtree->pst_qtree->pst_sym.pst_value.pst_s_root.pst_qlang == DB_SQL)
*issql = TRUE;
return (status);
}
示例6: psy_dpermit
//.........这里部分代码省略.........
** For CREATE/DEFINE PERMIT execute code below.
*/
/* initialize the QSF control block */
qsf_rb.qsf_type = QSFRB_CB;
qsf_rb.qsf_ascii_id = QSFRB_ASCII_ID;
qsf_rb.qsf_length = sizeof(qsf_rb);
qsf_rb.qsf_owner = (PTR)DB_PSF_ID;
qsf_rb.qsf_sid = sess_cb->pss_sessid;
rngtab = &sess_cb->pss_auxrng;
/* table info is stored in the only entry in the table queue */
psy_tbl = (PSY_TBL *) psy_cb->psy_tblq.q_next;
status = pst_rgent(sess_cb, rngtab, -1, "", PST_SHWID,
(DB_TAB_NAME *) NULL, (DB_TAB_OWN *) NULL,
&psy_tbl->psy_tabid, TRUE, &rngvar, (i4) 0, err_blk);
if (DB_FAILURE_MACRO(status))
goto exit;
/* In STAR, we do not actually store permits */
if (sess_cb->pss_distrib & DB_3_DDB_SESS)
{
qsf_rb.qsf_lk_state = QSO_EXLOCK;
goto exit;
}
/* Fill in the RDF request block */
pst_rdfcb_init(&rdf_cb, sess_cb);
/* The table which is receiving the permit */
STRUCT_ASSIGN_MACRO(psy_tbl->psy_tabid, rdf_rb->rdr_tabid);
/* Tell RDF we're doing a permit definition */
rdf_rb->rdr_update_op = RDR_APPEND;
rdf_rb->rdr_types_mask = RDR_PROTECT;
rdf_rb->rdr_qrytuple = (PTR) protup;
/* initialize independent object structure */
indep_objs.psq_objs = (PSQ_OBJ *) NULL;
indep_objs.psq_objprivs = (PSQ_OBJPRIV *) NULL;
indep_objs.psq_colprivs = (PSQ_COLPRIV *) NULL;
indep_objs.psq_grantee = &sess_cb->pss_user;
rdf_rb->rdr_indep = (PTR) &indep_objs;
/*
** populate the IIPROTECT tuple
*/
/* Zero out the template */
(VOID)MEfill(sizeof(ptuple), (u_char) 0, (PTR) protup);
/* store grantee type */
protup->dbp_gtype = psy_cb->psy_gtype;
/* Init reserved block */
(VOID)MEfill(sizeof(protup->dbp_reserve),
(u_char) ' ', (PTR) protup->dbp_reserve);
/* Init obj name */
STRUCT_ASSIGN_MACRO(psy_tbl->psy_tabnm, protup->dbp_obname);
示例7: qea_rupdate
//.........这里部分代码省略.........
tidinput =
(char *) assoc_dsh->dsh_row[act->qhd_obj.qhd_qep.ahd_tidrow]
+ act->qhd_obj.qhd_qep.ahd_tidoffset;
if (act->qhd_obj.qhd_qep.ahd_qepflag & AHD_4BYTE_TIDP)
{
I4ASSIGN_MACRO(*tidinput, oldbigtid.tid_i4.tid );
oldbigtid.tid_i4.tpf = 0;
}
else
{
I8ASSIGN_MACRO(*tidinput, oldbigtid);
}
oldpartno = oldbigtid.tid.tid_partno;
newpartno = oldpartno;
/* Check for partitioning and set up DMR_CB. */
if (act->qhd_obj.qhd_qep.ahd_part_def)
{
/* Open against "get" action. The RUP action dmtix and
** flags are the same as the cursor's, thanks to OPC.
*/
status = qeq_part_open(qef_rcb, assoc_dsh, NULL, 0,
odmr_cb_ix,
act->qhd_obj.qhd_qep.ahd_dmtix, oldpartno);
if (status != E_DB_OK)
{
dsh->dsh_error.err_code = assoc_dsh->dsh_error.err_code;
return(status);
}
pdmr_cb = (DMR_CB *)assoc_cbs[odmr_cb_ix + oldpartno+1];
STRUCT_ASSIGN_MACRO(dmr_cb->dmr_data, pdmr_cb->dmr_data);
dmr_cb = pdmr_cb;
}
dmr_cb->dmr_tid = oldbigtid.tid_i4.tid;
dmr_cb->dmr_flags_mask = DMR_BY_TID;
/* get the tuple to be updated. */
save_addr = dmr_cb->dmr_data.data_address;
dmr_cb->dmr_data.data_address = output;
status = dmf_call(DMR_GET, dmr_cb);
dmr_cb->dmr_data.data_address = save_addr;
if (status != E_DB_OK)
{
dsh->dsh_error.err_code = dmr_cb->error.err_code;
return (status);
}
}
/* If we have rules, save a copy of the row before updating */
if (act->qhd_obj.qhd_qep.ahd_after_act != NULL ||
act->qhd_obj.qhd_qep.ahd_before_act != NULL)
{
MEcopy(output, act->qhd_obj.qhd_qep.ahd_repsize,
dsh->dsh_row[act->qhd_obj.qhd_qep.u1.s1.ahd_b_row]);
oldbigtid.tid_i4.tpf = 0;
oldbigtid.tid_i4.tid = dmr_cb->dmr_tid;
oldbigtid.tid.tid_partno = oldpartno;
}
/* process the update expression */
qen_adf = act->qhd_obj.qhd_qep.ahd_current;
ade_excb = (ADE_EXCB*) dsh->dsh_cbs[qen_adf->qen_pos];
if (dsh->dsh_qp_ptr->qp_status & QEQP_GLOBAL_BASEARRAY)
示例8: qeu_evraise
/*
** Name: qeu_evraise
**
** Description:
** This routine raises an event, it processes the external request
** QEU_RAISE_EVENT, typically when raising the event associated with
** a security alarm.
**
** Note this *does* do event tracing (SET PRINTEVENTS/LOGEVENTS)
** but does *not* do security checks/auditing on the operation, this
** is assumed to be handled at a higher level.
**
** Inputs:
** qef_rcb.evname - Event name
** qef_rcb.evowner - Event owner
** qef_rcb.evtext - Event text
** qef_rcb.ev_l_text- Length of text
**
** History:
** 26-nov-93 (robf)
** Created for secure 2.0
** 12-Jan-1998 (kinpa04/merja01)
** Remove (i4) casting of session id. This caused the
** session ID to get truncated on axp_osf while raising events.
** 10-Jan-2001 (jenjo02)
** We know this session's id; pass it to SCF.
** 30-Dec-2005 (kschendel)
** Update call to qef-adf-error.
**
*/
DB_STATUS
qeu_evraise(
QEF_CB *qef_cb,
QEF_RCB *qef_rcb
)
{
DB_DATA_VALUE tm; /* Timestamp */
DB_DATE tm_date;
SCF_ALERT scfa;
SCF_CB scf_cb;
SCF_SCI sci_list[1];
DB_ALERT_NAME alert;
i4 err;
char *errstr;
DB_STATUS status=E_DB_OK;
i4 tr1 = 0, tr2 = 0; /* Dummy trace values */
/*
** Build alert name
*/
STRUCT_ASSIGN_MACRO(*qef_rcb->qef_evname, alert.dba_alert);
STRUCT_ASSIGN_MACRO(*qef_rcb->qef_evowner, alert.dba_owner);
scf_cb.scf_length = sizeof(SCF_CB);
scf_cb.scf_type = SCF_CB_TYPE;
scf_cb.scf_facility = DB_QEF_ID;
scf_cb.scf_session = qef_cb->qef_ses_id;
/* Get the database name */
scf_cb.scf_ptr_union.scf_sci = (SCI_LIST *) sci_list;
scf_cb.scf_len_union.scf_ilength = 1;
sci_list[0].sci_length = sizeof(DB_DB_NAME);
sci_list[0].sci_code = SCI_DBNAME;
sci_list[0].sci_aresult = (char *) &alert.dba_dbname;
sci_list[0].sci_rlength = NULL;
status = scf_call(SCU_INFORMATION, &scf_cb);
if (status != E_DB_OK)
{
_VOID_ qef_error(E_QE022F_SCU_INFO_ERROR, 0L, status, &err,
&qef_rcb->error, 0);
return E_DB_ERROR;
}
/* Format SCF event request block */
scf_cb.scf_ptr_union.scf_alert_parms = &scfa;
scfa.scfa_name = &alert;
scfa.scfa_text_length = 0;
scfa.scfa_user_text = NULL;
scfa.scfa_flags = 0;
if (qef_rcb->qef_ev_l_text > 0) /* No need for empty strings */
{
if (qef_rcb->qef_ev_l_text > DB_EVDATA_MAX)
qef_rcb->qef_ev_l_text = DB_EVDATA_MAX;
scfa.scfa_text_length = qef_rcb->qef_ev_l_text;
scfa.scfa_user_text = qef_rcb->qef_evtext;
}
tm.db_datatype = DB_DTE_TYPE; /* Get time stamp for the event */
tm.db_prec = 0;
tm.db_length = sizeof(tm_date);
tm.db_data = (PTR)&tm_date;
tm.db_collID = -1;
status = adu_datenow(qef_cb->qef_adf_cb, &tm);
if (status != E_DB_OK)
{
if ((status = qef_adf_error(&qef_cb->qef_adf_cb->adf_errcb,
status, qef_cb, &qef_rcb->error)) != E_DB_OK)
return (status);
}
//.........这里部分代码省略.........
示例9: qeu_devent
//.........这里部分代码省略.........
evkey_ptr_array[1]->attr_value = (char *)&evtuple->dbe_owner;
evqeu.qeu_qual = NULL;
evqeu.qeu_qarg = NULL;
status = qeu_get(qef_cb, &evqeu);
if (status != E_DB_OK)
{
if (evqeu.error.err_code == E_QE0015_NO_MORE_ROWS)
{
(VOID)qef_error(E_QE020B_EVENT_ABSENT, 0L,
E_DB_ERROR, &error, &qeuq_cb->error, 1,
qec_trimwhite(sizeof(evtuple->dbe_name),
(char *)&evtuple->dbe_name),
(PTR)&evtuple->dbe_name);
error = E_QE0025_USER_ERROR;
}
else /* Other error */
{
error = evqeu.error.err_code;
}
break;
} /* If no event found */
break;
} /* End dummy for loop */
/* Handle any error messages */
if (status != E_DB_OK)
{
(VOID) qef_error(error, 0L, status, &error, &qeuq_cb->error, 0);
}
else
{
QEUQ_CB dqeuq;
STRUCT_ASSIGN_MACRO(*qeuq_cb, dqeuq);
dqeuq.qeuq_flag_mask &= ~QEU_DROP_TEMP_TABLE;
dqeuq.qeuq_flag_mask |= QEU_FORCE_QP_INVALIDATION;
dqeuq.qeuq_rtbl = &evtuple_del.dbe_uniqueid;
STRUCT_ASSIGN_MACRO(evtuple_del.dbe_txtid, dqeuq.qeuq_qid);
dqeuq.qeuq_uld_tup = &evqef_data;
/*
** Check if dbevent used by alarm, if so we can't drop it
*/
if(qeu_ev_used_with_alarm(qef_cb, qeuq_cb, &evtuple_del.dbe_uniqueid)
!=E_DB_OK)
{
(VOID) qef_error(E_US2479_9337_ALARM_USES_EVENT,
0L, local_status,
&error, &qeuq_cb->error, 2,
qec_trimwhite(sizeof(evtuple->dbe_owner),
(char*)&evtuple->dbe_owner),
(PTR)&evtuple->dbe_owner,
qec_trimwhite(sizeof(evtuple->dbe_name),
(char*)&evtuple->dbe_name),
(PTR)&evtuple->dbe_name);
error = E_QE0025_USER_ERROR;
status=E_DB_ERROR;
}
if(status==E_DB_OK)
{
/*
** perform cascading destruction - qeu_d_cascade() handles its
** own error reporting
*/
STRUCT_ASSIGN_MACRO(*qeuq_cb, dqeuq);
dqeuq.qeuq_flag_mask &= ~((i4) QEU_DROP_TEMP_TABLE);
示例10: DI_slave_write
//.........这里部分代码省略.........
if (seginfo != 0 && (seginfo->flags & ME_SLAVEMAPPED_MASK) != 0)
{
direct_write = TRUE;
MEcopy( (PTR)seginfo->key, sizeof(disl->seg_key),
(PTR)disl->seg_key);
disl->seg_offset = (char *)buf - (char *)seginfo->addr;
}
else
{
direct_write = FALSE;
seginfo = ME_find_seg(disl->buf, disl->buf, &ME_segpool);
if (seginfo)
{
MEcopy( (PTR)seginfo->key, sizeof(disl->seg_key),
(PTR)disl->seg_key);
disl->seg_offset= (char *)disl->buf - (char *)seginfo->addr;
}
else
{
small_status = DI_BADWRITE;
break;
}
}
/* Send file properties to slave */
FPROP_COPY(f->io_fprop,disl->io_fprop);
disl->pre_seek =
(OFFSET_TYPE)(f->io_bytes_per_page) * (OFFSET_TYPE)(page);
disl->file_op = DI_SL_WRITE;
/*
** Write the data
*/
do
{
if (direct_write)
disl->length = bytes_to_write;
else
{
disl->length = min(bytes_to_write, Cs_srv_block.cs_size_io_buf);
MEcopy((PTR)buf, disl->length, (PTR)disl->buf);
}
DI_slave_send( disl->dest_slave_no, diop,
&big_status, &small_status, &intern_status);
if (( big_status != OK ) || (small_status != OK ))
break;
if ((small_status = disl->status) != OK )
{
STRUCT_ASSIGN_MACRO(disl->errcode, *err_code);
}
if ((small_status != OK) || (disl->length == 0))
{
switch( err_code->errnum )
{
case EFBIG:
small_status = DI_BADEXTEND;
break;
case ENOSPC:
small_status = DI_NODISKSPACE;
break;
#ifdef EDQUOT
case EDQUOT:
small_status = DI_EXCEED_LIMIT;
break;
#endif
default:
small_status = DI_BADWRITE;
break;
}
break;
}
bytes_to_write -= disl->length;
buf += disl->length;
if (bytes_to_write > 0)
disl->pre_seek += (OFFSET_TYPE)disl->length;
} while ( bytes_to_write > 0);
} while (FALSE);
if (big_status != OK )
small_status = big_status;
if (small_status != OK )
DIlru_set_di_error( &small_status, err_code, intern_status,
DI_GENERAL_ERR);
return( small_status );
}