*** *** *** *** *** *** *** *** *** *** *** ***

FAST! File Weeder 1.3 - Copyright (C) 2002 Bumblebee

        Contents:

        1. Introduction
        2. Features
        3. Usage
        4. History
        5. Known Issues

*** *** *** *** *** *** *** *** *** *** *** ***


        1. Introduction

        This is a file weeder using MD5 (RFC1321). It's intended to be fast
and low memory consuming. For this purpose it is optimized for win32 systems
(if you're very interested about porting it to another 32 bits systems lemme
know). If you wanna send me a bug report or whatever, try to find someone
that can find me.

        This program is freeware and is provided "as is". Any kind of implied
or express warranties are disclaimed. This program is intended to be used,
so feel free to redistribute it in any way.

        I coded this weeder as challenge between me and my good friend
VirusBuster. Many thanks to him for his support and help while developing
this little tool.

        At current point of the development, fweeder is one of the fastest
file weeders using MD5 under win32 systems.

        VS2000 distribution is the prefered place to get FAST! File Weeder
releases, but since version 1.2 you can get them also from simtel.net.


        1. Features

o Intended to be fast al low memory consuming.

o It uses MD5 as secure hash function.

o Has common functions required for a file weeder (create database, add
  files to existing database, check for duplicate files aganist a database,
  manage different databases, delete duplicated files, ...).

o Stadistical reports.

o It's a small and lightweight win32 console application.

o Support for long filenames (including spaces in path, just use "s in the
  command line).

Other interesting things

o VirusBuster and me try to make databases compatible (since VirWeeder Plus
  version 1.2, next may follow).

o Easy to work with several databases.


        2. Usage

  fweeder <command> [<switch>]

  available command list:

  -h                Little help screen

  -c <path>         Create a database for this path.

                    It will dump a report too with the names of the
                    duplicated files in a quite standard format:

                    FILE_DUPLICATE is a duplicate of FILE_ORIGINAL

                    as well as some stadistical data.

  -a <path>         Adds files to current database.

                    Old database is saved with .old extension. A report
                    will be created with duplicated files in the same
                    way than -c command does.

  -v <path>         Look for duplicated files using current database.

                    Results will be placed into found.log.

  -o                Optimizes current database.

                    This is a must when you use databases from other
                    weeder (such as VirWeeder Plus), but not really needed
                    if you use a database created with fweeder. Indeed you'll
                    get better performance if you optimize the database with
                    great amount of files.

                    You should use it before -a or -v, and it won't support
                    -k or -0 switches.

                    If you notice fweeder spends too much time loading the
                    database (eg. more than 5 seconds on a average comp),
                    should be a nice idea to optimize the database. After
                    one optimization you won't need optimize again unless
                    you add a huge number of files.

                    With this new database you will avoid fweeder's worst
                    case. Just think 1024 records needs about 10 tests in
                    worst case for one adding with an optimized database,
                    and up to 512 tests if the database is the worst
                    database possible.

  available switch list:

  -d <database>     Use database as current database
  -k                Delete duplicated files
  -0                Delete zero size files

fweeder uses by default 'current' as database name, so you'll find following
files (if you're not using -d switch):

  current.db        database
  current.log       report (-c, -a)
  found.log         report (-v)

Examples:

  fweeder -c c:\folder

  Creates a database for c:\folder using 'current' as db name.

  fweeder -a c:\folder -d mdb -k

  Adds files found into c:\folder using 'mdb' as db name, duplicated files
  will be deleted.

  fweeder -v c:\tmp -k

  Looks for duplicated files into c:\tmp using current database, duplicated
  files will be deleted.

  fweeder -c \collection -d my_collection -k -0

  Creates a database for \collection directory in current drive (the drive
  won't be added, so you can work with relative paths). The database will
  be my_collection.db and the report will be in my_collection.log.
  Duplicated files and zero size files will be deleted.

IMPORTANT: Notice '.db' is the std ext for databases and fweeder will append
it to the name provided using -d switch. If you wanna use VIRWEEDP.CRC,
just rename it to VIRWEEDP.DB. Notice also that VirWeeder Plus should
support many hash functions, be sure the database was generated using MD5.


        3. History

1.3 - released 10 may 2002

o Fixed issue #004. Now works great under Windows XP. Win2k and WinNt not
  tested, but let's say it works (until someone reports error). Notice i
  cannot support systems i have not available for testing.

o Some little bug fixes for rare cases.

1.2 - released 4 may 2002

o Many optimizations.

o Fixed issue #003. Now -o command is available to optimize databases, so
  you can use VirWeeder Plus databases without problems.

1.1 - released 1 may 2002

o Documentation moved to an external file (this file!).

o Many little optimizations.

o Now elapsed time calculation is more accurate (i don't know why loading
  database was excluded, and the result was wrong most of times). Thanks to
  VirusBuster for the tips coding the time routines :)

o Added -0 switch that deletes files with zero size.

o Fixed issue #002. Zero size files now are managed better (the program will
  show it's ignoring a file, but won't appear the awful error message).

o Fixed issue #001. Spaces in path works great.

o Fixed issue #000. Now adding files *should* be faster working with a db
  created by fweeder. If you use a database optimized for VirWeeder Plus,
  just wait some time because that's the worst case again (it needs about
  one minute to rebuild a database with 60000 files). Issue #003 is still
  there :/ Now i know how to make a 'complete tree' to optimize addition,
  but the algorithm is pretty complex, so i'll add it to next release. By
  now is more important release a fix for severe issues (#000 mainly).

1.0 - released 28 apr 2002

o First release


        4. Known Issues

1.3 for next 1.4

There are not known issues.

1.2 for next 1.3

#004 - Crash under Windows XP (Thanks you Perikles). Crash under Win2k, so
       i assume crash under WinNt too. But this issue is mainly for XP
       'cause i cannot test it under Win2k or WinNt.

1.1 for next 1.2

There are not new known issues. Old issues: #003.

1.0 for next 1.1

#000 - Databases are stored in ascending ordered form. That's pretty nice
       for VirWeeder Plus, but very bad for fweeder (worst case!). That's
       why it is so slow loading the database. That MUST be fixed. As you
       can see in VirusBuster comparative, that makes fweeder the slower
       weeder adding files to a database. We use the same db format, but
       our approach is quite different. Compatibility is there, but you
       won't get the best execution times. Seems logic.

#001 - Paths with spaces in the command line doesn't work (even with "s).

#002 - Zero size files won't get mapped so are not processed. Should not
       report an error (it is not).

#003 - Loading database for worst case is slow. May be a command to optimize
       the database or kinda external tool like VIRWOPTZ is needed. That's
       not a critical issue if you use databases created with fweeder.

*** *** *** *** *** *** *** *** *** *** *** ***

