cvsdist 8e6c863
Try to print if the user hits PrtSc.  Careful, mkdtemp() is OpenBSD and
cvsdist 8e6c863
glibc 2.2+ only AFAIK, so we have to implement one for older systems.
cvsdist 8e6c863
How the heck do we get Imake to tell us *that*?
cvsdist 8e6c863
cvsdist 8e6c863
--- mgetty-1.1.25/frontends/X11/viewfax-2.5/viewfax.c	Tue Mar 13 14:20:33 2001
cvsdist 8e6c863
+++ mgetty-1.1.25/frontends/X11/viewfax-2.5/viewfax.c	Tue Mar 13 14:25:02 2001
cvsdist 8e6c863
@@ -125,6 +125,29 @@
cvsdist 8e6c863
 "\t-2\traw files are g3-2d\n"
cvsdist 8e6c863
 "\t-4\traw files are g4\n";
cvsdist 8e6c863
cvsdist 8e6c863
+#ifdef NEED_MKDTEMP
cvsdist 8e6c863
+#include <errno.h>
cvsdist 8e6c863
+static int
cvsdist 8e6c863
+mkdtemp(char *template)
cvsdist 8e6c863
+{
cvsdist 8e6c863
+    char temp[strlen(template) + 1];
cvsdist 8e6c863
+    int i, old_errno = errno;
cvsdist 8e6c863
+    do {
cvsdist 8e6c863
+        strcpy(temp, template);
cvsdist 8e6c863
+        if(mktemp(temp)) {
cvsdist 8e6c863
+            i = mkdir(temp, 0700);
cvsdist 8e6c863
+        } else {
cvsdist 8e6c863
+            i = -1;
cvsdist 8e6c863
+        }
cvsdist 8e6c863
+    } while ((i == -1) && (errno == EEXIST));
cvsdist 8e6c863
+    if(i == 0) {
cvsdist 8e6c863
+        strcpy(template, temp);
cvsdist 8e6c863
+        errno = old_errno;
cvsdist 8e6c863
+    }
cvsdist 8e6c863
+    return i;
cvsdist 8e6c863
+}
cvsdist 8e6c863
+#endif
cvsdist 8e6c863
+
cvsdist 8e6c863
 int
cvsdist 8e6c863
 main(int argc, char **argv)
cvsdist 8e6c863
 {
cvsdist 8e6c863
@@ -758,6 +781,16 @@
cvsdist 8e6c863
 			      0, 0, PaneWidth, PaneHeight);
cvsdist 8e6c863
 		    XDefineCursor(Disp, Win, ReadyCursor);
cvsdist 8e6c863
 		    break;
cvsdist 8e6c863
+		case XK_Print:
cvsdist 8e6c863
+		   {char cmd[256], tmpdir[256] = "/tmp/viewfaxXXXXXX";
cvsdist 8e6c863
+		    struct pagenode *p = firstpage;
cvsdist 8e6c863
+		    if(mkdtemp(tmpdir) != -1) {
cvsdist 8e6c863
+		        snprintf(cmd, sizeof(cmd), "tiffsplit %s %s/viewfax.; "
cvsdist 8e6c863
+			"tiff2ps %s/viewfax.* | lpr; "
cvsdist 8e6c863
+			"rm -fr %s", thispage->pathname, tmpdir, tmpdir,
cvsdist 8e6c863
+			tmpdir);
cvsdist 8e6c863
+		    system(cmd);}}
cvsdist 8e6c863
+		    break;
cvsdist 8e6c863
 		case XK_z:
cvsdist 8e6c863
 		    if (Event.xkey.state & ShiftMask)
cvsdist 8e6c863
 			goto Zoomout;