Browse Source

Add pager.c (omitted from https://trac.osgeo.org/grass/changeset/40648)

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@40662 15284696-431f-4ddb-bdfa-cd5b030d7da7
Glynn Clements 15 years ago
parent
commit
26a106d75d
1 changed files with 65 additions and 0 deletions
  1. 65 0
      lib/gis/pager.c

+ 65 - 0
lib/gis/pager.c

@@ -0,0 +1,65 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <signal.h>
+
+#include <unistd.h>
+
+#include <grass/gis.h>
+
+#ifdef SIGPIPE
+static RETSIGTYPE (*sigpipe)(int);
+#endif
+
+FILE *G_open_pager(struct Popen *pager)
+{
+    const char *program = getenv("GRASS_PAGER");
+    FILE *fp;
+
+    if (!program)
+	return stdout;
+
+    if (!isatty(STDOUT_FILENO))
+	return stdout;
+
+#ifdef SIGPIPE
+    sigpipe = signal(SIGPIPE, SIG_IGN);
+#endif
+
+    fp = G_popen_write(pager, program, NULL);
+
+    return fp ? fp : stdout;
+}
+
+void G_close_pager(struct Popen *pager)
+{
+    G_popen_close(pager);
+
+#ifdef SIGPIPE
+    if (sigpipe)
+	signal(SIGPIPE, sigpipe);
+#endif
+}
+
+FILE *G_open_mail(struct Popen *mail)
+{
+    const char *user = G_whoami();
+    const char *argv[3];
+    FILE *fp;
+
+    if (!user || !*user)
+	return NULL;
+
+    argv[0] = "mail";
+    argv[1] = user;
+    argv[2] = NULL;
+
+    fp = G_popen_write(mail, "mail", argv);
+
+    return fp;
+}
+
+void G_close_mail(struct Popen *mail)
+{
+    G_popen_close(mail);
+}
+