1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-20 04:48:06 +01:00

fixed Restart() function, and crashing dialog call to this function

This commit is contained in:
dan
1999-04-17 20:25:07 +00:00
parent afcbe06363
commit 8bdc78fcd1
4 changed files with 18 additions and 28 deletions

View File

@@ -75,7 +75,6 @@ typedef struct {
static void resizeWindow(WMWidget *, unsigned, unsigned);
static void moveWindow(WMWidget *, int, int);
struct W_ViewProcedureTable _WindowViewProcedures = {
NULL,

View File

@@ -37,7 +37,7 @@ void RestoreDesktop(WScreen *scr);
void Exit(int status);
void Restart(char *manager);
void Restart(char *manager, Bool abortOnFailure);
void SetupEnvironment(WScreen *scr);

View File

@@ -58,9 +58,6 @@
Display *dpy;
char **Arguments;
int ArgCount;
char *ProgName;
unsigned int ValidModMask = 0xff;
@@ -152,6 +149,10 @@ int wVisualID = -1;
static char *DisplayName = NULL;
static char **Arguments;
static int ArgCount;
extern void EventLoop();
extern void StartUp();
@@ -169,7 +170,7 @@ Exit(int status)
}
void
Restart(char *manager)
Restart(char *manager, Bool abortOnFailure)
{
char *prog=NULL;
char *argv[MAX_RESTART_ARGS];
@@ -191,16 +192,15 @@ Restart(char *manager)
XCloseDisplay(dpy);
dpy = NULL;
}
if (!prog)
execvp(Arguments[0], Arguments);
else {
execvp(prog, argv);
/* fallback */
execv(Arguments[0], Arguments);
if (!prog) {
execvp(Arguments[0], Arguments);
wfatal(_("failed to restart Window Maker."));
} else {
execvp(prog, argv);
wsyserror(_("could not exec %s"), prog);
}
wsyserror(_("could not exec window manager"));
wfatal(_("Restart failed!!!"));
exit(-1);
if (abortOnFailure)
exit(-1);
}

View File

@@ -78,8 +78,6 @@ extern const char * const sys_siglist[];
/****** Global Variables ******/
extern char **Arguments;
extern WPreferences wPreferences;
extern WDDomain *WDWindowMaker;
@@ -336,22 +334,15 @@ handleSig(int sig)
if (crashAction == WMRestart) {
/* we try to restart Window Maker */
wwarning(_("trying to restart Window Maker..."));
execvp(Arguments[0], Arguments);
wwarning(_("we failed to restart Window Maker."));
Restart(NULL, False);
/* fallback to alternate window manager then */
}
wwarning(_("trying to start alternate window manager..."));
argv[0] = FALLBACK_WINDOWMANAGER;
execvp(FALLBACK_WINDOWMANAGER, argv);
argv[0] = "fvwm";
execvp("fvwm", argv);
argv[0] = "twm";
execvp("twm", argv);
Restart(FALLBACK_WINDOWMANAGER, False);
Restart("fvwm", False);
Restart("twm", False);
wfatal(_("failed to start alternate window manager. Aborting."));
#else
wfatal(_("a fatal error has occured, probably due to a bug. "