Forráskód Böngészése

Fix pager/mail functions

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@40776 15284696-431f-4ddb-bdfa-cd5b030d7da7
Glynn Clements 15 éve
szülő
commit
1e26c862c8
3 módosított fájl, 11 hozzáadás és 0 törlés
  1. 1 0
      include/gisdefs.h
  2. 4 0
      lib/gis/pager.c
  3. 6 0
      lib/gis/popen.c

+ 1 - 0
include/gisdefs.h

@@ -483,6 +483,7 @@ void G_set_percent_routine(int (*) (int));
 void G_unset_percent_routine(void);
 
 /* popen.c */
+void G_popen_clear(struct Popen *);
 FILE *G_popen_write(struct Popen *, const char *, const char **);
 FILE *G_popen_read(struct Popen *, const char *, const char **);
 void G_popen_close(struct Popen *);

+ 4 - 0
lib/gis/pager.c

@@ -15,6 +15,8 @@ FILE *G_open_pager(struct Popen *pager)
     const char *program = getenv("GRASS_PAGER");
     FILE *fp;
 
+    G_popen_clear(pager);
+
     if (!program)
 	return stdout;
 
@@ -46,6 +48,8 @@ FILE *G_open_mail(struct Popen *mail)
     const char *argv[3];
     FILE *fp;
 
+    G_popen_clear(mail);
+
     if (!user || !*user)
 	return NULL;
 

+ 6 - 0
lib/gis/popen.c

@@ -50,6 +50,12 @@ static FILE *do_popen(struct Popen *state, int wr,
     return state->fp;
 }
 
+void G_popen_clear(struct Popen *state)
+{
+    state->fp = NULL;
+    state->pid = -1;
+}
+
 FILE *G_popen_write(struct Popen *state, const char *program, const char **args)
 {
     return do_popen(state, 1, program, args);