gcc config.cpp keyboard.cpp nntp.cpp pop.cpp smtp.cpp socket.cpp
socket.hpp
sock.h spoon.cpp spoon.h -o spoon.test
I'm trying to compile some software from source and hitting errors. It seems like it's missing files and I think some of the issue was the
compile files were looking for lower case named files but the zip of the source code had files saved in upper case. I changed the files to
lowercase then ran this best guess.
Note, I've not used gcc much at all.
gcc config.cpp keyboard.cpp nntp.cpp pop.cpp smtp.cpp socket.cpp
socket.hpp sock.h spoon.cpp spoon.h -o spoon.test
soupgate?
I succesfully compiled it on Linux some years ago. Does it work with g++ as apam mentioned. If not I have it zipped as a backup and can look if I made any changes to get it compile. I might discovered some bug, I'm not sure anyomre if it was soupgate or some other software I used with soupgate or just the pktview tool.
Given they are c++ files, not plain c, you might have better luck with
g++
g++ is the C++ compiler, gcc is C compiler.
On 15 Jan 2021 at 12:57p, Oli pondered and said...
soupgate?
I succesfully compiled it on Linux some years ago. Does it work
with g++ as apam mentioned. If not I have it zipped as a backup and
can look if I made any changes to get it compile. I might
discovered some bug, I'm not sure anyomre if it was soupgate or
some other software I used with soupgate or just the pktview tool.
Soup, The version that's avail from the website is not the latest it seems and missing some authenticated login to NNTP that I'm after :(
Thanks for the info and offer :)
So spoon would be the replacement for VSoup? It can feed/create soup packets to/from nntp and smtp/pop3 servers?
Is there a NNTP server that serves these gated messages (from FSXnet?)
and can I (anyone) access it? I'm interested how well the gating works.
gcc config.cpp keyboard.cpp nntp.cpp pop.cpp smtp.cpp socket.cpp socket.hpp sock.h spoon.cpp spoon.h -o spoon.test
The docs say there should be a suggested make shell script for gcc with it, but this seems to be missing in the zip.
In file included from spoon.h:115,
from config.cpp:38:
socket.hpp:73:10: fatal error: iostream.h: No such file or directory
#include <iostream.h>
The docs say there should be a suggested make shell script for gcc
with it, but this seems to be missing in the zip.
There is no `makefile` or `Makefile`? That's unfortunate.
2) <iostream.h> has itself been deprecated for almost 25 years
(since the first official C++ standard in 1998) and compilers
are starting to ship without it. The replacement is <iostream>
(without the ending ".h"), but you'll almost certainly have to
add a, "using namespace std;" somewhere in source files that
include it, as code that's old enough to use <iostream.h> is
probably also old enough to predate the widespread use of C++
namespaces.
Hmm. There really ought to be a Github organization or
something for ancient BBS software updated to compile on
modern systems.
makespoon which is just
g++ spoon.cpp config.cpp keyboard.cpp nntp.cpp pop.cpp smtp.cpp
socket.cpp -o spoon
I think this is what I did some years ago. See https://gitlab.com/fidosoft/soupgate
I still get warnings like:
$ ./makespoon
spoon.cpp:60:7: warning: built-in function ‘logf’ declared as non-function [-Wbuiltin-declaration-mismatch]
FILE *logf = NULL;
^~~~
spoon.cpp: In function ‘void checkdir(char*)’:
spoon.cpp:143:69: warning: ISO C++ forbids converting a string constant
to ‘char*’ [-Wwrite-strings]
logprintf("FATAL ERROR: subdirectory %s does not exist\n", dir);
but it compiles and run.
It would be good to have people available who can help to get things
build again. I think most of the time the errors are not very hard to
fix, if you know C(++) and know what's changed over the years. For
people without C experience (like me) it's sometimes hard to figure out how to fix it properly without introducing new bugs.
I still get warnings like:
$ ./makespoon
spoon.cpp:60:7: warning: built-in function ‘logf’ declared as
non-function [-Wbuiltin-declaration-mismatch]
FILE *logf = NULL;
^~~~
Ah, this is due to an unfortunate name. `logf` is the
name of a function from the standard math library
(single-precision floating point natural logarithm),
spoon.cpp: In function ‘void checkdir(char*)’:
spoon.cpp:143:69: warning: ISO C++ forbids converting a string
constant to ‘char*’ [-Wwrite-strings]
logprintf("FATAL ERROR: subdirectory %s does not exist\n",
dir);
but it compiles and run.
This is a single type error. `logprintf` is probably
defined to take `char *` as its first argument; this
warning is saying that one is passing a string constant
as that argument, but that the function is defined so
that it could mutate the thing it points to. The fix
here is to add a `const` qualifier to the argument.
void logprintf(const char *s, ...);
compiles, but so does
void logprintf(char const *s, ...);
gcc config.cpp keyboard.cpp nntp.cpp pop.cpp smtp.cpp socket.cpp socket.hpp sock.h spoon.cpp spoon.h -o spoon.test
Generally speaking, you don't try to compile header files
(.hpp or .h) directly. Rather, those are usually meant to
be "included" in a source file that is then compiled.
Running `gcc` by itself may well be just fine, as it's
user-level programs...I digress). But running g++ or
c++ is also fine and certainly won't hurt anything.
There is no `makefile` or `Makefile`? That's unfortunate.
I'd try pulling the headers off of the command line first to
see if that helps.
If the tarball of the file in question is available somewhere,
I might be able to pull of a few cycles to see if I can get it
to compile.
At the heart of all this is my need to find Linux alternatives to what I currently run on Win32 to parse FTN PKTs in/out of
my NNTP server. For
A thought - you should be able to get Syncronet being your NNTP to FTN gateway.
It works well (I'm using it to get some newsgroups from eternal september).
On 21 Jan 2021 at 10:24p, deon pondered and said...
A thought - you should be able to get Syncronet being your NNTP to
FTN gateway.
It works well (I'm using it to get some newsgroups from eternal
september).
OK thanks, yeah I'll keep it up my sleeve as a plan B, C or D :)
There is also ifgate, fidogate, watergate as plan E, F, ...
On 22 Jan 2021 at 08:35a, Oli pondered and said...
There is also ifgate, fidogate, watergate as plan E, F, ...
It might yet come to that.
I wish I weren't so darn tired tonight.
Just in case, there is a fidogate fork with regular updates on github: https://github.com/ykaliuta/fidogate
Watergate looked really nice, but the last release is pretty old. It
would be a
I've spent a further 3 hours today trying to get various versions of soupgate for linux to work correctly and also soup.[...]
In sum,
3 hours I can't get back :)
Seems problematic to get two linux versions of files working.
I may well soon turn attention to researching and trying to get another option working for linux.
On 22 Jan 2021 at 09:53a, Oli pondered and said...
Watergate looked really nice, but the last release is pretty old. It
would be a
where do I find this one?
Could it be some kind of 64-bit problem? If I find the time I will try soupgate
on 32bit and 64bit.
It's not unlikely that fidogate will get you a running and stable system faster
than soupgate, even it takes some time to learn and configure it. But I have never used it, just guessing.
On 23 Jan 2021 at 10:02a, Oli pondered and said...
It's not unlikely that fidogate will get you a running and stable
system faster
than soupgate, even it takes some time to learn and configure it.
But I have never used it, just guessing.
It seems like quite a beast in that it also offers not just gating but tossing etc. as well. I'm well down the path of setting up HPT as a
tosser so not really wanting to use that aspect of Fidogate if I don't
need to. But who knows.
It's a bit disheartening trying to get what is a simple process involving two exe files in windows working on Linux.
On 23 Jan 2021 at 10:02a, Oli pondered and said...
Could it be some kind of 64-bit problem? If I find the time I will
try soupgate
on 32bit and 64bit.
I'm running Debian Buster X86_64 on this box.
If there's something I need to do to compile the source differently or ? I'd be open to ideas. Thanks :)
on 32bit and 64bit.
I'm running Debian Buster X86_64 on this box.
If there's something I need to do to compile the source differently
or ? I'd be open to ideas. Thanks :)
there are a bunch of variables defined as "long", which I think are
64-bit integers on 64-bit Linux and 32-bit on 32-bit Linux. I'm not sure that it makes a difference for soupgate/spoon, but you could try the -m32 parameter with gcc/g++
found the first problem in pktview. It doesn't show the correct header correct in the 64-bit version. We should assume the 64-bit build is
broken for soupgate and spoon too until otherwise proven.
On 23 Jan 2021 at 10:02a, Oli pondered and said...
Could it be some kind of 64-bit problem? If I find the time I will
try soupgate
on 32bit and 64bit.
I'm running Debian Buster X86_64 on this box.
If there's something I need to do to compile the source differently or ? I'd be open to ideas. Thanks :)
could you test, if a 32-bit compile works? pktview does work form me
with "gcc -m32" even on 64-bit Debian:
On 24 Jan 2021 at 04:14p, Oli pondered and said...
could you test, if a 32-bit compile works? pktview does work form me
with "gcc -m32" even on 64-bit Debian:
Just so I'm clear, I need to be running a 32bit version of Linux to do the compile and testing?
Or are you asking me to just run the compile commands on Debian 64bit and then see if it works?
Just so I'm clear, I need to be running a 32bit version of Linux to do compile and testing?
no, you don't.
Or are you asking me to just run the compile commands on Debian 64bit then see if it works?
yes
I can also send you the built binaries. They have been compiled on Debian Testing (Bullseye), but I think they should work.
10-4
Is this using the main source files from the website or using your git repo?
I can also send you the built binaries. They have been compiled on
Debian Testing (Bullseye), but I think they should work.
Yep feel free to drop them in a filebox to 21:1/100 if able.
what is the URL of the website anyway? I don't remember where I
downloaded soupgate.
you need the fixes in the git repo.
ok. I'll send a zip.
what is the URL of the website anyway? I don't remember where I
downloaded soupgate.
http://software.tomsweb.net/soupgate.html
ok. I'll send a zip.
ok. I'll send a zip.
done.
apt install gcc-multilib g++-multilib
g++ -m32 spoon.cpp config.cpp keyboard.cpp nntp.cpp pop.cpp smtp.cpp socket.cpp
-o spoon
gcc -m32 soupgate.c config.c lists.c pkt.c import.c export.c -o soupgate gcc -m32 pktview.c -o pktview
I have not yet tested export for soupgate nor posting the exported files (assuming they work)
1 messages exportedmail: 0 news: 1
I tested an export of a packet from HPT and this seemed to work
Exporting from ?UT/?LO to Soup
Exporting Type 2+ packet from 3:770/1 to 3:770/3
1 messages exportedmail: 0 news: 1
spoon appeared to work puling down messages from NNTP.[...]
--- Spoon-Linux v1.06 Tue 26-Jan-2021 20:59:34
Fetching news from xxx.xxx.xxx.xxx
* Fetching alt.bbs.mystic
There are 1 new messages (5896-5896) in this newsgroup.
soupgate import failed and reported this error[...]
--- SoupGate-Linux v1.06 Tue 26-Jan-2021 21:01:02
Importing from Soup to PKT
Importing alt.bbs.mystic
Error reading /hub/gateway/soup/00000000.msg
No inbound messages found. Nothing to do.
at the end of running import it appears to delete the AREAS file that
spoon created..
I can also see three 0kb files created when I ran the import called
00000000.TMP
00000001.TMP
00000002.TMP
I wonder why it cant read the files it's trying to import.
I have not yet tested export for soupgate nor posting the exported files (assuming they work)
Importing from Soup to PKT[...]
Importing alt.bbs.mystic
Error reading /hub/gateway/soup/00000000.msg
No inbound messages found. Nothing to do.
Could you send me (or put on hold) a zip with some Soup messages so I
can try to import them and see if I find the error?
at the end of running import it appears to delete the AREAS file that spoon created..
It looks soupgate doesn't handle errors not always gracefully.
I can also see three 0kb files created when I ran the import called
00000000.TMP
00000001.TMP
00000002.TMP
I wonder why it cant read the files it's trying to import.
me too :)
I successfully exported a PKT file to Soup, at least the Soup files
looked fine (as far as I can tell). But my soupgate doesn't find
anything, if I use the /pkt=pktdir parameter.
Posting news to xxx.xxx.xxx.xxx~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Posting article to nz.test
NNTP host returned error: 441 435 Duplicate
! NNTP server did not accept message
free(): double free detected in tcache 2
Aborted
Despite the failed post Spoon is not exiting correctly. This has been the same error I have seen in all my test compiles.
[snip]
Spoon did try to post the packet, NNTP (rightfully) said No.
Posting news to xxx.xxx.xxx.xxx
* Posting article to nz.test
NNTP host returned error: 441 435 Duplicate
! NNTP server did not accept message
free(): double free detected in tcache 2
Aborted
Despite the failed post Spoon is not exiting correctly. This has been the same error I have seen in all my test compiles.
free(): double free detected in tcache 2
Aborted
Not sure what that is or how to fix, but I can report when Soupgate creates an exported message it generates a number of .MSG files holding the gated posts to be sent to the NNTP and a REPLIES file that acts like an index of all the .MSG files to be sent.
On a successful post session using Spoon the REPLIES should be deleted. But much like the error with Soupgate importing messages the REPLIES file remained undeleted.
On 26 Jan 2021 at 09:21p, Avon pondered and said...
free(): double free detected in tcache 2
Aborted
Sorry, I haven't been keeping up here, but this is a bug
in that software: the code is simply mismanaging memory.
The solution here is to find the bug and fix it; sadly,
much of this stuff is an unmaintained mess.... But trying
a 32-bit build won't fix it, as was suggested earlier.
Well, a thing to try is to build it with one of the memory
sanitizers turned on and see if you can find the location
of the first free and the second; simply nil'ing out the pointer
will likely move past _that_ problem, as free(NULL) is a no-op.
But a more general problem is that none of this stuff was written
to be memory safe; short of a substantial refactoring of the
code, I suspect things like this will keep cropping up.
Could you send me (or put on hold) a zip with some Soup messages so I
can try to import them and see if I find the error?
* Origin: . (21:3/102)
! NNTP server did not accept message~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
free(): double free detected in tcache 2
Aborted
Despite the failed post Spoon is not exiting correctly. This has been same error I have seen in all my test compiles.
I think we need help from a Professional
Sorry, I haven't been keeping up here, but this is a bug
in that software: the code is simply mismanaging memory.
The solution here is to find the bug and fix it; sadly,
much of this stuff is an unmaintained mess.... But trying
a 32-bit build won't fix it, as was suggested earlier.
On a successful post session using Spoon the REPLIES should be delete But much like the error with Soupgate importing messages the REPLIES remained undeleted.
Well, a thing to try is to build it with one of the memory
sanitizers turned on and see if you can find the location
of the first free and the second; simply nil'ing out the pointer
will likely move past _that_ problem, as free(NULL) is a no-op.
But a more general problem is that none of this stuff was written
to be memory safe; short of a substantial refactoring of the
code, I suspect things like this will keep cropping up.
On 26 Jan 2021 at 09:43a, Oli pondered and said...
Could you send me (or put on hold) a zip with some Soup messages so
I can try to import them and see if I find the error?
* Fetching alt.bbs.mystic
There are 100 new messages (5797-5896) in this newsgroup.
Average CPS fetching news: 49428
* Fetching comp.sys.cbm
There are 101 new messages (3001-3101) in this newsgroup.
Average CPS fetching news: 162655
* Fetching comp.sys.raspberry-pi
There are 103 new messages (16600-16702) in this newsgroup.
Average CPS fetching news: 249909
I have created a file called oli-soup-imported-news.tar.gz
100 message(s) importedmail: 0 news: 100 lists: 0 junk: 0
101 message(s) importedmail: 0 news: 101 lists: 0 junk: 0
103 message(s) importedmail: 0 news: 103 lists: 0 junk: 0
SUCCESS!!!
103 message(s) importedmail: 0 news: 103 lists: 0 junk: 0
On 27 Jan 2021 at 10:30a, Oli pondered and said...
SUCCESS!!!
103 message(s) imported
mail: 0 news: 103 lists: 0 junk: 0
That's good stuff, if I pull down the latest version of the repo and compile it, do you think it would work for me too?
That's good stuff, if I pull down the latest version of the repo and compile it, do you think it would work for me too?
Yes, I forgot to mention that.
On 28 Jan 2021 at 08:50a, Oli pondered and said...
That's good stuff, if I pull down the latest version of the
repo and compile it, do you think it would work for me too?
Yes, I forgot to mention that.
Coolio, thanks Oli. I'll give it a try.
free(): double free detected in tcache 2
Aborted
Well, a thing to try is to build it with one of the memory
sanitizers turned on and see if you can find the location
of the first free and the second; simply nil'ing out the pointer
will likely move past _that_ problem, as free(NULL) is a no-op.
But a more general problem is that none of this stuff was written
I just committed and pushed some 64-bit fixes. It might now work without the -m32 flag too.
Came across a tool called Clang that has a -fsanitize=address option
I'm not really sure what I'm doing with this one :)
clang -fsanitize=address -O1 -fno-omit-frame-pointer -g spoon.cpp config.cpp keyboard.cpp nntp.cpp pop.cpp smtp.cpp socket.cpp pop.cpp:294:71: warning: format specifies type 'int' but the argument has type 'long' [-Wformat]
printf("Examining headers of message %d of %d...\n", i+1, nummessages);
~~
^~~~~~~~~~~
%ld
pop.cpp:382:22: warning: format specifies type 'int' but the argument has type 'long' [-Wformat]
i+1, nummessages, msglist[i].msgsize);
^~~~~~~~~~~
2 warnings generated.
Came across a tool called Clang that has a -fsanitize=address option
That's a C compiler.
2 warnings generated.
Compile time warnings. Easy to fix, but will not help with the NNTP bug. pop.cpp is for POP3 mail fetch.
On 29 Jan 2021 at 08:43p, Oli pondered and said...
Came across a tool called Clang that has a -fsanitize=address
option
That's a C compiler.
Oh OK, yeah I was trying to find a tool to follow up on Tensers
suggestion of looking for the double free memory issue.
I can understand how it can be a pain to try and track down as (if I understand this right) we're essentially looking for locations across the code where a variable is being called again but has already been closed/nulled? It seems like there are tools about that can check the
code on compile and alert to hints as to where/what may be going on?
Compile time warnings. Easy to fix, but will not help with the NNTP
bug. pop.cpp is for POP3 mail fetch.
Yep that's how I interpreted it also... interesting to see the issues in the pop code, not that I use it... I've been trying to understand the
nntp code and the area around when a post is made and then the error occurs.
2 warnings generated.
BY: Oli(21:3/102)
What's the git repo for these changes (I tried searching through the messages but didn't find it).
Also which pktview are you using? I'll try to fix that for 64-bit.
What's the git repo for these changes (I tried searching through the messages but didn't find it).
On 27 Jan 2021 at 02:59a, tenser pondered and said...
free(): double free detected in tcache 2
Aborted
Well, a thing to try is to build it with one of the memory
sanitizers turned on and see if you can find the location
of the first free and the second; simply nil'ing out the pointer
will likely move past _that_ problem, as free(NULL) is a no-op.
But a more general problem is that none of this stuff was written
Could you guide me as to how to do this?
I'm looking at the man for g++ but so far unsure how to enable a
sanitizer mode.
I'll keep poking and prodding :)
In other words, edit the `makesoup` shell script and add
`-g -fsanitize=address` to the `g++` or `c++` line.
Then, when you run the resulting binary, it should tell you
where the double-free occurs.
Sysop: | altere |
---|---|
Location: | Houston, TX |
Users: | 66 |
Nodes: | 4 (0 / 4) |
Uptime: | 10:43:32 |
Calls: | 728 |
Calls today: | 1 |
Files: | 7,667 |
Messages: | 295,534 |