Add gps-timestamp and gps-datestamp support to jhead library.
diff --git a/gpsinfo.c b/gpsinfo.c
index 18b9d07..afd4b12 100644
--- a/gpsinfo.c
+++ b/gpsinfo.c
@@ -15,7 +15,8 @@
 #define TAG_GPS_LONG       4
 #define TAG_GPS_ALT_REF    5
 #define TAG_GPS_ALT        6
-
+#define TAG_GPS_TIMESTAMP  7
+#define TAG_GPS_DATESTAMP  29
 
 static TagTable_t GpsTags[]= {
     { 0x00, "GPSVersionID", FMT_BYTE, 4},
@@ -135,6 +136,8 @@
     strcpy(ImageInfo.GpsLat, "? ?");
     strcpy(ImageInfo.GpsLong, "? ?");
     ImageInfo.GpsAlt[0] = 0;
+    bzero(ImageInfo.GpsTimeStamp, sizeof(ImageInfo.GpsTimeStamp));
+    bzero(ImageInfo.GpsDateStamp, sizeof(ImageInfo.GpsDateStamp));
 
     for (de=0;de<NumDirEntries;de++){
         unsigned Tag, Format, Components;
@@ -248,6 +251,19 @@
                 sprintf(ImageInfo.GpsAlt + 1, "%.2fm", 
                     ConvertAnyFormat(ValuePtr, Format));
                 break;
+
+            case TAG_GPS_TIMESTAMP:
+                snprintf(ImageInfo.GpsTimeStamp,
+                    sizeof(ImageInfo.GpsTimeStamp), "%d:%d:%d",
+                    (int) ConvertAnyFormat(ValuePtr, Format),
+                    (int) ConvertAnyFormat(ValuePtr + 8, Format),
+                    (int) ConvertAnyFormat(ValuePtr + 16, Format)
+                );
+                break;
+
+            case TAG_GPS_DATESTAMP:
+                strncpy(ImageInfo.GpsDateStamp, (char*)ValuePtr, sizeof(ImageInfo.GpsDateStamp));
+                break;
         }
 
         if (ShowTags){
diff --git a/jhead.h b/jhead.h
index 1540d94..1725f74 100644
--- a/jhead.h
+++ b/jhead.h
@@ -1,9 +1,9 @@
 //--------------------------------------------------------------------------
 // Include file for jhead program.
 //
-// This include file only defines stuff that goes across modules.  
-// I like to keep the definitions for macros and structures as close to 
-// where they get used as possible, so include files only get stuff that 
+// This include file only defines stuff that goes across modules.
+// I like to keep the definitions for macros and structures as close to
+// where they get used as possible, so include files only get stuff that
 // gets used in more than one file.
 //--------------------------------------------------------------------------
 #define _CRT_SECURE_NO_DEPRECATE 1
@@ -113,6 +113,9 @@
     char GpsLongRaw[31];
     char GpsLongRef[2];
     char GpsAlt[20];
+    // gps-datestamp is 11 bytes ascii in EXIF 2.2
+    char GpsDateStamp[11];
+    char GpsTimeStamp[11];
 }ImageInfo_t;
 
 
@@ -171,7 +174,7 @@
 extern const int BytesPerFormat[];
 #define NUM_FORMATS 12
 
-#define FMT_BYTE       1 
+#define FMT_BYTE       1
 #define FMT_STRING     2
 #define FMT_USHORT     3
 #define FMT_ULONG      4
@@ -190,7 +193,7 @@
                  unsigned char * OffsetBase, unsigned ExifLength);
 
 // gpsinfo.c prototypes
-void ProcessGpsInfo(unsigned char * ValuePtr, int ByteCount, 
+void ProcessGpsInfo(unsigned char * ValuePtr, int ByteCount,
                 unsigned char * OffsetBase, unsigned ExifLength);
 int IsGpsTag(const char* tag);
 int GpsTagToFormatType(unsigned short tag);
@@ -255,7 +258,7 @@
 #define M_JFIF  0xE0          // Jfif marker
 #define M_EXIF  0xE1          // Exif marker.  Also used for XMP data!
 #define M_XMP   0x10E1        // Not a real tag (same value in file as Exif!)
-#define M_COM   0xFE          // COMment 
+#define M_COM   0xFE          // COMment
 #define M_DQT   0xDB
 #define M_DHT   0xC4
 #define M_DRI   0xDD
diff --git a/main.c b/main.c
index f0bc9be..682e892 100644
--- a/main.c
+++ b/main.c
@@ -651,6 +651,14 @@
             bufLen = addKeyValueString(&buf, bufLen, "GPSAltitude", ImageInfo.GpsAlt);
             if (bufLen == 0) return NULL;
         }
+        if (ImageInfo.GpsDateStamp[0]) {
+            bufLen = addKeyValueString(&buf, bufLen, "GPSDateStamp", ImageInfo.GpsDateStamp);
+            if (bufLen == 0) return NULL;
+        }
+        if (ImageInfo.GpsTimeStamp[0]) {
+            bufLen = addKeyValueString(&buf, bufLen, "GPSTimeStamp", ImageInfo.GpsTimeStamp);
+            if (bufLen == 0) return NULL;
+        }
     }
 
     if (ImageInfo.Comments[0]) {