int _FileAttrs( ftnfile *fcb ) { //================================== int attrs; attrs = 0; if( fcb->recfm == RECFM_DEFAULT ) { attrs |= DfltRecType( fcb ); } else if( fcb->recfm == RECFM_VARIABLE ) { attrs |= REC_VARIABLE; } else if( fcb->recfm == RECFM_TEXT ) { attrs |= REC_TEXT; } else { attrs |= REC_FIXED; } if( fcb->share == SHARE_DENYRW ) { attrs |= S_DENYRW; } else if( fcb->share == SHARE_DENYWR ) { attrs |= S_DENYWR; } else if( fcb->share == SHARE_DENYRD ) { attrs |= S_DENYRD; } else if( fcb->share == SHARE_DENYNO ) { attrs |= S_DENYNO; } if( fcb->cctrl == CC_YES ) { attrs |= CARRIAGE_CONTROL; } if( (fcb->accmode == ACCM_SEQUENTIAL) || (fcb->accmode == ACCM_APPEND) ) { if( !IsDevice( fcb ) ) { attrs |= TRUNC_ON_WRITE; } } if( fcb->accmode == ACCM_APPEND ) { attrs |= APPEND; } else if( fcb->accmode == ACCM_DIRECT ) { attrs |= SEEK; } if( fcb->action == ACTION_READ ) { attrs |= RDONLY; } else if( fcb->action == ACTION_WRITE ) { attrs |= WRONLY; } else { attrs |= RDWR; } return( attrs ); }
void InqOdList( void ) { //=================== ftnfile *fcb; byte spec; fcb = IOCB->fileinfo; if( IOCB->set_flags & SET_NUMBPTR ) { *IOCB->numbptr = fcb->unitid; } if( IOCB->set_flags & SET_RECFMPTR ) { spec = fcb->recfm; if( spec == RECFM_DEFAULT ) { spec = DfltRecType( fcb ); } RTCopy( RecType[ spec ], IOCB->recfmptr ); } if( IOCB->set_flags & SET_CCTRLPTR ) { spec = fcb->cctrl; if( spec == CC_DEFAULT ) { spec = CC_NO; } RTCopy( CCtrl[ spec ], IOCB->cctrlptr ); } if( IOCB->set_flags & SET_ACTPTR ) { spec = fcb->action; if( spec == ACT_DEFAULT ) { spec = ACTION_RW; } RTCopy( Action[ spec ], IOCB->actptr ); } if( IOCB->set_flags & SET_SHARE ) { spec = fcb->share; if( spec == SHARE_DEFAULT ) { spec = SHARE_COMPAT; } RTCopy( Share[ spec ], IOCB->shareptr ); } if( IOCB->set_flags & SET_ACCPTR ) { spec = fcb->accmode; if( spec == ACCM_DEFAULT ) { spec = ACCM_SEQUENTIAL; } RTCopy( ModeAcc[ spec ], IOCB->accptr ); } spec = fcb->formatted; if( spec == FORMATTED_DFLT ) { spec = FORMATTED_IO; if( fcb->accmode == ACCM_DIRECT ) { spec = UNFORMATTED_IO; } } if( IOCB->set_flags & SET_FORMPTR ) { RTCopy( Form[ spec ], IOCB->formptr ); } if( IOCB->set_flags & SET_BSIZEPTR ) { *IOCB->bsizeptr = fcb->blocksize; } if( IOCB->set_flags & SET_LENPTR ) { *IOCB->lenptr = fcb->bufflen; } if( fcb->accmode == ACCM_DIRECT ) { if( IOCB->set_flags & SET_NRECPTR ) { *IOCB->nrecptr = fcb->recnum; } } // At this point, "spec" still contains the format. if( ( IOCB->set_flags & SET_BLNKPTR ) && ( spec == FORMATTED_IO ) ) { spec = fcb->blanks; if( spec == BLANK_DEFAULT ) { spec = BLANK_NULL; } RTCopy( Blank[ spec ], IOCB->blnkptr ); } }