rockdaboot / mget

Multithreaded metalink/file/website downloader (like Wget) and C library
GNU Lesser General Public License v3.0
112 stars 19 forks source link

Build Status Coverity Scan Status

Development moved to Wget2

This project is just kept as history, please move to the Wget2 project

Mget - multithreaded metalink / file / website downloader / spider and library

This is a multithreaded Wget-like tool and library written in C.

Designed and written from scratch it requires a C99 and Posix compliant development environment.

Included is the stand-alone library libmget which provides an interface to many useful functions used by Mget.

The originally purpose was to help out on Wget2 development (refactoring, modern and clean code, new technology, new design).

In many cases Mget downloads much faster than Wget1.14 due to HTTP zlib compression, parallel connections and use of If-Modified-Since HTTP header.

It consumes less system and user CPU cycles due to larger buffers and buffer recycling.

License

Mget is licensed under GPLv3+.
Libmget is licensed under LGPLv3+.

Contact

Project
Website
Mailing List

To join the mailing list send an email to

mget-bugs+subscribe@googlegroups.com

and follow the instructions provided by the answer mail.

Or click join.

Development Status

Mget has already many features that go beyond what Wget provides.

An incomplete list of implemented features:

Anybody should feel free to contribute ideas, opinions, knowledge, code, tests, etc.

Not yet implemented

The following is just a quick list of ideas and todos.
The mid-range goal is to come as close to Wget, that Wget's units test work for Mget.

Some ideas of what could be done next (but contact me before you start bigger changes!):

Requirements

The following packages are needed to build Mget:

The versions are recommended, but older versions may also work.

Building from git

Download project and prepare sources with

    git clone http://github.com/rockdaboot/mget
    ./autogen.sh

Build Mget with

    ./configure
    make

Test the functionality

    make check

Install Mget and libmget

    sudo make install (or su -c "make install")

To create Mget HTML documentation

    ./configure --enable-gtk-doc
    make

To create Mget HTML documentation and man pages

    ./configure --enable-gtk-doc --enable-man
    make

Valgrind Testing

To run the test suite with valgrind memcheck

    TESTS_ENVIRONMENT="VALGRIND_TESTS=1" make check

or if you want valgrind memcheck by default

    ./configure --enable-valgrind-tests
    make check

To run single tests with valgrind (e.g. test-k)

    cd tests
    VALGRIND_TESTS=1 ./test-k

Why not directly using valgrind like 'valgrind --leak-check=full ./test-k' ? Well, you want to valgrind 'mget' and not the test program itself, right ?

Documentation

There is no own documentation yet, but Mget aims to be Wget1.14 compatible.

    mget --help

prints the usage and the current set of integrated options. For more info, see the man pages of Wget.

The Mget library API documentation has been started.