From: UUCP%"scgvaxd!cbosgd!okstate!oksma1.!ned" 30-MAY-1985 01:45 To: ymir!john, engvax!kvc Subj: Re: Problems in MAIL Received: from scgvaxd.UUCP by engvax.UUCP with VMS/UUCP; Thu, 30 May 85 01:45:17 PDT Received: by scgvaxd.UUCP (4.12/4.7) id AA10192; Thu, 30 May 85 01:44:59 pdt Message-Id: <8505300844.AA10192@scgvaxd.UUCP> Received: from oksma1 by okstate.csnet id a028279; 28 May 85 15:01 CDT Date: Tue, 28 May 85 14:15 CDT From: Ned Freed To: ymir!john, engvax!kvc Subject: Re: Problems in MAIL Kevin, I think I have fixed your problem with MAIL's use of block mode I/O. The fix is pretty easy (I guess you're just not an RMS stud). I managed to get MAIL to produce the appropriate error and checked out the FAB of the file being sent. It did NOT have the BIO bit set; it had the BRO bit set instead. In other words, the mode of the file (block or record) can be changed! However, there are two key restrictions: (1) All the RAB's must use the same mode. (2) If a RAB is set to block mode when it is $CONNECT'ed, it will remain in block mode until it is disconnected. If the RAB is set to record mode when it is $CONNECT'ed, you can pick and choose modes. The reason for this is that record mode requires that buffers be allocated at $CONNECT time. Well, MAIL sets the damn RAB to block mode before connecting it, but while there are sound reasons not to $CLOSE the file, there is no reason you can't $DISCONNECT the RAB, set the BIO bit in the RAB properly (there's a BIO bit in both the FAB and the RAB), then reconnect the RAB to the FAB. The file never opens or closes -- you can play RAB games pretty much for free. To make a long story short, just add the following code to MAIL_OUT_CONNECT just before you set up message_RAB.RAB$L_UBF: $DISCONNECT (RAB := message_RAB); message_RAB.RAB$L_ROP := uand (message_RAB.RAB$L_ROP, unot (RAB$M_BIO)); $CONNECT (RAB := message_RAB); And then MAIL will be a happy little program. Ned P.S. I tried to get the pmdf mailer to have a problem with privilege bits being set or reset and confusing MAIL privilege bit checker. It never seems to happen when I use PMDF's own enable/disable routines, so I guess I'll stick with those.