+--- pinfo-0.6.0/src/manual.c.mkstemp Wed Aug 2 14:14:21 2000
++++ pinfo-0.6.0/src/manual.c Wed Aug 2 14:25:11 2000
+@@ -168,13 +168,18 @@
+ size_t macroline_size;
+ int ignored_items = 0, i = 0;
+ char zipped = 0;
++ char tempbuf[PATH_MAX] = "/tmp/pinfoXXXXXX";
++ int fd;
+
+ if (tmpfilename1)
+ {
+ unlink (tmpfilename1);
+ xfree (tmpfilename1);
+ }
+- tmpfilename1 = tempnam ("/tmp", NULL);
++ fd = mkstemp(tempbuf);
++ fchmod(fd, S_IRUSR | S_IWUSR);
++ close(fd);
++ tmpfilename1 = strdup(tempbuf);
+
+ #ifdef getmaxyx
+ init_curses ();
+@@ -199,6 +204,8 @@
+ if (ignoredmacros) /* if the pointer is non-null */
+ if (*ignoredmacros && strlen (ignoredmacros)) /* if there are some macros */
+ { /* that should be ignored */
++ char tempbuf[PATH_MAX] = "/tmp/pinfoXXXXXX";
++ int fd;
+ *location = '\0';
+ snprintf (cmd, 255, "man -W %s %s", /* we need to know the path */
+ ManOptions,
+@@ -268,9 +275,11 @@
+ }
+ else
+ source = fopen (location, "r"); /* from cmd output */
+- name = tempnam ("/tmp", NULL);
++ fd = mkstemp(tempbuf);
++ fchmod(fd, S_IRUSR | S_IWUSR);
++ name = strdup(tempbuf);
+ raw_tempfilename = name;
+- id = fopen (name, "w");
++ id = fdopen (fd, "w");
+
+ while (!feof (source)) /* we read until eof */
+ {
+@@ -370,12 +379,17 @@
+ manual_aftersearch = 0;
+ if (return_value != -1) /* -1 is quit key */
+ {
++ char tempbuf[PATH_MAX] = "/tmp/pinfoXXXXXX";
++ int fd;
+ if (tmpfilename2)
+ {
+ unlink (tmpfilename2);
+ xfree (tmpfilename2);
+ }
+- tmpfilename2 = tempnam ("/tmp", NULL);
++ fd = mkstemp(tempbuf);
++ fchmod(fd, S_IRUSR | S_IWUSR);
++ close(fd);
++ tmpfilename2 = strdup(tempbuf);
+ if (return_value != -2) /* key_back is not pressed;
+ and return_value is an
+ offset to manuallinks */
+--- pinfo-0.6.0/src/filehandling_functions.c.mkstemp Wed Aug 2 14:14:26 2000
++++ pinfo-0.6.0/src/filehandling_functions.c Wed Aug 2 14:25:42 2000
+@@ -452,12 +452,17 @@
+
+ if (number == 0) /* initialize tmp filename for file 1 */
+ {
++ char tmpbuf[PATH_MAX] = "/tmp/pinfoXXXXXX";
++ int fd;
+ if (tmpfilename1)
+ {
+ unlink (tmpfilename1); /* erase old tmpfile */
+ free (tmpfilename1);
+ }
+- tmpfilename1 = tempnam ("/tmp", NULL);
++ fd = mkstemp(tmpbuf);
++ fchmod(fd, S_IRUSR | S_IWUSR);
++ close(fd);
++ tmpfilename1 = strdup(tmpbuf);
+ tmpfilename = tmpfilename1; /* later we will refere only to tmp1 */
+ }
+ for (i = 0; i < infopathcount; i++) /* go through all paths */
+@@ -601,23 +606,33 @@
+
+ if (number == 0) /* initialize tmp filename for file 1 */
+ {
++ char tmpbuf[PATH_MAX] = "/tmp/pinfoXXXXXX";
++ int fd;
+ if (tmpfilename1)
+ {
+ unlink (tmpfilename1); /* erase old tmpfile */
+ free (tmpfilename1);
+ }
+- tmpfilename1 = tempnam ("/tmp", NULL);
++ fd = mkstemp(tmpbuf);
++ fchmod(fd, S_IRUSR | S_IWUSR);
++ close(fd);
++ tmpfilename1 = strdup(tmpbuf);
+ tmpfilename = tmpfilename1; /* later we will refere only to tmp1 */
+ }
+ else
+ /* initialize tmp filename for file 2 */
+ {
++ char tmpbuf[PATH_MAX] = "/tmp/pinfoXXXXXX";
++ int fd;
+ if (tmpfilename2)
+ {
+ unlink (tmpfilename2); /* erase old tmpfile */
+ free (tmpfilename2);
+ }
+- tmpfilename2 = tempnam ("/tmp", NULL);
++ fd = mkstemp(tmpbuf);
++ fchmod(fd, S_IRUSR | S_IWUSR);
++ close(fd);
++ tmpfilename2 = strdup(tmpbuf);
+ tmpfilename = tmpfilename2; /* later we will refere only to tmp2 */
+ }
+
+--- pinfo-0.6.0/src/common_includes.h.mkstemp Wed Aug 2 14:22:04 2000
++++ pinfo-0.6.0/src/common_includes.h Wed Aug 2 14:22:15 2000
+@@ -14,6 +14,7 @@
+ #include <stdlib.h>
+ #include <signal.h>
+ #include <unistd.h>
++#include <limits.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <pwd.h>