Document creation date.
[pspp] / dump.c
diff --git a/dump.c b/dump.c
index c737c01d1dd4f8252967d8e8b66785f992cf9a70..212421cb8045f5d330129c1882745abe1ae4388c 100644 (file)
--- a/dump.c
+++ b/dump.c
@@ -6,6 +6,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <sys/stat.h>
+#include <time.h>
 #include <unistd.h>
 #include "u8-mbtouc.h"
 
@@ -63,6 +64,15 @@ get_u32(void)
   return x;
 }
 
+static unsigned long long int
+get_u64(void)
+{
+  uint64_t x;
+  memcpy(&x, &data[pos], 8);
+  pos += 8;
+  return x;
+}
+
 static unsigned int
 get_be32(void)
 {
@@ -1129,7 +1139,13 @@ dump_fonts(void)
               printf("<datafile>%s</datafile>\n", get_string());
 
               match_u32_assert(0);
-              get_u32();
+
+              time_t date = get_u32();
+              struct tm tm = *localtime(&date);
+              char s[128];
+              strftime(s, sizeof s, "%a, %d %b %Y %H:%M:%S %z", &tm);
+              printf("<date>%s</date>\n", s);
+
               match_u32_assert(0);
             }
         }
@@ -1290,14 +1306,8 @@ main(int argc, char *argv[])
       pos++;
       pos++;
 
-      /* Offset 31.
-
-         This is the tableId, e.g. -4154297861994971133 would be 0xdca00003.
-         We don't have enough context to validate it. */
-      pos += 4;
-
-      /* Offset 35. */
-      pos += 4;
+      /* Offset 31. */
+      printf("<tableid>%lld</tableid>", get_u64());
 
       dump_title ();
       dump_fonts();