It assumes a pretty simple format for the Content-Disposition header, which is most of the time not true. Meanwhile curl has a new option called --remote-header-name (or just -J), which does exactly what we intend ... ie. takes the filename for the --remote-name option from the Content-Disposition header. Actually even this option of curl was flawed at some point. So to be sure you might take the matter into your own hands and use a proper sed command to fetch the filename from the Content-Disposition line:

You might have noticed that my regular expression allows for some irregularities in the Content-Disposition header (eg. HTTP headers should not start with a whitespace ... unless it's a folded header which started in a previous line). That's totally intentional.

Using the above technique you can easily download files from Sourceforge too.
Eg. to download the latest sources of LAME (mp3 codec), use this: