[Top] / [eMule] / [light] / [0.29b Light.3]

MetMedic
eMule cleanup
eMule Light

0.29a Light.2
0.29b Light.3
0.29c Light.6

0.29b Light.0
0.29b Light.1
0.29b Light.2
0.29b Light.3
0.29b Light.4b
0.29b Light.5
0.29b Light.6
0.29b Light.7
0.29b Light.8

0.29b Light.3

[2003-07-06 22:30]

Light.3 is based on Light.2.

Fixed a bug in toolbar icons when IRC is compiled in.

Removed UI items that didn't have functional code behind them. Now all UI items that appear on screen actually work. Unfortunately I had to do resource file split in a way I had hoped to avoid.

Get language pack from cleanup.1 if you need it. en_US, de_DE, fr_FR and es_ES_T are compiled in.


I consider this the first Light version release that is not purely development release. This is because it appears to be very stable, and I removed the UI components that aren't functional anymore. Because of this, I will try to document this specific release better. My release documents have, afterall, become less and less informative in time, pretty much noting just the changes to earlier version and link to earlier version's documentation.

User documentation:

How to switch from another client to this mod?

Simple: download the executable, put that to your eMule application directory, and run it. You can rename it to emule.exe if you want to.

IMPORTANT!

As Light removes features, it also removes respective preferences options. It does not read nor write to preferences.ini the options it has removed. Therefore, if you decide to switch to official client or another mod from Light, the options that weren't used by Light will revert to default values.

Features added:

Known files list is checked for duplicate when a file is added to shared files list. Duplicated files' stats are merged, and the duplicate entries removed. Originally from eMule 0.29a[SF-VQB]-v0.33 (Tag: "SLUGFILLER: mergeKnown"), currently identical to 0.29b[SF-VQB]-v0.34.

Packet refragmentation was removed, hopefully providing better upload performance. Originally from eMule 0.29a[SF-VQB]-v0.33 (Tag: "SLUGFILLER: noRefrag"), currently identical to 0.29b[SF-VQB]-v0.34.

Dynamically loaded languages. Only four language stringtables are compiled in the executable, the rest can be added as Windows resource DLL's. If you want a language not listed above as compiled in, get the language pack and put appropriate dll's from there to a subdirectory named lang under your eMule application directory.

Multiple instances are supported. This is a dangerous feature, as no checkes are added to lock and/or synchronise eg. file access. This is useful if you want to run multiple clients from separate install dirs, with separate temp/incoming dirs. Shared files directories can be shared. If it crashes and corrupts your harddrive, it's not my problem. I do use multiple clients all the time, and needed this badly. (define: WITH_MULTIPLE_INSTANCES)

Features removed:

Webserver (define: WITH_WEBSERVER)

Scheduler (define: WITH_SCHEDULER)

IP Filtering (define: WITH_IPFILTER)

Webservices (links & webservices menu items) (define: WITH_WEBSERVICES)

Preview, Archive recovery and open file in shared files list (define: WITH_PREVIEW)

Splash-screen (define: WITH_SPLASH)

About-box and menuitem (define: WITH_CREDITS)

IRC client (define: WITH_IRC)

Developer documentation:

Dynamically loaded languages are implemented as a library, which in sources can be found from subdirectory lang under eMule sources. In that directory you'll find a solution lang.sln, which contains all language projects. If you want to build language dll's, just build appropriate language projects with Dynamic build configuration.

Language library project itself is, in addition to language solution, added to eMule solution, and eMule project has been made to depend on it.

All defines are found in config.h. Using normal eMule Debug/Release build configurations the configuration is as per standard mule, excepting the features I borrowed from SF-VQB (which I consider highly desireable, not excludable). Additional build configurations are Debug Light, Release Light, Release Light MC and Release Light IPF. Debug Light/Release Light build configurations exclude all features. Release Light MC includes multiple instances in addition, and Release Light IPF includes IP Filtering while excluding the rest.

Such resources that were removed using compile time directives have been moved to their own resource files, included into emule.rc using normal resource include directives but wrapped within #ifdef ... #endif to only include it in build configurations where it's needed. It's important to put compile time directives not just in build configuration's compiling options, but also in resource tool options, so that correct resources are used.

Where only parts of a dialog were removed using compile time directives, those dialogs were moved to res/emule.rc2, which is not editable using APS. I regret this, but didn't see other good ways to remove just single buttons or labels from dialog using compile time directives. Respective resource identifier symbols were moved from resource.h to emule_rc2.h.

Changes that aren't related to above features but are still in the code (nonfunctional changes) include:

Modification of MuleToolbar and emuleDlg so that the toolbar buttons aren't magic numbers, but are enumerated in MuleToolbar.h.

IRC and Webserver preferences have been split to separate classes. This is because preferences class has become quite large, and I considered smaller separate feature preference classes easier to manage.

Some code comments have been added here and there - mainly before symbol declarations, indicating which program units use those symbols.

Some unused resource symbol identifiers were removed. Two unused icon files (setupstats.ico, smallserver.ico) were removed, too.

Excluding language library, 16 files have been added and 81 files have been modified.