Saldl Versions Save

A lightweight well-featured CLI downloader optimized for speed and early preview.

v31

8 years ago

With minor changes, mostly in the build script. saldl now builds and runs without issue in the most popular BSD flavors.

A couple of fixes and some minor changes were also committed.

Highlights

  • Always print the URL even if info lookup fails (b91dcc519118e26a72b7663c469c8e16ac1007c9).
  • [Fix] Don't pass variables that might contain '%' to a format string. This caused crashes in Windows (0aaa59a536bc0e2a57a8bea60126eb2e2db283f3).
  • [build] Add --enable-static configure option (94017c507b6695583bc0c35c76d07c76cd57b2fe).
  • [build] Support non-default prefixes like /usr/pkg if set by pkg-config (4480e64a092a3a4f001c35bf1fe6f012ef5dad0f).
  • [build] Support non-default prefix RPATHs if set by pkg-config (4480e64a092a3a4f001c35bf1fe6f012ef5dad0f).
  • [BSD] Avoid a pthread_join() call returning EDEADLK in the BSDs (1d73a7c90a249c3f96a8869428a6759c5e3c329f).

v30

8 years ago
  • [new] --custom-headers and --proxy-custom-headers options: You can add one or more headers at a time multiple times. Consult the man page for details (b2236cdc5bf65c70643c08f87871c35365a58359).
  • [fix] Fix resuming from single mode to non-single mode: The status of initially merged chunks was not set due to old refactoring of the resume code (1e06ed8edc635b4de068465fd4ad4fe86a971411).
  • [minor] Don't fail if tmp dir was left-over if we're not going to use its files. Even if chunk size was changed. That is, don't fail if we are using single mode or mem bufs in this session (a0524ee53ea0721b844ae85e4c5aa70ace34ae56).

v29

8 years ago

The highlight of this release is Mac OSX support. saldl should have always worked with OSX. But an erroneous compiler define broke the build.

With the help of Homebrew, installing the latest release of saldl in OSX should be trivial:

brew install https://github.com/saldl/saldl/raw/master/OSX/saldl.rb

Other changes in this release include:

  • [FIX] Don't strip GET attrs if it will lead to empty filename (a3ead444d93147f4cd7ae6e6cce595bd73cfd22e).
  • [NEW] Implement -g / --filename-from-redirect (376b449762541d392195d7c01c3cbed30f43d734).
  • [BUILD] wscript: Add --saldl-version configure option (ff38478e37e99a72560bfff49a141ae3f51d5334).

v28

8 years ago
  • Fix single mode downloads with -m / --memory-buffers passed.

v27

8 years ago

HIGHLIGHTS

  • Fix status logging to non-tty stderr (726ab0ada36dae208a47ce76e21469b1d0e04b41).
  • Wrapper scripts that hook saldl with FlashGot are available now (821f14ea0ed437bae8e21c3e47eb2a034710c69e).
  • Go back to using redirected URL in subsequent requests (ff06035e525d331c23a091a9f1873f11c8350a5c)
  • Implement --read-only to test saldl's performance without writing to disk (1e1429361c7c2e2a6ac22aed2ecd9f612f16649e)
  • saldl should build successfully now in MSYS2. A PKGBUILD is available (fde0e0bbaa9d04e2c3d8d79cb644e6bf1fc4bd67 & 2f3164142831b8d87b51b1ea85cdf2a2350e4f79)
  • Reduce CURLOPT_LOW_SPEED_TIME from 15 seconds to 10: (0e344c68b0c172869ca6ab5a8b0c80dcb5d0e334)
  • MinGW-w64: Use MSVCRT's fprintf() instead of the slow ANSI implementation (ffe15028433db7e2b0a6f69f216b256675ac1baa)

v26

8 years ago

Highlights

  • If libcurl>=7.45 is available, saldl will assume https if the URL passed does not include a protocol (6511c9535d501f73315261ef471c8be6d97b8e92). e.g. "google.com" => "https://google.com"
  • saldl will not use the effective URL in subsequent requests if a redirect is detected (98b6b6716704c34040f38b4bccd5c79662b94e33).
  • Make sure loaded libcurl is recent enough (b5044e84219907bf914f543dfcff2a784ed669eb).
  • Print supported protocols in the loaded libcurl with --version (1a90edf6ab5437909b94d04d086c9f0456fab3bc).

Binaries

MinGW binaries statically linked with newly-released libcurl 7.45.

v25

8 years ago

One of the two fixes in v24(e6a5c6ce77414ace27f3ce92015b486fde796f80)actually caused more breakage (crashes, weird errors).

This is fixed now.

v24

8 years ago

Fixes

  • e6a5c6ce77414ace27f3ce92015b486fde796f80 Fix possible crash caused by double free() in headers_info(). And make sure this never happens again.
  • c1e0b6577fadee421af05088c58648a3868b9539 Don't assume download was finished in a previous run if done size and (remote) file size are both zero.

v23

8 years ago

Checks

A lot of checks were added to make sure standard library functions are not returning errors for some reason.

Fixes

  • saldl_fflush() wasn't called after fwrite() if memory buffers were used.
  • Don't crash if a resumed download had already merged all chunks in a previous session.

v22

8 years ago

A strict check that was added in the last commit in v20(618f1ae) caused some unexpected false-positive failures. Especially with compressed content and dynamic sites.

This eventually proved to be very useful as we now explicitly cover many corner cases.

saldl now intentionally fails with:

saldl https://google.com --no-decompress

Google (at least with HTTP/2) seems to set Content-Length if we ask for compression. But the value of Content-length seems to be always slightly different from second to second.

This behavior instantly renders the remote info we acquire before downloading outdated. That's why saldl intentionally fails with --no-decompress in this case. And a suggestion to use --no-remote-info is offered.