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:
@@ -75,7 +75,6 @@ typedef struct {
|
|||||||
|
|
||||||
|
|
||||||
static void resizeWindow(WMWidget *, unsigned, unsigned);
|
static void resizeWindow(WMWidget *, unsigned, unsigned);
|
||||||
static void moveWindow(WMWidget *, int, int);
|
|
||||||
|
|
||||||
struct W_ViewProcedureTable _WindowViewProcedures = {
|
struct W_ViewProcedureTable _WindowViewProcedures = {
|
||||||
NULL,
|
NULL,
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ void RestoreDesktop(WScreen *scr);
|
|||||||
|
|
||||||
void Exit(int status);
|
void Exit(int status);
|
||||||
|
|
||||||
void Restart(char *manager);
|
void Restart(char *manager, Bool abortOnFailure);
|
||||||
|
|
||||||
void SetupEnvironment(WScreen *scr);
|
void SetupEnvironment(WScreen *scr);
|
||||||
|
|
||||||
|
|||||||
26
src/main.c
26
src/main.c
@@ -58,9 +58,6 @@
|
|||||||
|
|
||||||
Display *dpy;
|
Display *dpy;
|
||||||
|
|
||||||
char **Arguments;
|
|
||||||
int ArgCount;
|
|
||||||
|
|
||||||
char *ProgName;
|
char *ProgName;
|
||||||
|
|
||||||
unsigned int ValidModMask = 0xff;
|
unsigned int ValidModMask = 0xff;
|
||||||
@@ -152,6 +149,10 @@ int wVisualID = -1;
|
|||||||
|
|
||||||
static char *DisplayName = NULL;
|
static char *DisplayName = NULL;
|
||||||
|
|
||||||
|
static char **Arguments;
|
||||||
|
|
||||||
|
static int ArgCount;
|
||||||
|
|
||||||
extern void EventLoop();
|
extern void EventLoop();
|
||||||
extern void StartUp();
|
extern void StartUp();
|
||||||
|
|
||||||
@@ -169,7 +170,7 @@ Exit(int status)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Restart(char *manager)
|
Restart(char *manager, Bool abortOnFailure)
|
||||||
{
|
{
|
||||||
char *prog=NULL;
|
char *prog=NULL;
|
||||||
char *argv[MAX_RESTART_ARGS];
|
char *argv[MAX_RESTART_ARGS];
|
||||||
@@ -191,16 +192,15 @@ Restart(char *manager)
|
|||||||
XCloseDisplay(dpy);
|
XCloseDisplay(dpy);
|
||||||
dpy = NULL;
|
dpy = NULL;
|
||||||
}
|
}
|
||||||
if (!prog)
|
if (!prog) {
|
||||||
execvp(Arguments[0], Arguments);
|
execvp(Arguments[0], Arguments);
|
||||||
else {
|
wfatal(_("failed to restart Window Maker."));
|
||||||
execvp(prog, argv);
|
} else {
|
||||||
/* fallback */
|
execvp(prog, argv);
|
||||||
execv(Arguments[0], Arguments);
|
wsyserror(_("could not exec %s"), prog);
|
||||||
}
|
}
|
||||||
wsyserror(_("could not exec window manager"));
|
if (abortOnFailure)
|
||||||
wfatal(_("Restart failed!!!"));
|
exit(-1);
|
||||||
exit(-1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -78,8 +78,6 @@ extern const char * const sys_siglist[];
|
|||||||
|
|
||||||
/****** Global Variables ******/
|
/****** Global Variables ******/
|
||||||
|
|
||||||
extern char **Arguments;
|
|
||||||
|
|
||||||
extern WPreferences wPreferences;
|
extern WPreferences wPreferences;
|
||||||
|
|
||||||
extern WDDomain *WDWindowMaker;
|
extern WDDomain *WDWindowMaker;
|
||||||
@@ -336,22 +334,15 @@ handleSig(int sig)
|
|||||||
if (crashAction == WMRestart) {
|
if (crashAction == WMRestart) {
|
||||||
/* we try to restart Window Maker */
|
/* we try to restart Window Maker */
|
||||||
wwarning(_("trying to restart Window Maker..."));
|
wwarning(_("trying to restart Window Maker..."));
|
||||||
execvp(Arguments[0], Arguments);
|
Restart(NULL, False);
|
||||||
wwarning(_("we failed to restart Window Maker."));
|
|
||||||
/* fallback to alternate window manager then */
|
/* fallback to alternate window manager then */
|
||||||
}
|
}
|
||||||
|
|
||||||
wwarning(_("trying to start alternate window manager..."));
|
wwarning(_("trying to start alternate window manager..."));
|
||||||
|
|
||||||
argv[0] = FALLBACK_WINDOWMANAGER;
|
Restart(FALLBACK_WINDOWMANAGER, False);
|
||||||
execvp(FALLBACK_WINDOWMANAGER, argv);
|
Restart("fvwm", False);
|
||||||
|
Restart("twm", False);
|
||||||
argv[0] = "fvwm";
|
|
||||||
execvp("fvwm", argv);
|
|
||||||
|
|
||||||
argv[0] = "twm";
|
|
||||||
execvp("twm", argv);
|
|
||||||
|
|
||||||
wfatal(_("failed to start alternate window manager. Aborting."));
|
wfatal(_("failed to start alternate window manager. Aborting."));
|
||||||
#else
|
#else
|
||||||
wfatal(_("a fatal error has occured, probably due to a bug. "
|
wfatal(_("a fatal error has occured, probably due to a bug. "
|
||||||
|
|||||||
Reference in New Issue
Block a user