Make it easier to pass macro definitions from make

This small change to the Makefile allows you to call

	make CLCFLAGS=-DDEBUG

or some other define directly from the command line. It gets added to the
CFLAGS without overwriting the CFLAGS.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
When starting with an empty data file and downloading dives, number them

We have been very careful not to mess with the numbering that a user may
intend - but one obvious case where we should automatically number the
dives appears to be the first time download from a dive computer. Right
now all dives show up with number '0' and that's just really ugly and a
bad experience for a first time user.

With this change if a user starts with an empty data file and downloads
dives from a computer for the first time, Subsurface will give them
numbers starting with '1'.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Pick up dive numbers from Uemis SDA when starting with empty data file

This is improving a bit more on commit d2dd0eb39efe "When starting with an
empty data file and downloading dives, number them" by providing a better
starting number when a user downloads dives from a Uemis SDA into an empty
data file.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Save latitude/longitude using integer math

I hate using floating point, this tries to at least make parts of it be
integer logic, and avoid the whole locale issue.  This still keeps the
latitude and longitude internally as a floating point value, and parses
it that way, but I'm slowly moving towards less and less FP use.

We're going to use micro-degrees for location information: that's
sufficient to about a tenth of a meter precision, and it fits in a
32-bit integer.

If you specify dive sites with more precision than that, you may have
OCD.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Turn latitude and longitude into integer micro-degree values

This actually makes us internally use 'micro-degrees' for latitude and
longitude, and we never turn them into floating point either at parse
time or save time.

That said, the Uemis downloader internally does still use atof() when
converting things, which is likely a bug (locale issues and all that),
but I'll ask Dirk to check it out.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Change Uemis code to use locale indepent floating point parsing

I clearly forgot about not using atof... now we use the locale safe
g_ascii_strtod instead.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Fix saving of salinity

Several things were wrong.
- we saved it as floating point (that was stupid, given the locale issue
  with that and given the fact that the precision was really artificial)
- we always saved it when set (we should only save it if the value is
  different from our default of 1030g/l == salt water)
- most embarrassing - the unit we assigned was wrong. That's g/l, not
  kg/l...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Improve reading of extra dive data for Uemis

When starting from the first dive on the dive computer we called getDive
for every dive starting with id 0 instead of figuring out which id is
actually the first one that we downloaded.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Fix retrieval of object_id value in Uemis downloader

The existing code could read past the end of the buffer that was handed to
it.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>