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. - 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()