Jiri Skala a7f454
diff -up bltk/include/xse.h.xse bltk/include/xse.h
Jiri Skala a7f454
--- bltk/include/xse.h.xse	2009-04-10 09:14:20.000000000 +0200
Jiri Skala a7f454
+++ bltk/include/xse.h	2009-07-29 11:14:00.971521183 +0200
Jiri Skala a7f454
@@ -87,7 +87,8 @@
Jiri Skala a7f454
 #define	DELAY_1_MIN	(1 * 60 * 1000)
Jiri Skala a7f454
 #define	DELAY_2_MIN	(2 * 60 * 1000)
Jiri Skala a7f454
 #define	WINDOWID	"WINDOWID"
Jiri Skala a7f454
-#define	DELAY_FILE	"./user_delay.tmp"
Jiri Skala a7f454
+#define	DELAY_FILE	"user_delay.tmp"
Jiri Skala a7f454
+#define WINID_FILE	"winid.tmp"
Jiri Skala a7f454
 #define	VI_CMD		"vi"
Jiri Skala a7f454
 #define	CSCOPE_CMD	"cscope"
Jiri Skala a7f454
 #define	F4		"F4"
Jiri Skala a7f454
diff -up bltk/tools/bltk/main.c.xse bltk/tools/bltk/main.c
Jiri Skala a7f454
--- bltk/tools/bltk/main.c.xse	2009-07-29 11:14:00.915494499 +0200
Jiri Skala a7f454
+++ bltk/tools/bltk/main.c	2009-07-29 11:14:00.989494544 +0200
Jiri Skala a7f454
@@ -329,6 +329,7 @@ static void create_version_file(char *wl
Jiri Skala a7f454
 static void get_info(int no);
Jiri Skala a7f454
 
Jiri Skala a7f454
 static int sig_abort_flg = 0;
Jiri Skala a7f454
+static int sig_hup_flg = 0;
Jiri Skala a7f454
 static int help_cnt = 0;
Jiri Skala a7f454
 static int version_flg = 0;
Jiri Skala a7f454
 
Jiri Skala a7f454
@@ -540,7 +541,7 @@ void handler(int sig)
Jiri Skala a7f454
 	turn_off_stat_memory();
Jiri Skala a7f454
 
Jiri Skala a7f454
 	if (sig == SIGHUP) {
Jiri Skala a7f454
-		set_signal(SIGHUP);
Jiri Skala a7f454
+		create_stop_file();
Jiri Skala a7f454
 		return;
Jiri Skala a7f454
 	}
Jiri Skala a7f454
 
Jiri Skala a7f454
diff -up bltk/tools/xse/Makefile.xse bltk/tools/xse/Makefile
Jiri Skala a7f454
--- bltk/tools/xse/Makefile.xse	2009-04-10 09:14:20.000000000 +0200
Jiri Skala a7f454
+++ bltk/tools/xse/Makefile	2009-07-29 11:14:00.972554857 +0200
Jiri Skala a7f454
@@ -1,10 +1,10 @@
Jiri Skala a7f454
 
Jiri Skala a7f454
 CFLAGS		= -Wall -pedantic -std=c99 -g -O2 -I ../../include -fPIC
Jiri Skala a7f454
-LDFLAGS		= -L/usr/X11R6/lib64 -L/usr/X11R6/lib -lX11
Jiri Skala a7f454
+LDFLAGS		= -L/usr/X11R6/lib64 -L/usr/X11R6/lib -lX11 -Wl,-soname -Wl,libxse.so.0
Jiri Skala a7f454
 
Jiri Skala a7f454
 LIB		= ../../lib
Jiri Skala a7f454
 
Jiri Skala a7f454
-LIBNAME		= libxse.so
Jiri Skala a7f454
+LIBNAME		= libxse.so.0
Jiri Skala a7f454
 TARGET		= $(LIB)/$(LIBNAME)
Jiri Skala a7f454
 FILES		= xse
Jiri Skala a7f454
 OFILES		= ${FILES:=.o}
Jiri Skala a7f454
diff -up bltk/tools/xse/xse.c.xse bltk/tools/xse/xse.c
Jiri Skala a7f454
--- bltk/tools/xse/xse.c.xse	2009-04-10 09:14:20.000000000 +0200
Jiri Skala a7f454
+++ bltk/tools/xse/xse.c	2009-07-29 11:14:00.970496029 +0200
Jiri Skala a7f454
@@ -52,16 +52,20 @@
Jiri Skala a7f454
 #include <time.h>
Jiri Skala a7f454
 #include <sys/wait.h>
Jiri Skala a7f454
 #include <signal.h>
Jiri Skala a7f454
+#include <sys/prctl.h>
Jiri Skala a7f454
 
Jiri Skala a7f454
 #include <xse.h>
Jiri Skala a7f454
 
Jiri Skala a7f454
 char *progname = "xse";
Jiri Skala a7f454
 char *xchg_buf = NULL;
Jiri Skala a7f454
 char *scen_file = NULL;
Jiri Skala a7f454
+char *stop_name = "NULL";
Jiri Skala a7f454
 int default_release_flg = 0;
Jiri Skala a7f454
 int check_delay_time_flg = 0;
Jiri Skala a7f454
 int correct_delay_time_flg = 0;
Jiri Skala a7f454
 
Jiri Skala a7f454
+char winid_tmp[STR_LEN];
Jiri Skala a7f454
+
Jiri Skala a7f454
 long double user_delay = 0;
Jiri Skala a7f454
 
Jiri Skala a7f454
 static Display *display = NULL;
Jiri Skala a7f454
@@ -412,8 +416,10 @@ void write_delay(char *fname)
Jiri Skala a7f454
 	char string[STR_LEN];
Jiri Skala a7f454
 
Jiri Skala a7f454
 	if (fname == 0) {
Jiri Skala a7f454
-		fname = DELAY_FILE;
Jiri Skala a7f454
+		snprintf(string, STR_LEN, "%s/%s", getenv("BLTK_HOME"), DELAY_FILE);
Jiri Skala a7f454
+		fname = strdup(string);
Jiri Skala a7f454
 	}
Jiri Skala a7f454
+	fprintf(stderr, "user delay file: %s\n", fname);
Jiri Skala a7f454
 
Jiri Skala a7f454
 	fd = open(fname, O_RDWR | O_TRUNC | O_CREAT, 0666);
Jiri Skala a7f454
 	if (fd < 0) {
Jiri Skala a7f454
@@ -504,8 +510,8 @@ static int x_get_winid_action(char *titl
Jiri Skala a7f454
 	int ret = 0;
Jiri Skala a7f454
 	char cmd[STR_LEN];
Jiri Skala a7f454
 
Jiri Skala a7f454
-	(void)sprintf(cmd, "bltk_winid -S -t %d -s %d \"%s\" >./winid.tmp",
Jiri Skala a7f454
-		      wait_time, sleep_time, title);
Jiri Skala a7f454
+	(void)sprintf(cmd, "bltk_winid -S -t %d -s %d \"%s\" > %s",
Jiri Skala a7f454
+		      wait_time, sleep_time, title, winid_tmp);
Jiri Skala a7f454
 	ret = system(cmd);
Jiri Skala a7f454
 	if (ret != 0) {
Jiri Skala a7f454
 		(void)fprintf(stderr, "%s failed\n", cmd);
Jiri Skala a7f454
@@ -519,7 +525,7 @@ static int get_winid_action(char *title)
Jiri Skala a7f454
 	int ret = 0;
Jiri Skala a7f454
 	char cmd[STR_LEN];
Jiri Skala a7f454
 
Jiri Skala a7f454
-	(void)sprintf(cmd, "bltk_winid -S \"%s\" >./winid.tmp", title);
Jiri Skala a7f454
+	(void)sprintf(cmd, "%s/bin/bltk_winid -S \"%s\" > %s", getenv("BLTK_ROOT"), title, winid_tmp);
Jiri Skala a7f454
 	ret = system(cmd);
Jiri Skala a7f454
 	if (ret != 0) {
Jiri Skala a7f454
 		(void)fprintf(stderr, "%s failed\n", cmd);
Jiri Skala a7f454
@@ -549,7 +555,7 @@ static int end_winid_action(char *title)
Jiri Skala a7f454
 	int ret = 0;
Jiri Skala a7f454
 	char cmd[STR_LEN];
Jiri Skala a7f454
 
Jiri Skala a7f454
-	(void)sprintf(cmd, "bltk_winid -F \"%s\"", title);
Jiri Skala a7f454
+	(void)sprintf(cmd, "%s/bin/bltk_winid -F \"%s\"", getenv("BLTK_ROOT"), title);
Jiri Skala a7f454
 	ret = system(cmd);
Jiri Skala a7f454
 	if (ret != 0) {
Jiri Skala a7f454
 		(void)fprintf(stderr, "%s failed\n", cmd);
Jiri Skala a7f454
@@ -562,6 +568,18 @@ static int end_winid_action(char *title)
Jiri Skala a7f454
 static pid_t pid_array[1024];
Jiri Skala a7f454
 static int pid_cnt = 0;
Jiri Skala a7f454
 
Jiri Skala a7f454
+void chk_stop_file()
Jiri Skala a7f454
+{
Jiri Skala a7f454
+	int i;
Jiri Skala a7f454
+
Jiri Skala a7f454
+	if (access(stop_name, F_OK) == 0) {
Jiri Skala a7f454
+		for (i = 0; i < pid_cnt; i++) {
Jiri Skala a7f454
+			(void)kill(pid_array[i], SIGTERM);
Jiri Skala a7f454
+		}
Jiri Skala a7f454
+		xse_exit(0);
Jiri Skala a7f454
+	}
Jiri Skala a7f454
+}
Jiri Skala a7f454
+
Jiri Skala a7f454
 static int runcmd_action(char *name, int wait_time, int state)
Jiri Skala a7f454
 {
Jiri Skala a7f454
 	int ret = 0;
Jiri Skala a7f454
@@ -1096,7 +1114,7 @@ static void run_scen1(xse_scen_t * scen1
Jiri Skala a7f454
 			} else {
Jiri Skala a7f454
 				get_winid_action(string);
Jiri Skala a7f454
 			}
Jiri Skala a7f454
-			readf_action("./winid.tmp", count, delay_time);
Jiri Skala a7f454
+			readf_action(winid_tmp, count, delay_time);
Jiri Skala a7f454
 			setwinid_action(string, xchg_buf, delay_time);
Jiri Skala a7f454
 			delay_time = 0;
Jiri Skala a7f454
 			break;
Jiri Skala a7f454
@@ -1189,11 +1207,24 @@ static void run_scen1(xse_scen_t * scen1
Jiri Skala a7f454
 		if (break_flg) {
Jiri Skala a7f454
 			break;
Jiri Skala a7f454
 		}
Jiri Skala a7f454
+		chk_stop_file();
Jiri Skala a7f454
 	}
Jiri Skala a7f454
 }
Jiri Skala a7f454
 
Jiri Skala a7f454
 void init_xse()
Jiri Skala a7f454
 {
Jiri Skala a7f454
+	if (prctl(PR_SET_PDEATHSIG, SIGKILL, 0, 0, 0) != 0)
Jiri Skala a7f454
+	{
Jiri Skala a7f454
+		xse_exit(2);
Jiri Skala a7f454
+	}
Jiri Skala a7f454
+	if (prctl(PR_SET_PDEATHSIG, SIGTERM, 0, 0, 0) != 0)
Jiri Skala a7f454
+	{
Jiri Skala a7f454
+		xse_exit(2);
Jiri Skala a7f454
+	}
Jiri Skala a7f454
+
Jiri Skala a7f454
+	stop_name = getenv("BLTK_STOP_FNAME");
Jiri Skala a7f454
+	
Jiri Skala a7f454
+	snprintf(winid_tmp, sizeof winid_tmp, "%s/%s", getenv("BLTK_HOME"), WINID_FILE);
Jiri Skala a7f454
 	display = XOpenDisplay(NULL);
Jiri Skala a7f454
 	if (display == NULL) {
Jiri Skala a7f454
 		(void)fprintf(stderr, "%s: Cannot open Display\n", progname);
Jiri Skala a7f454
diff -up bltk/wl_developer/Makefile.xse bltk/wl_developer/Makefile
Jiri Skala a7f454
--- bltk/wl_developer/Makefile.xse	2009-04-10 09:14:20.000000000 +0200
Jiri Skala a7f454
+++ bltk/wl_developer/Makefile	2009-07-29 11:14:00.975524925 +0200
Jiri Skala a7f454
@@ -1,6 +1,6 @@
Jiri Skala a7f454
 
Jiri Skala a7f454
 CFLAGS		= -Wall -pedantic -std=c99 -g -O2 -I../include
Jiri Skala a7f454
-LDFLAGS		= -L/usr/X11R6/lib64 -L/usr/X11R6/lib -lX11 -lxse -L../lib
Jiri Skala a7f454
+LDFLAGS		= -L/usr/X11R6/lib64 -L/usr/X11R6/lib -lX11 ../lib/libxse.so.0 -Wl,-rpath,/usr/lib/bltk
Jiri Skala a7f454
 
Jiri Skala a7f454
 BIN		= bin
Jiri Skala a7f454
 
Jiri Skala a7f454
@@ -15,7 +15,7 @@ SHFILES		= bltk_wl_developer_install blt
Jiri Skala a7f454
 SHFILES_SH	= ${SHFILES:=.sh}
Jiri Skala a7f454
 SHTARGETS	= $(SHFILES:%=$(BIN)/%)
Jiri Skala a7f454
 
Jiri Skala a7f454
-EXTERN_DEPS	=  $(HIDERS) ../lib/libxse.so
Jiri Skala a7f454
+EXTERN_DEPS	=  $(HIDERS) ../lib/libxse.so.0
Jiri Skala a7f454
 
Jiri Skala a7f454
 
Jiri Skala a7f454
 all : $(BIN) $(SUBDIRS) $(TARGET) $(SHTARGETS) FORCE
Jiri Skala a7f454
diff -up bltk/wl_game/Makefile.xse bltk/wl_game/Makefile
Jiri Skala a7f454
--- bltk/wl_game/Makefile.xse	2009-04-10 09:14:20.000000000 +0200
Jiri Skala a7f454
+++ bltk/wl_game/Makefile	2009-07-29 11:14:00.978525164 +0200
Jiri Skala a7f454
@@ -1,6 +1,6 @@
Jiri Skala a7f454
 
Jiri Skala a7f454
 CFLAGS		= -Wall -pedantic -std=c99 -g -O2 -I../include
Jiri Skala a7f454
-LDFLAGS		= -L/usr/X11R6/lib64 -L/usr/X11R6/lib -lX11 -lxse -L../lib
Jiri Skala a7f454
+LDFLAGS		= -L/usr/X11R6/lib64 -L/usr/X11R6/lib -lX11 ../lib/libxse.so.0 -Wl,-rpath,/usr/lib/bltk
Jiri Skala a7f454
 
Jiri Skala a7f454
 BIN		= bin
Jiri Skala a7f454
 
Jiri Skala a7f454
@@ -18,7 +18,7 @@ SHTARGETS	= $(SHFILES:%=$(BIN)/%)
Jiri Skala a7f454
 DATAFILES	=
Jiri Skala a7f454
 DATATARGETS	= $(DATAFILES:%=$(BIN)/%)
Jiri Skala a7f454
 
Jiri Skala a7f454
-EXTERN_DEPS	= $(HIDERS) ../lib/libxse.so
Jiri Skala a7f454
+EXTERN_DEPS	= $(HIDERS) ../lib/libxse.so.0
Jiri Skala a7f454
 
Jiri Skala a7f454
 
Jiri Skala a7f454
 all : $(BIN) $(SUBDIRS) $(TARGET) $(TARGET1) $(TARGET2) $(SHTARGETS) $(DATATARGETS)
Jiri Skala a7f454
diff -up bltk/wl_office/Makefile.xse bltk/wl_office/Makefile
Jiri Skala a7f454
--- bltk/wl_office/Makefile.xse	2009-04-10 09:14:20.000000000 +0200
Jiri Skala a7f454
+++ bltk/wl_office/Makefile	2009-07-29 11:14:00.982494753 +0200
Jiri Skala a7f454
@@ -1,6 +1,6 @@
Jiri Skala a7f454
 
Jiri Skala a7f454
 CFLAGS		= -Wall -pedantic -std=c99 -g -O2 -I../include
Jiri Skala a7f454
-LDFLAGS		= -L/usr/X11R6/lib64 -L/usr/X11R6/lib -lX11 -lxse -L../lib
Jiri Skala a7f454
+LDFLAGS		= -L/usr/X11R6/lib64 -L/usr/X11R6/lib -lX11 ../lib/libxse.so.0 -Wl,-rpath,/usr/lib/bltk
Jiri Skala a7f454
 
Jiri Skala a7f454
 BIN		= bin
Jiri Skala a7f454
 
Jiri Skala a7f454
@@ -15,10 +15,10 @@ SHFILES		= bltk_wl_office_install bltk_w
Jiri Skala a7f454
 SHFILES_SH	= ${SHFILES:=.sh}
Jiri Skala a7f454
 SHTARGETS	= $(SHFILES:%=$(BIN)/%)
Jiri Skala a7f454
 
Jiri Skala a7f454
-DATAFILES	= scen_install 
Jiri Skala a7f454
+DATAFILES	= scen_install
Jiri Skala a7f454
 DATATARGETS	= $(DATAFILES:%=$(BIN)/%)
Jiri Skala a7f454
 
Jiri Skala a7f454
-EXTERN_DEPS	= $(HIDERS) ../lib/libxse.so
Jiri Skala a7f454
+EXTERN_DEPS	= $(HIDERS) ../lib/libxse.so.0
Jiri Skala a7f454
 
Jiri Skala a7f454
 
Jiri Skala a7f454
 all : $(BIN) $(SUBDIRS) $(TARGET) $(TARGET1) $(TARGET2) $(SHTARGETS) $(DATATARGETS)
Jiri Skala a7f454
diff -up bltk/wl_reader/Makefile.xse bltk/wl_reader/Makefile
Jiri Skala a7f454
--- bltk/wl_reader/Makefile.xse	2009-04-10 09:14:20.000000000 +0200
Jiri Skala a7f454
+++ bltk/wl_reader/Makefile	2009-07-29 11:14:00.985519159 +0200
Jiri Skala a7f454
@@ -1,6 +1,6 @@
Jiri Skala a7f454
 
Jiri Skala a7f454
 CFLAGS		= -Wall -pedantic -std=c99 -g -O2 -I../include
Jiri Skala a7f454
-LDFLAGS		= -L/usr/X11R6/lib64 -L/usr/X11R6/lib -lX11 -lxse -L ../lib
Jiri Skala a7f454
+LDFLAGS		= -L/usr/X11R6/lib64 -L/usr/X11R6/lib -lX11 ../lib/libxse.so.0 -Wl,-rpath,/usr/lib/bltk
Jiri Skala a7f454
 
Jiri Skala a7f454
 BIN		= bin
Jiri Skala a7f454
 
Jiri Skala a7f454
@@ -17,7 +17,7 @@ SHFILES		= bltk_wl_reader_install bltk_w
Jiri Skala a7f454
 SHFILES_SH	= ${SHFILES:=.sh}
Jiri Skala a7f454
 SHTARGETS	= $(SHFILES:%=$(BIN)/%)
Jiri Skala a7f454
 
Jiri Skala a7f454
-EXTERN_DEPS	= $(HIDERS) ../lib/libxse.so
Jiri Skala a7f454
+EXTERN_DEPS	= $(HIDERS) ../lib/libxse.so.0
Jiri Skala a7f454
 
Jiri Skala a7f454
 
Jiri Skala a7f454
 all : $(BIN) $(SUBDIRS) $(TARGETS) $(SHTARGETS) FORCE