[Oberon] Re (2): Export of Oberon Mail.SendCmd().

Joerg joerg.straube at iaeth.ch
Thu Jun 15 17:21:29 CEST 2023


Hi

I had a look at Oberon.Base64.Mod.
Is it that module you want to use?
If yes, the only procedure it offers is Base64.EncodeFile(F, T);
So, your input must be in file F and the base64 output is in text T.

If you want a string to be base64-encoded you have to go the extra mile to write it to a (temporary) file and read it back from a (temporary) text.

PROCEDURE Enc64*(in: ARRAY OF CHAR; VAR out: ARRAY IF CHAR);
VAR
   F: Files.File; fR: Files.Rider;
  T: Texts.Text; tR: Texts.Reader;
  i: INTEGER;
BEGIN
  NEW(T); Texts.Open(T, ““);
  F := Files.New(““);
  Files.Set(fR, F, 0); Files.WriteString(fR, in);
  Base64.EncodeFile(F, T);
  Files.Close(F);
  i := 0; Texts.OpenReader(tR, T, 0);
  REPEAT
    Texts.Read(tR, out[i]); INC(i)
  UNTIL Out.eot;
  out[i] := 0X
END Enc64;

Hopefully, it works. I did neither compile nor test it. To make it more robust, checks on NIL and LEN(out) should be added…

br
Jörg

> Am 15.06.2023 um 15:41 schrieb peter at easthope.ca:
> 
> From:    Joerg <joerg.straube at iaeth.ch>
> Date:    Thu, 15 Jun 2023 08:56:14 +0300
>> Generally, re-using code instead of copying is a good approach.
>> If you do so, then the whole code of Mail is imported in News.
> 
> Currently working in the Oberon subsystem of A2 where News imports 
> Mail. I don't have an ETH Oberon system at hand but will speculate 
> that Mail was written before News and that News imported Mail from 
> the beginning or early in development.
> 
>> What about this: try to separate all common code in an own module (e.g 
>> call it Communication.Mod or MsgBase.Mod or Utilities.Mod or so) and 
>> import this new module in Mail and in News.
> 
> Good.  Keeping in mind for possible future work.  For now I'm happy to 
> have succeeded to add authentication to SMTP and NNTP.  For me, Oberon 
> Mail and News are good alternatives to mutt, Thunderbird, pan & etc. 
> in Linux. I also want to make the current revisions available in A2.  
> What's useful to me may benefit others.
> 
> Thanks for the help,                ... P. 
> 
> Footnote
> Still need to understand Streams well enough to automate base64 
> encoding for submission of the user and password for SMTP.
> 
> 
> - 
> mobile: +1 778 951 5147
> VoIP:   +1 604 670 0140
> 
> --
> Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related systems
> https://lists.inf.ethz.ch/mailman/listinfo/oberon


More information about the Oberon mailing list