The existing JPEG detection logic is too restrictive because it checks for the file header "FF D8 FF E0", which only matches JFIF-type JPEG images... Meanwhile EXIF JPEG images are more common these days.
For reference:
FF D8 = JPEG SOI (Start of Image) header
FF-D8-FF-E0 = JFIF
FF-D8-FF-E1 = EXIF
FF-D8-FF-E2 = CIFF
FF-D8-FF-E8 = SPIFF
As you can see checking for the SOI and then FF matches all extent types of JPEG images. \o/
This make it easier to manage separate compilation units (static functions and
global variables, local type definitions, etc.)
The generated header file `functions.h' caused a circular dependency problem;
it wasn't updated automatically when changes were made to the sources (e.g.
new function definition). The sources can't be in the dependency list of
`functions.h' in the Makefile, because `functions.h' is in the dependency list
of each source file. GNU make is able to ignore the circular dependency but not
BSD make.
At any rate, keeping the prototype list up-to-date is easy, because the
compiler will complain if a function is used in a compilation unit but defined
in an other one.
It also makes static analysis easier out of the box.
When a gopherer comes in contact with a user listing, the current
order is pretty much useless (by UID). It makes much more sense
to sort by the date modified.
Closes#62