Adopt use of gnulib for portability.
[pspp-builds.git] / src / html.c
index 73a1123ec21bf8024c0bc977a0b3882945d93925..f902520d0e1a2580530e7ba633211d9c7db8e2ed 100644 (file)
 #include "alloc.h"
 #include "error.h"
 #include "filename.h"
+#include "getl.h"
 #include "getline.h"
+#include "getlogin_r.h"
 #include "output.h"
 #include "som.h"
 #include "tab.h"
 #include "version.h"
 #include "mkfile.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* Prototypes. */
 static int postopen (struct file_ext *);
 static int preclose (struct file_ext *);
@@ -234,9 +239,7 @@ postopen (struct file_ext *f)
       {"source-file", 0},
       {0, 0},
     };
-#if HAVE_UNISTD_H
-  char host[128];
-#endif
+  char login[128], host[128];
   time_t curtime;
   struct tm *loctime;
 
@@ -277,14 +280,13 @@ postopen (struct file_ext *f)
       *cp = 0;
   }
 
-  /* PORTME: Determine username, net address. */
-#if HAVE_UNISTD_H
-  dict[2].value = getenv ("LOGNAME");
-  if (!dict[2].value)
-    dict[2].value = getlogin ();
-  if (!dict[2].value)
-    dict[2].value = _("nobody");
+  if (getenv ("LOGNAME") != NULL)
+    str_copy_rpad (login, sizeof login, getenv ("LOGNAME"));
+  else if (getlogin_r (login, sizeof login))
+    strcpy (login, _("nobody"));
+  dict[2].value = login;
 
+#ifdef HAVE_UNISTD_H
   if (gethostname (host, 128) == -1)
     {
       if (errno == ENAMETOOLONG)
@@ -292,11 +294,10 @@ postopen (struct file_ext *f)
       else
        strcpy (host, _("nowhere"));
     }
+#else
+  strcpy (host, _("nowhere"));
+#endif
   dict[3].value = host;
-#else /* !HAVE_UNISTD_H */
-  dict[2].value = _("nobody");
-  dict[3].value = _("nowhere");
-#endif /* !HAVE_UNISTD_H */
 
   dict[4].value = outp_title ? outp_title : "";
   dict[5].value = outp_subtitle ? outp_subtitle : "";
@@ -582,13 +583,8 @@ output_tab_table (struct outp_driver *this, struct tab_table *t)
   fputs ("</TABLE>\n\n", x->file.file);
 }
 
-
-void html_initialise_chart(struct outp_class *c, struct chart *ch);
-void html_finalise_chart(struct outp_class *c, struct chart *ch);
-
-
-void
-html_initialise_chart(struct outp_class *c UNUSED, struct chart *ch)
+static void
+html_initialise_chart(struct outp_driver *d UNUSED, struct chart *ch)
 {
 
   FILE  *fp;
@@ -604,8 +600,8 @@ html_initialise_chart(struct outp_class *c UNUSED, struct chart *ch)
 
 }
 
-void 
-html_finalise_chart(struct outp_class *c UNUSED, struct chart *ch)
+static void 
+html_finalise_chart(struct outp_driver *d UNUSED, struct chart *ch)
 {
   free(ch->filename);
 }