[Oberon] Revisions in Unix.Oberon.NetSystem.Mod

peter at easthope.ca peter at easthope.ca
Mon Oct 9 19:21:28 CEST 2023


Hi,

A link to the module currently in the archive is in the left column here.
https://en.wikibooks.org/wiki/Oberon/A2#Oberon.NetSystem

My revision of the module is here.
https://en.wikibooks.org/wiki/Oberon/A2/Unix.Oberon.NetSystem.Mod

(1) Setuser in ETH Oberon assumed that the user or user ID did not 
contain the "@" character. No problem until the user was identified by 
email address.  Consequently 
NetSystem.SetUser pop:jdoe at something.tld:password at mailhost.com ~ 
failed by taking everything after the first @ as the host. The 
limitation was removed by parsing correctly. The improvement was put 
in the git archive months ago.  =8~)

(2) From joerg.straube at iaeth.ch  Sat Aug 26 18:46:04 2023
> Personally, I would only call the set („user“, „password“) 
> „Credential“. As you store the host and the service as well, I would 
> call the bundle of these 4 strings „ServiceLogin“ or „
> ServiceAccess“ or something along these lines. But feel free to call 
> it „Credential“, if you like.

Sound observation.  Thanks.

After dithering and thought I constrained your suggestion.  =8~)

		Access = POINTER TO AccessDesc;
		AccessDesc = RECORD
			service, user, host, passwd: ARRAY 64 OF CHAR;
			next: Access
		END;

Further debate welcome.  =8~)

(3) From andreas_pirklbauer at yahoo.com  Thu Sep 28 20:26:53 2017
> Local procedures are in fact almost identical to global procedures ...

For me, SetUser was one of the more difficult procedures.  Four local 
procedures contributed to the difficulty.  So I globalized those 
procedures.  A few additional parameters were needed but the net effect 
was more evident allocation of responsibility.

(4) PROCEDURE State* violated the RETURN-at-the-end rule.  Fixed.

(5) SetUser involved local variable ok in terminating a WHILE loop. ok 
occurred in several places in the loop, therefore obfuscating as 
successfully as multiple RETURNs.  =8~/  So I made Next return a 
success flag, added a loop for Next and removed ok.  Again I believe 
the result is more comprehensible.  Debate welcome.  =8~)

(6) From paulreed at paddedcell.com  Sun Aug 12 14:57:20 2018
> But to take Andreas' example of using module Out for this, just replace
> the (dynamically-loaded) Out module with a stub version in production.
> 
> I know the *system* is not the same, but at least your compiled code is. 
> The overhead of the empty call and return is pretty low, at least in a
> non-cached system. :)

SetUser had a debugging facility before I began tampering.  =8~)  
Specfically, it recognizes "\v" among the access parameters.  After 
finding \v SetUser delivers debug output to System.Log.  The switch is 
used at run time.  No risk from changing the executable.

(7) I've revised comments and added comments.  In some cases changed 
or deleted only a word.  Complaints welcome.

(8) SMTP and NNTP connections can be authenticated now.  I run the 
connections through Linux Stunnel.  Is a similar tunnel available in 
A2?  Probably I should apologize to Guenter for lack of familiarity 
with his work.

Thanks,                                 ... P.L.
.


- 
VoIP:   +1 604 670 0140
work: https://en.wikibooks.org/wiki/User:PeterEasthope



More information about the Oberon mailing list