Short: curl 8.23.0 + libcurl, HTTPS via AmiSSL Author: Daniel Stenberg et al. (curl), Matthias Muench (Port) Uploader: curl amigaworld de (Matthias Muench) Type: comm/tcp Version: 8.23.0 Requires: bsdsocket.library v4 TCP/IP stack, AmiSSL 5.27+ (68020+ builds) Architecture: m68k-amigaos >= 3.0.0 Distribution: Aminet 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. 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 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.