+static void show_location(FILE *f, struct dive *dive)
+{
+ char buffer[80];
+ const char *prefix = " <location>";
+ double latitude = dive->latitude;
+ double longitude = dive->longitude;
+
+ /*
+ * Ok, theoretically I guess you could dive at
+ * exactly 0,0. But we don't support that. So
+ * if you do, just fudge it a bit, and say that
+ * you dove a few meters away.
+ */
+ if (latitude || longitude) {
+ int len = snprintf(buffer, sizeof(buffer)-4,
+ " <location gps='%.12g %.12g'>",
+ latitude, longitude);
+ if (!dive->location) {
+ memcpy(&buffer[len-1], "/>\n", 4);
+ fputs(buffer, f);
+ return;
+ }
+ prefix = buffer;
+ }
+ show_utf8(f, dive->location, prefix,"</location>\n", 0);
+}
+