Adopt use of gnulib for portability.
[pspp-builds.git] / src / html.c
index 037905ea08355c164ccfa634e35a39dc456b2948..f902520d0e1a2580530e7ba633211d9c7db8e2ed 100644 (file)
@@ -14,8 +14,8 @@
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-   02111-1307, USA. */
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA. */
 
 /* This #if encloses the rest of the file. */
 #if !NO_HTML
 #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 : "";
@@ -509,7 +510,7 @@ output_tab_table (struct outp_driver *this, struct tab_table *t)
        fputs ("  <TR>\n", x->file.file);
        for (c = 0; c < t->nc; c++, ct++)
          {
-            struct len_string *cc;
+            struct fixed_string *cc;
            int tag;
            char header[128];
            char *cp;
@@ -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);
 }