Rocksolid Light

Welcome to novaBBS (click a section below)

mail  files  register  newsreader  groups  login

Message-ID:  

Build a system that even a fool can use and only a fool will want to use it.


devel / comp.lang.tcl / Read from memory like from a file

SubjectAuthor
* Read from memory like from a fileHelmut Giese
+* Read from memory like from a fileHelmut Giese
|`* Read from memory like from a fileheinrichmartin
| `* Read from memory like from a fileHelmut Giese
|  +* Read from memory like from a fileRalf Fassel
|  |`- Read from memory like from a fileRich
|  `* Read from memory like from a fileRich
|   `- Read from memory like from a fileHelmut Giese
`* Read from memory like from a fileSchelte
 `- Read from memory like from a fileHelmut Giese

1
Read from memory like from a file

<ooduph5jbv4pakrov4m1d6otlh9ajb6cg5@4ax.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=10365&group=comp.lang.tcl#10365

  copy link   Newsgroups: comp.lang.tcl
Path: i2pn2.org!i2pn.org!eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
From: hgi...@ratiosoft.com (Helmut Giese)
Newsgroups: comp.lang.tcl
Subject: Read from memory like from a file
Date: Sun, 18 Dec 2022 17:00:40 +0100
Organization: ratiosoft
Lines: 10
Message-ID: <ooduph5jbv4pakrov4m1d6otlh9ajb6cg5@4ax.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Injection-Info: reader01.eternal-september.org; posting-host="1882a18a90071faaa711c3ef9cfcc10c";
logging-data="14705"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX183EH18v6hCG55Aa+hpHhJ3"
Cancel-Lock: sha1:w4YlQzrg2d0oxUaPSTvHC3g5L/k=
X-Newsreader: Forte Free Agent 1.93/32.576 English (American)
 by: Helmut Giese - Sun, 18 Dec 2022 16:00 UTC

Hello out there,
I have a script which expects to receive its input via a file handle.
I, however, have the prospective input in form of a string in memory
and I would hate to have to write it to a file just to be able to use
the script.
Q: Is there some mechanism to get a file a handle to memory which I
then could pass to 'gets'? I thought of 'memchan' but wasn't
successful.
Any help or tip will be greatly appreciated
Helmut

Re: Read from memory like from a file

<r9guph11otsp1tnf37louqq7kk8b5k5tti@4ax.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=10366&group=comp.lang.tcl#10366

  copy link   Newsgroups: comp.lang.tcl
Path: i2pn2.org!i2pn.org!eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
From: hgi...@ratiosoft.com (Helmut Giese)
Newsgroups: comp.lang.tcl
Subject: Re: Read from memory like from a file
Date: Sun, 18 Dec 2022 17:40:36 +0100
Organization: ratiosoft
Lines: 21
Message-ID: <r9guph11otsp1tnf37louqq7kk8b5k5tti@4ax.com>
References: <ooduph5jbv4pakrov4m1d6otlh9ajb6cg5@4ax.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Injection-Info: reader01.eternal-september.org; posting-host="1882a18a90071faaa711c3ef9cfcc10c";
logging-data="20517"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18e7IX9SfE8E+EKpU6yV1rh"
Cancel-Lock: sha1:CuTezBokLylI8MpZ0BNaAPGMvhw=
X-Newsreader: Forte Free Agent 1.93/32.576 English (American)
 by: Helmut Giese - Sun, 18 Dec 2022 16:40 UTC

Helmut Giese <hgiese@ratiosoft.com> schrieb:

>Hello out there,
>I have a script which expects to receive its input via a file handle.
>I, however, have the prospective input in form of a string in memory
>and I would hate to have to write it to a file just to be able to use
>the script.
>Q: Is there some mechanism to get a file a handle to memory which I
>then could pass to 'gets'? I thought of 'memchan' but wasn't
>successful.
>Any help or tip will be greatly appreciated
>Helmut
Never mind, I think I found a simple solution: faking 'gets':
- Starting from the beginning look for the next '\n'.
- Return the text just up to the '\n' and increment 'start' just past
the '\n'.
- Repeat till the end of text.

It helps to formulate a question - sometimes soon afterwards a
solution presents itself.
Helmut

Re: Read from memory like from a file

<398501a0-397b-473d-85e7-025264cfd6c9n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=10374&group=comp.lang.tcl#10374

  copy link   Newsgroups: comp.lang.tcl
X-Received: by 2002:a05:6214:9b2:b0:4c7:54b0:5523 with SMTP id du18-20020a05621409b200b004c754b05523mr21319241qvb.18.1671440364816;
Mon, 19 Dec 2022 00:59:24 -0800 (PST)
X-Received: by 2002:a05:620a:1493:b0:6ff:a4d8:d4d7 with SMTP id
w19-20020a05620a149300b006ffa4d8d4d7mr630027qkj.695.1671440364666; Mon, 19
Dec 2022 00:59:24 -0800 (PST)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!feed1.usenet.blueworldhosting.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.tcl
Date: Mon, 19 Dec 2022 00:59:24 -0800 (PST)
In-Reply-To: <r9guph11otsp1tnf37louqq7kk8b5k5tti@4ax.com>
Injection-Info: google-groups.googlegroups.com; posting-host=84.115.227.61; posting-account=Od2xOAoAAACEyRX3Iu5rYt4oevuoeYUG
NNTP-Posting-Host: 84.115.227.61
References: <ooduph5jbv4pakrov4m1d6otlh9ajb6cg5@4ax.com> <r9guph11otsp1tnf37louqq7kk8b5k5tti@4ax.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <398501a0-397b-473d-85e7-025264cfd6c9n@googlegroups.com>
Subject: Re: Read from memory like from a file
From: martin.h...@frequentis.com (heinrichmartin)
Injection-Date: Mon, 19 Dec 2022 08:59:24 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 1513
 by: heinrichmartin - Mon, 19 Dec 2022 08:59 UTC

On Sunday, December 18, 2022 at 5:40:42 PM UTC+1, Helmut Giese wrote:
> Helmut Giese schrieb:
> >I thought of 'memchan' but wasn't
> >successful.

You meant tcl::chan::string, didn't you?
I remember me also quitting these memchans, but I cannot recall the exact reason/problem.
Can your issue be reproduced/presented with feasible effort?

Re: Read from memory like from a file

<nnd$6d180390$01308011@3fd421583cf66a94>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=10375&group=comp.lang.tcl#10375

  copy link   Newsgroups: comp.lang.tcl
Date: Mon, 19 Dec 2022 11:37:22 +0100
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.0.2
Subject: Re: Read from memory like from a file
Content-Language: en-US
Newsgroups: comp.lang.tcl
References: <ooduph5jbv4pakrov4m1d6otlh9ajb6cg5@4ax.com>
From: nos...@wanadoo.nl (Schelte)
In-Reply-To: <ooduph5jbv4pakrov4m1d6otlh9ajb6cg5@4ax.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Message-ID: <nnd$6d180390$01308011@3fd421583cf66a94>
Organization: KPN B.V.
Path: i2pn2.org!i2pn.org!aioe.org!news.uzoreto.com!feeder.usenetexpress.com!tr2.eu1.usenetexpress.com!94.232.112.244.MISMATCH!feed.abavia.com!abe004.abavia.com!abp002.abavia.com!news.kpn.nl!not-for-mail
Lines: 30
Injection-Date: Mon, 19 Dec 2022 11:37:22 +0100
Injection-Info: news.kpn.nl; mail-complaints-to="abuse@kpn.com"
 by: Schelte - Mon, 19 Dec 2022 10:37 UTC

On 18/12/2022 17:00, Helmut Giese wrote:
> Q: Is there some mechanism to get a file a handle to memory which I
> then could pass to 'gets'? I thought of 'memchan' but wasn't
> successful.

What do you mean with "memory"? Is the data a constant in your script,
do you have a variable that contains the data, is the data the result of
some command, or something else?

If the data is in a variable, you can use tcl::chan::variable:

package require tcl::chan::variable
set var "Some string\ncontaining multiple lines"

set fd [::tcl::chan::variable var]

puts [gets $fd]
puts [tell $fd]
seek $fd 0
puts [read $fd]
close $fd

For other cases, tcl::chan::string may be a better fit. It works pretty
much the same as the above code.

Schelte.

Re: Read from memory like from a file

<m8o3qhlishcvrutvvjktfj3vcqg79024sm@4ax.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=10400&group=comp.lang.tcl#10400

  copy link   Newsgroups: comp.lang.tcl
Path: i2pn2.org!i2pn.org!eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
From: hgi...@ratiosoft.com (Helmut Giese)
Newsgroups: comp.lang.tcl
Subject: Re: Read from memory like from a file
Date: Tue, 20 Dec 2022 17:23:31 +0100
Organization: ratiosoft
Lines: 23
Message-ID: <m8o3qhlishcvrutvvjktfj3vcqg79024sm@4ax.com>
References: <ooduph5jbv4pakrov4m1d6otlh9ajb6cg5@4ax.com> <nnd$6d180390$01308011@3fd421583cf66a94>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Injection-Info: reader01.eternal-september.org; posting-host="600462432e3aaad548213d86ae053ef3";
logging-data="782223"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+DmYXZMeNctlQ8S4c0doER"
Cancel-Lock: sha1:T4jzK4nKSB2DB4dWp3vvzDdv688=
X-Newsreader: Forte Free Agent 1.93/32.576 English (American)
 by: Helmut Giese - Tue, 20 Dec 2022 16:23 UTC

Hi Schelte,
>What do you mean with "memory"? Is the data a constant in your script,
>do you have a variable that contains the data, is the data the result of
>some command, or something else?
>
>If the data is in a variable, you can use tcl::chan::variable:
>
> package require tcl::chan::variable
> set var "Some string\ncontaining multiple lines"
>
> set fd [::tcl::chan::variable var]
>
> puts [gets $fd]
> puts [tell $fd]
> seek $fd 0
> puts [read $fd]
> close $fd
>
>For other cases, tcl::chan::string may be a better fit. It works pretty
>much the same as the above code.
that's a good tip. I wasn't aware of the 'channel' command.
Thanks
Helmut

Re: Read from memory like from a file

<vco3qhhi9btmudamba41kvgt3sjq9tshk1@4ax.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=10401&group=comp.lang.tcl#10401

  copy link   Newsgroups: comp.lang.tcl
Path: i2pn2.org!i2pn.org!eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
From: hgi...@ratiosoft.com (Helmut Giese)
Newsgroups: comp.lang.tcl
Subject: Re: Read from memory like from a file
Date: Tue, 20 Dec 2022 17:32:26 +0100
Organization: ratiosoft
Lines: 19
Message-ID: <vco3qhhi9btmudamba41kvgt3sjq9tshk1@4ax.com>
References: <ooduph5jbv4pakrov4m1d6otlh9ajb6cg5@4ax.com> <r9guph11otsp1tnf37louqq7kk8b5k5tti@4ax.com> <398501a0-397b-473d-85e7-025264cfd6c9n@googlegroups.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
Injection-Info: reader01.eternal-september.org; posting-host="600462432e3aaad548213d86ae053ef3";
logging-data="784446"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+fXenblcjeqe3d/LYjmtJA"
Cancel-Lock: sha1:ZCsx/52L7JyMa0mOdfjCkrebX+E=
X-Newsreader: Forte Free Agent 1.93/32.576 English (American)
 by: Helmut Giese - Tue, 20 Dec 2022 16:32 UTC

Hi heinrichmartin,

>You meant tcl::chan::string, didn't you?
ähem, no - I really meant memchan.

>I remember me also quitting these memchans, but I cannot recall the exact reason/problem.
>Can your issue be reproduced/presented with feasible effort?
I only did really naively something like
set chan [tcl::chan::memchan]
set txt <some file>
puts $chan $txt
while {[gets $chan line] >= 0} {
puts "[incr lineNumber]: $line"
}
which didn't work.

But now that I know about chan::variable and friends I think I know
what is needed.
Thanks Helmut

Re: Read from memory like from a file

<ygaa63inho8.fsf@akutech.de>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=10402&group=comp.lang.tcl#10402

  copy link   Newsgroups: comp.lang.tcl
Path: i2pn2.org!i2pn.org!usenet.goja.nl.eu.org!3.eu.feeder.erje.net!feeder.erje.net!news2.arglkargh.de!news.karotte.org!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
From: ralf...@gmx.de (Ralf Fassel)
Newsgroups: comp.lang.tcl
Subject: Re: Read from memory like from a file
Date: Tue, 20 Dec 2022 17:50:15 +0100
Lines: 23
Message-ID: <ygaa63inho8.fsf@akutech.de>
References: <ooduph5jbv4pakrov4m1d6otlh9ajb6cg5@4ax.com>
<r9guph11otsp1tnf37louqq7kk8b5k5tti@4ax.com>
<398501a0-397b-473d-85e7-025264cfd6c9n@googlegroups.com>
<vco3qhhi9btmudamba41kvgt3sjq9tshk1@4ax.com>
Mime-Version: 1.0
Content-Type: text/plain
X-Trace: individual.net Y6G9OkLLTDf8uFvABxs/mgk2NOjMFSne1TUlYOOqpWhF3in2o=
Cancel-Lock: sha1:F5yxutwRQoJe1ZCDYEv2AkmoFgQ= sha1:1wLROnWYfYTIMI3UUNLD08hAdW8=
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux)
 by: Ralf Fassel - Tue, 20 Dec 2022 16:50 UTC

* Helmut Giese <hgiese@ratiosoft.com>
| >I remember me also quitting these memchans, but I cannot recall the exact reason/problem.
| >Can your issue be reproduced/presented with feasible effort?
| I only did really naively something like
| set chan [tcl::chan::memchan]
| set txt <some file>
| puts $chan $txt
| while {[gets $chan line] >= 0} {
| puts "[incr lineNumber]: $line"
| }
| which didn't work.

Playing around with that it seems that the input and output positions of
the stream share a common state, i.e. after the 'puts $chan $txt' the
reading side is also at EOF.
If you do a seek to the beginning

puts $chan $txt
chan seek $chan 0

prior to the following gets, you can read the $txt line by line.

R'

Re: Read from memory like from a file

<tnsq8o$o4rh$1@dont-email.me>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=10404&group=comp.lang.tcl#10404

  copy link   Newsgroups: comp.lang.tcl
Path: i2pn2.org!i2pn.org!eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
From: ric...@example.invalid (Rich)
Newsgroups: comp.lang.tcl
Subject: Re: Read from memory like from a file
Date: Tue, 20 Dec 2022 17:09:44 -0000 (UTC)
Organization: A noiseless patient Spider
Lines: 43
Message-ID: <tnsq8o$o4rh$1@dont-email.me>
References: <ooduph5jbv4pakrov4m1d6otlh9ajb6cg5@4ax.com> <r9guph11otsp1tnf37louqq7kk8b5k5tti@4ax.com> <398501a0-397b-473d-85e7-025264cfd6c9n@googlegroups.com> <vco3qhhi9btmudamba41kvgt3sjq9tshk1@4ax.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
Injection-Date: Tue, 20 Dec 2022 17:09:44 -0000 (UTC)
Injection-Info: reader01.eternal-september.org; posting-host="2c0a8806d2bb2ec1b1ca9c464c555ccb";
logging-data="791409"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+h2NFuwvaCOwgrkkd9bRCa"
User-Agent: tin/2.0.1-20111224 ("Achenvoir") (UNIX) (Linux/3.10.17 (x86_64))
Cancel-Lock: sha1:9CuJHR0X3k6GkooglyNyufnsKI4=
 by: Rich - Tue, 20 Dec 2022 17:09 UTC

Helmut Giese <hgiese@ratiosoft.com> wrote:
> Hi heinrichmartin,
>
>>You meant tcl::chan::string, didn't you?
> ähem, no - I really meant memchan.
>
>>I remember me also quitting these memchans, but I cannot recall the
>> exact reason/problem.
>>Can your issue be reproduced/presented with feasible effort?
> I only did really naively something like
> set chan [tcl::chan::memchan]
> set txt <some file>
> puts $chan $txt
> while {[gets $chan line] >= 0} {
> puts "[incr lineNumber]: $line"
> }
> which didn't work.

You forgot to 'seek $chan 0' there to rewind the channel to the
beginning before trying to read it. You should have gotten an eof
immediately with that code, which would be why it did not seem to work.

$ rlwrap tclsh
% package require tcl::chan::memchan
1.0.4
% set chan [tcl::chan::memchan]
rc0
% set txt "line 1\nline 2\nline 3\n"
line 1
line 2
line 3

% puts $chan $txt
% seek $chan 0
% while {[gets $chan line] >= 0} {
puts "[incr lineNumber]: $line"
}
1: line 1
2: line 2
3: line 3
4:
%

Re: Read from memory like from a file

<tnsqdp$o4rh$2@dont-email.me>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=10405&group=comp.lang.tcl#10405

  copy link   Newsgroups: comp.lang.tcl
Path: i2pn2.org!i2pn.org!eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
From: ric...@example.invalid (Rich)
Newsgroups: comp.lang.tcl
Subject: Re: Read from memory like from a file
Date: Tue, 20 Dec 2022 17:12:25 -0000 (UTC)
Organization: A noiseless patient Spider
Lines: 34
Message-ID: <tnsqdp$o4rh$2@dont-email.me>
References: <ooduph5jbv4pakrov4m1d6otlh9ajb6cg5@4ax.com> <r9guph11otsp1tnf37louqq7kk8b5k5tti@4ax.com> <398501a0-397b-473d-85e7-025264cfd6c9n@googlegroups.com> <vco3qhhi9btmudamba41kvgt3sjq9tshk1@4ax.com> <ygaa63inho8.fsf@akutech.de>
Injection-Date: Tue, 20 Dec 2022 17:12:25 -0000 (UTC)
Injection-Info: reader01.eternal-september.org; posting-host="2c0a8806d2bb2ec1b1ca9c464c555ccb";
logging-data="791409"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/sxw4aBMMPAxO5qg30HlcX"
User-Agent: tin/2.0.1-20111224 ("Achenvoir") (UNIX) (Linux/3.10.17 (x86_64))
Cancel-Lock: sha1:60tP/T1Dchx02hjmbVyugQHyB5Y=
 by: Rich - Tue, 20 Dec 2022 17:12 UTC

Ralf Fassel <ralfixx@gmx.de> wrote:
> * Helmut Giese <hgiese@ratiosoft.com>
> | >I remember me also quitting these memchans, but I cannot recall
> | >the exact reason/problem.
> | >Can your issue be reproduced/presented with feasible effort?
> | I only did really naively something like
> | set chan [tcl::chan::memchan]
> | set txt <some file>
> | puts $chan $txt
> | while {[gets $chan line] >= 0} {
> | puts "[incr lineNumber]: $line"
> | }
> | which didn't work.
>
> Playing around with that it seems that the input and output positions
> of the stream share a common state, i.e. after the 'puts $chan $txt'
> the reading side is also at EOF.
> If you do a seek to the beginning
>
> puts $chan $txt
> chan seek $chan 0
>
> prior to the following gets, you can read the $txt line by line.

Assuming that 'memchan' presents the usual file semantics, then this is
identical to how one has to access a file. Writing data leaves the
file pointer at EOF, and to read previously written data requires [1]
seeking back to the beginning (or the start of the part that is to be
reread).

Just normal file semantics.

[1] As well as the file having been opened in read/write mode -- which
memchan's seem to be default read/write.

Re: Read from memory like from a file

<j464qh5mnlocf4a3novp96q5ae9fp8jj1j@4ax.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=10406&group=comp.lang.tcl#10406

  copy link   Newsgroups: comp.lang.tcl
Path: i2pn2.org!i2pn.org!eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
From: hgi...@ratiosoft.com (Helmut Giese)
Newsgroups: comp.lang.tcl
Subject: Re: Read from memory like from a file
Date: Tue, 20 Dec 2022 21:21:24 +0100
Organization: ratiosoft
Lines: 27
Message-ID: <j464qh5mnlocf4a3novp96q5ae9fp8jj1j@4ax.com>
References: <ooduph5jbv4pakrov4m1d6otlh9ajb6cg5@4ax.com> <r9guph11otsp1tnf37louqq7kk8b5k5tti@4ax.com> <398501a0-397b-473d-85e7-025264cfd6c9n@googlegroups.com> <vco3qhhi9btmudamba41kvgt3sjq9tshk1@4ax.com> <tnsq8o$o4rh$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Injection-Info: reader01.eternal-september.org; posting-host="600462432e3aaad548213d86ae053ef3";
logging-data="832846"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+a84B5/ygK2NVCTK4YGihJ"
Cancel-Lock: sha1:N8T/+AhUH6c8F69D/Iipv7S2UPY=
X-Newsreader: Forte Free Agent 1.93/32.576 English (American)
 by: Helmut Giese - Tue, 20 Dec 2022 20:21 UTC

>You forgot to 'seek $chan 0' there to rewind the channel to the
>beginning before trying to read it. You should have gotten an eof
>immediately with that code, which would be why it did not seem to work.
>
> $ rlwrap tclsh
> % package require tcl::chan::memchan
> 1.0.4
> % set chan [tcl::chan::memchan]
> rc0
> % set txt "line 1\nline 2\nline 3\n"
> line 1
> line 2
> line 3
>
> % puts $chan $txt
> % seek $chan 0
> % while {[gets $chan line] >= 0} {
> puts "[incr lineNumber]: $line"
> }
> 1: line 1
> 2: line 2
> 3: line 3
> 4:
> %
Tcl never ceases to surprise me. Thank you both, Rich and Ralf, for
teaching me.
Helmut

1
server_pubkey.txt

rocksolid light 0.9.8
clearnet tor