magic was written in the early 80's when software isn't what it is
today. Because of this, magic contains old remnants of unnecessary
constructs which are confusing, inefficient, or just plain troubling.

Moving forward, it would be nice to remove these old "features". This is
a list. Feel free to fix something or add something new if you notice
it.

-  Add a proper COPYING (license) file to the distribution.  

-  Tons of headers don't have #ifndef inclusion protection and even worse,
   explicitly rely on the prior inclusion of other header files.  
   This is utterly unacceptable.  

-  Give all functions proper prototypes and declarations. Some functions
   have no return type declared and are implicitly ``int''.

-  Remove all the code for magic's own malloc() implementation in
   utils/malloc.c. Modern system malloc() has always got to be
   preferred.

-  Remove all references to ``Void'' in the code. It's declared like
   this in misc/magic.h:

      #define Void    int

   huh? What crazy person decided this was a good idea?

-  Remove the code for the old and unused graphics drivers: X10, Aed,
   SunView.

-  Bring the build system under the control of a modern tool like
   autoconf.

-  Remove all references to ``#ifndef NO_VARARGS''. Change usage to
   stdarg and remove the ancient implementations that didn't have variable
   argument lists.

-  Permanently remove the modules that aren't used anymore:

    ./prleak
    ./ext2dlys
    ./fsleeper

- Also remove other obsolete files:

    ./scripts/* (except config and mkdirs)
    ./mpack/mpack-6.3
    ./ext2sim/z.testing
    ./scmos/z.scmos-v6.4.5
    ./drc/drc-6.3
    ./ext2sim/ext2sim-6.4.5
    ./ext2spice/ext2spice-6.4.5
    ./extract/extract-6.3
    ./cif/cif-6.4
    ./misc/PCFLAGS
    ./lisp/other/*
    ./lisp/copyother

-  remove the register keyword. IMO the register keyword should be
   removd from the C language, but you can't have everything.

-  remove PARANOID definition from misc/magic.h and change ASSERT calls
   to assert()
