diff -u srcunx/gvxdll.c u:gsview-4.6/srcunx/gvxdll.c
--- srcunx/gvxdll.c	Mon Feb 10 10:00:32 2003
+++ srcunx/gvxdll.c	Mon Jan 12 11:45:33 2004
@@ -410,13 +410,13 @@
 
 int pstotext_pid = 0;
 
-gint check_pstotext(gpointer data)
+static void pstotext_sighandler(int num)
 {
     int rc = 0;
     int status = 0;
 
     if (pstotext_pid == 0)
-	return FALSE;	/* pstotext not running, remove timer */
+	return; 	/* pstotext not running */
 
     /* check if pstotext has exited */
     if ( (rc = waitpid(pstotext_pid, &status, WNOHANG)) > 0 ) {
@@ -450,9 +450,10 @@
 	    unlink(psfile.text_name);
 	    psfile.text_name[0] = '\0';
 	}
-	return FALSE;	/* remove timer */
+	return;
     }
-    return TRUE;	/* keep checking */
+    if (rc)
+	perror("pstotext_sighandler: waitpid error, ");
 }
 
 /* start pstotext and wait for it to terminate */
@@ -547,6 +548,8 @@
     }
 
     pstotext_pid = fork();
+
+    signal(SIGCHLD, pstotext_sighandler);
     if (pstotext_pid == 0) {
 	/* replace child process with prog */
 	if (execvp(nargv[0], nargv) == -1) {
@@ -558,8 +561,7 @@
     }
     else {
 	/* parent */
-	/* Check every second if pstotext has finished */
-	gtk_timeout_add(1000, check_pstotext, (gpointer)pstotext_pid);
+	/* pstotext_sighandler will tell us when it finishes */
     } 
     return 0;	/* all is well */
 }
diff -u en/gvxlang.c u:gsview-4.6/en/gvxlang.c
--- en/gvxlang.c	Sat Aug 16 08:37:30 2003
+++ u:gsview-4.6/en/gvxlang.c	Mon Jan 12 11:46:58 2004
@@ -19,7 +19,7 @@
 #include "gvx.h"
 #include "gvxres.h"
 #include "gvxlang.h"
-#include "en/gvclang.h"
+#include "gvclang.h"
 
 /* string table ids must be in order since we use a binary search */
 STRING_ENTRY string_en[] = {
diff -u ct/gvxlang.c u:gsview-4.6/ct/gvxlang.c
--- ct/gvxlang.c	Tue Apr 01 12:29:44 2003
+++ u:gsview-4.6/ct/gvxlang.c	Mon Jan 12 11:46:46 2004
@@ -19,7 +19,7 @@
 #include "gvx.h"
 #include "gvxres.h"
 #include "gvxlang.h"
-#include "ct/gvclang.h"
+#include "gvclang.h"
 
 /* string table ids must be in order since we use a binary search */
 STRING_ENTRY string_ct[] = {
diff -u de/gvxlang.c u:gsview-4.6/de/gvxlang.c
--- de/gvxlang.c	Sat Mar 08 06:30:12 2003
+++ u:gsview-4.6/de/gvxlang.c	Mon Jan 12 11:46:52 2004
@@ -19,7 +19,7 @@
 #include "gvx.h"
 #include "gvxres.h"
 #include "gvxlang.h"
-#include "de/gvclang.h"
+#include "gvclang.h"
 
 /* string table ids must be in order since we use a binary search */
 STRING_ENTRY string_de[] = {
diff -u es/gvxlang.c u:gsview-4.6/es/gvxlang.c
--- es/gvxlang.c	Sat Mar 08 06:29:50 2003
+++ u:gsview-4.6/es/gvxlang.c	Mon Jan 12 11:47:04 2004
@@ -19,7 +19,7 @@
 #include "gvx.h"
 #include "gvxres.h"
 #include "gvxlang.h"
-#include "es/gvclang.h"
+#include "gvclang.h"
 
 /* string table ids must be in order since we use a binary search */
 STRING_ENTRY string_es[] = {
diff -u fr/gvxlang.c u:gsview-4.6/fr/gvxlang.c
--- fr/gvxlang.c	Sat Mar 08 06:29:38 2003
+++ u:gsview-4.6/fr/gvxlang.c	Mon Jan 12 11:47:08 2004
@@ -19,7 +19,7 @@
 #include "gvx.h"
 #include "gvxres.h"
 #include "gvxlang.h"
-#include "fr/gvclang.h"
+#include "gvclang.h"
 
 /* string table ids must be in order since we use a binary search */
 STRING_ENTRY string_fr[] = {
diff -u it/gvxlang.c u:gsview-4.6/it/gvxlang.c
--- it/gvxlang.c	Sat Mar 08 06:29:00 2003
+++ u:gsview-4.6/it/gvxlang.c	Mon Jan 12 11:47:17 2004
@@ -19,7 +19,7 @@
 #include "gvx.h"
 #include "gvxres.h"
 #include "gvxlang.h"
-#include "it/gvclang.h"
+#include "gvclang.h"
 
 /* string table ids must be in order since we use a binary search */
 STRING_ENTRY string_it[] = {
diff -u nl/gvxlang.c u:gsview-4.6/nl/gvxlang.c
--- nl/gvxlang.c	Sat Mar 08 06:28:30 2003
+++ u:gsview-4.6/nl/gvxlang.c	Mon Jan 12 11:47:20 2004
@@ -19,7 +19,7 @@
 #include "gvx.h"
 #include "gvxres.h"
 #include "gvxlang.h"
-#include "nl/gvclang.h"
+#include "gvclang.h"
 
 /* string table ids must be in order since we use a binary search */
 STRING_ENTRY string_nl[] = {
diff -u ru/gvxlang.c u:gsview-4.6/ru/gvxlang.c
--- ru/gvxlang.c	Fri Mar 14 03:49:16 2003
+++ u:gsview-4.6/ru/gvxlang.c	Mon Jan 12 11:47:28 2004
@@ -19,7 +19,7 @@
 #include "gvx.h"
 #include "gvxres.h"
 #include "gvxlang.h"
-#include "ru/gvclang.h"
+#include "gvclang.h"
 
 /* string table ids must be in order since we use a binary search */
 STRING_ENTRY string_ru[] = {
diff -u se/gvxlang.c u:gsview-4.6/se/gvxlang.c
--- se/gvxlang.c	Sat Mar 08 06:28:16 2003
+++ u:gsview-4.6/se/gvxlang.c	Mon Jan 12 11:47:32 2004
@@ -19,7 +19,7 @@
 #include "gvx.h"
 #include "gvxres.h"
 #include "gvxlang.h"
-#include "se/gvclang.h"
+#include "gvclang.h"
 
 /* string table ids must be in order since we use a binary search */
 STRING_ENTRY string_se[] = {
diff -u sk/gvxlang.c u:gsview-4.6/sk/gvxlang.c
--- sk/gvxlang.c	Sat Mar 08 06:30:42 2003
+++ u:gsview-4.6/sk/gvxlang.c	Mon Jan 12 11:47:35 2004
@@ -19,7 +19,7 @@
 #include "gvx.h"
 #include "gvxres.h"
 #include "gvxlang.h"
-#include "sk/gvclang.h"
+#include "gvclang.h"
 
 /* string table ids must be in order since we use a binary search */
 STRING_ENTRY string_sk[] = {
