odt: Restore writing creator metadata.
[pspp-builds.git] / src / output / odt.c
index 0b55ac9ae9222efb7b60aede6e4a1c4fdc0351c4..99f5e60d6ec7cb8fdb45265f424b16a37f18d133 100644 (file)
@@ -21,7 +21,9 @@
 #include <errno.h>
 #include <libgen.h>
 #include <libxml/xmlwriter.h>
+#ifdef HAVE_PWD_H
 #include <pwd.h>
+#endif
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <time.h>
@@ -91,7 +93,7 @@ create_mimetype (const char *dirname)
 
   if (fp == NULL)
     {
-      error (0, errno, _("failed to create output file %s"),
+      error (0, errno, _("error opening output file \"%s\""),
              ds_cstr (&filename));
       ds_destroy (&filename);
       return false;
@@ -255,30 +257,36 @@ write_meta_data (struct odt_driver *odt)
 
   {
     char buf[30];
-    struct passwd *pw = getpwuid (getuid ());
     time_t t = time (NULL);
     struct tm *tm =  localtime (&t);
 
     strftime (buf, 30, "%Y-%m-%dT%H:%M:%S", tm);
 
-    xmlTextWriterStartElement (w, _xml ("meta:initial-creator"));
-    xmlTextWriterWriteString (w, _xml (strtok (pw->pw_gecos, ",")));
-    xmlTextWriterEndElement (w);
-
     xmlTextWriterStartElement (w, _xml ("meta:creation-date"));
     xmlTextWriterWriteString (w, _xml (buf));
     xmlTextWriterEndElement (w);
 
-    xmlTextWriterStartElement (w, _xml ("dc:creator"));
-    xmlTextWriterWriteString (w, _xml (strtok (pw->pw_gecos, ",")));
-
-    xmlTextWriterEndElement (w);
-
     xmlTextWriterStartElement (w, _xml ("dc:date"));
     xmlTextWriterWriteString (w, _xml (buf));
     xmlTextWriterEndElement (w);
   }
 
+#ifdef HAVE_PWD_H
+  {
+    struct passwd *pw = getpwuid (getuid ());
+    if (pw != NULL)
+      {
+        xmlTextWriterStartElement (w, _xml ("meta:initial-creator"));
+        xmlTextWriterWriteString (w, _xml (strtok (pw->pw_gecos, ",")));
+        xmlTextWriterEndElement (w);
+
+        xmlTextWriterStartElement (w, _xml ("dc:creator"));
+        xmlTextWriterWriteString (w, _xml (strtok (pw->pw_gecos, ",")));
+        xmlTextWriterEndElement (w);
+      }
+  }
+#endif
+
   xmlTextWriterEndElement (w);
   xmlTextWriterEndElement (w);
   xmlTextWriterEndDocument (w);