curl 8.23.0 for AmigaOS 3
=========================
curl transfers data with URLs: HTTP(S), FTP(S), and many more protocols,
from the Shell or from scripts. This is curl 8.23.0 (released 14.10.2026)
with its static library libcurl, built with GCC 13.4 for five CPU levels.
* HTTPS and the other TLS protocols through AmiSSL 5 (68020 and up),
certificates checked against AmiSSL:Certs
* no FPU needed in any build
* works with a 4 KB Shell stack (curl sets up 64 KB itself)
* AmigaDOS paths everywhere: volumes, assigns, "/" for the parent
directory, file:///RAM:file URLs
* Ctrl-C stops a running transfer
* no ixemul, no usergroup.library
Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs
ipns mqtt mqtts pop3 pop3s rtsp smtp smtps telnet tftp ws wss
(the 68000 build has no TLS, so none of the "s" variants).
Installation
------------
Copy the curl for your CPU to C:
CPU copy
68000 / 68010 C/curl.000 (no TLS)
68020 C/curl.020
68030 C/curl.030
68040 / 68LC040 C/curl.040
68060 / 68LC060 C/curl.060
68080 (Vampire) C/curl.060 (curl.040 works as well)
for example
Copy curl/C/curl.060 C:curl
The 68020-68060 builds need AmiSSL 5.27 or newer (amisslmaster.library
v5). With an older AmiSSL 5 they stop at startup with a message from
AmiSSL.
Memory: a running curl needs about 1 MB without TLS. With TLS it needs
about 1.3 MB if AmiSSL is already in memory and up to 4.6 MB if curl has
to load it. A machine with 4 MB of Fast RAM is not enough for HTTPS.
Usage notes
-----------
curl https://aminet.net/
curl -O https://example.com/file.lha
curl -L -o RAM:page.html https://example.com/
curl --output-dir Work:Download -O https://example.com/file.lha
* Character set: curl does not convert anything. What you type is sent
as Latin-1 (-d, -H, -u, -F, file names); umlauts in URLs become %FC
etc. UTF-8 pages show up garbled in the Shell window.
* Progress meter: it is 79 characters wide. In a narrower Shell window
every update goes to a new line - use a wider window, -# or -s.
* Requesters: a missing volume (-o NOVOL:x) or a full disk opens the
usual system requester; in a script curl waits until it is answered.
* Environment: http_proxy, HOME, CURL_HOME, CURL_CA_BUNDLE etc. are
read from ENV: (SetEnv). .curlrc is looked for in $HOME/$CURL_HOME.
* File names from -O and -J (URL, Content-Disposition) are cut after
the last "/", "\" or ":", so a server cannot write to S:, LIBS: or
another volume.
* No IPv6, no HTTP/2, no --compressed (no zlib), no IDN.
For programmers
---------------
Libs/libcurl.a.<cpu> are static libraries built with clib2; your program
has to use clib2 as well (-mcrt=clib2), libnix does not work. Headers are
in Include/, the AmiSSL link libraries (one build for all TLS CPUs) in
Libs/.
m68k-amigaos-gcc -m68020 -msoft-float -mcrt=clib2 -Icurl/Include \
-o prog prog.c curl/Libs/libcurl.a.020 \
-Lcurl/Libs -lamisslstubs -lamisslauto -lnet -lm \
-Wl,--allow-multiple-definition
* the 68000 build needs no -lamisslstubs/-lamisslauto
* 68030/040/060: compile with the CPU flag, link with -m68020 (only the
libm020 multilib is FPU-free)
* call curl_global_init() once at program start (not thread-safe)
* use the headers of the AmiSSL 5.27 SDK
Docs/README.txt (German) has all details of the port and the build.
Port changes
------------
curl already supports AmigaOS (bsdsocket.library, AmiSSL backend). Six
small patches (Build/port/patches) fix what testing found on AmigaOS 3:
* -O/-J: names like "RAM:x" or "S:x" from the server were absolute
* cookie jar, HSTS and alt-svc files were never written (AmigaDOS
Rename() does not replace an existing file)
* Ctrl-C was ignored during transfers
* --output-dir RAM: failed, "dir/" wrote to the wrong directory
* file:///RAM:file asked for a volume named "/RAM"
* -z <file> sent the year 2106 (clib2 time_t is unsigned)
Build fixes: realpath() is disabled (clib2 wrote its result to address 0
when called with a NULL buffer, which froze the machine on --cacert);
the AmiSSL autoinit is built with -fno-inline (it passed a broken tag
list, every TLS build crashed); clib2's stdarg.h uses the GCC builtins
(va_start was broken with GCC 13). Build/ has the scripts, the patches
and the container files for the toolchain.
Tested
------
* AmigaOS 3.2 in Amiberry with AmiSSL 5.27: 68000 build on a 68000
(A500 Kickstart, ECS), 68020/030/040 builds on matching CPUs; a test
suite with 70 tests per build: AmigaDOS paths and volumes, character
set (raw bytes checked at the server), date and time zone, console,
Shell quoting, return codes, Ctrl-C, memory leaks, parallel
instances, network errors and time-outs, proxy from ENV:,
dict/gopher/FTP, TLS 1.2/1.3. All passed (Docs/AMIGATEST.txt).
* Vampire V4 Standalone (68080, AmigaOS 3.2.3, Roadshow 1.15, AmiSSL
5.27): basic network/TLS test with all builds, full suite with the
68060 build. All passed.
* no memory lost after 20 HTTP, 10 HTTPS calls and after Ctrl-C
Not yet tested on a real 68000-68060, with other TCP/IP stacks than
Roadshow (AmiTCP, Miami, Genesis), or on Kickstart 3.0/3.1.
Reports welcome.
History
-------
8.23.0 (15.10.2026) first release
License
-------
curl: curl license (MIT style), see COPYING, (c) Daniel Stenberg and
contributors. The TLS builds contain the AmiSSL link stubs, Apache
License 2.0, see LICENSE.AmiSSL. Amiga patches and build files (c) 2026
Matthias Muench, under the curl license.
|